Spoons was designed around the request from a close friend of mine who suffers chronic pain. In a way, this is very much in the DNA of Valley Software, as we focus on people’s mental and physical wellbeing along with creative expression.
They had found the Spoons method of managing pain in hindsight, but hadn’t been able to apply it as a plan for days ahead or as a recording system to work with their medical professionals.
So we worked together to make Spoons as fast, simple and effective as possible, knowing that in these cases all energy is precious.
As with all things health related; privacy is a big concern. So keeping you, the customer, at heart; all data is kept on your device (not cloud) and we made it paid (one off purchase) to support a 100% advertising and marketing free experience.
We’d love your Feedback on Spoons, which can be submitted at our Feedback Page.
With your feedback we can prioritise features and enhancements for version 2 of this already popular app.
For those interested in the technical backend of things; Spoons is made with Xamarin Forms in C# with a local SQLite Database.
I’ve been tinkering in Xamarin, to allow my development to more easily target multiple mobile platforms.
I’ve made a start on two apps, and I just hit a little wall that was easily fixed but I thought was worth sharing:
The Xamarin tutorials show navigation as being done with a “Push” like this:
await Navigation.PushAsync (newPage2Xaml ());
Which is great, except it doesn’t work out of the box.
The issue is for this to function, you need your app to be utilizing a NavigationPage element. A Navigation page is a page which holds other pages and navigation… I suppose (very) roughly like a Frame in UWP.
But the default templates don’t include one. So the easy way to change it is to go to your App.xaml.cs and change the constructor from opening a regular page like this:
MainPage = new MyAppName.Views.MainView();
to this creating a NavigationPage and then “Push”-ing to the start view**:
var p = new NavigationPage();
MainPage = p;
Now your whole application exists within the NavigationPage element and navigation should work as intended.
** Yes the var is not required, however this is a logical layout to show the example.
I needed this week, a particular kind of colour picker. I couldn’t find one so I made one.
I tried using a gradient background, but was unable to find a way to pick the tapped colour out of it, even though I could get the POINT co-ordinate.
Instead, I had to do it like this.
It isn’t a custom control, just a usercontrol so I can re-use it.
It’s a Image of the gradient, and in the background it holds the original image as a WriteableBitmapEX.
On the right is a grid with the background set to the colour selected.
On the Tap event I got the position of the tap along with the width of the visible image control (as it could stretch with the users screen).
Then I bilinear resize the background image to match the visible image and grab the pixel from the tap events position. Push it back into the property and ta-da!
It’s now getting some further work (stop the image from resampling resampling if the image hasn’t resized (speed and avoid loss of quality) and it would be great if it set the colour while holding so you could drag a finger/cursor and see the color change without lifting). But this first iteration was interesting so I wanted to share.