Your SlideShare is downloading. ×
10 Must-Use Components for Your Mobile Apps, James Clancey
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

10 Must-Use Components for Your Mobile Apps, James Clancey

1,361
views

Published on

Published in: Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,361
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
29
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. James ClanceySenior Mobile DeveloperXamarinclancey@xamarin.comMust-use AppComponents@jtclancey
  • 2. Component Store with IDE Integration
  • 3. Radial Progress• Stylish animated progress view
  • 4. Radial Progress• Stylish animated progress view• Same API on iOS, Android
  • 5. Radial Progress• Stylish animated progress view• Same API on iOS, Android• Perfect for background tasks
  • 6. 0102030405060708091011121314Radial Progress Sample Usageusing RadialProgress;public override void ViewDidLoad(){base.ViewDidLoad();! !var progressView = new RadialProgressView {Center = new PointF (View.Center.X, View.Center.Y - 100)};View.AddSubview (progressView);// Update the progressprogressView.Value = 0.46f;}
  • 7. Json.NET• LINQ-to-JSON for custom JSON parsing and output
  • 8. Json.NET• LINQ-to-JSON for custom JSON parsing and output• Faster than .NETs built-in JSON serializers
  • 9. Json.NET• LINQ-to-JSON for custom JSON parsing and output• Faster than .NETs built-in JSON serializers• Also converts JSON to and from XML
  • 10. Json.net01020304050607080910111213141516public class Person{public string Name { get; set; }public DateTime Birthday { get; set; }}public Person ParsePerson (string jsonString){var person = JsonConvert.DeserializeObject<Person>(jsonString);return person;}
  • 11. ZXing.Net.Mobile is a C#/.NET Barcode Scanning LibraryZXing.Net.Mobile
  • 12. ZXing.Net.Mobile• Open Source• Simple API• Cross platformiOSAndroidWindows Phone• Custom Overlays
  • 13. 01020304050607080910111213141516ZXing.Net.Mobilepublic void Scan (){! var scanner = new ZXing.Mobile.MobileBarcodeScanner ();! scanner.Scan ().ContinueWith (t => {! ! if (t.Result != null)! ! ! Console.WriteLine ("Scanned Barcode: " + t.Result.Text);! } );!}
  • 14. Dropbox• API handles all the caching, retrying, and file changenotifications.
  • 15. Dropbox• API handles all the caching, retrying, and file changenotifications.• Writes are local so changes are immediate. The Sync API syncsto Dropbox behind the scenes.
  • 16. Dropbox• API handles all the caching, retrying, and file changenotifications.• Writes are local so changes are immediate. The Sync API syncsto Dropbox behind the scenes.• Your app works great even when offline and automatically syncswhen its back online.
  • 17. 01020304050607080910111213141516Dropbox Syncvoid ListFiles (string path){! ! DBError error;! ! var contents = DBFilesystem.SharedFilesystem.ListFolder (path, out error);! ! foreach (DBFileInfo info in contents) {! ! ! Console.WriteLine (info.Path);! ! }}
  • 18. • By Zetetic LLC• 256-bit AES encryption of SQLite database filesSQLCipher
  • 19. 01020304050607080910111213141516SQLCipherpublic class Model{! [PrimaryKey,AutoIncrement]! public int Id { get; set; }! public string Content { get; set; }}using(var conn = new SQLiteConnection (FilePath, Password)){! var model = conn.Table<Model>().Where(x=> x.Id = 0)}
  • 20. 01020304050607080910111213141516SQLCipherpublic void SqlCipherDemo (){! using (var connection = newMono.Data.Sqlcipher.SqliteConnection(connectionString)) {! ! connection.SetPassword ("secretPassword");! ! connection.Open ();! ! using (var command = connection.CreateCommand()) {! ! ! var query = "select * from t1";! ! ! command.CommandText = query;! ! ! var reader = command.ExecuteReader ();! ! ! while (reader.Read()) {! ! ! ! //Read Values! ! ! }! ! }! ! connection.Close ();! }}
  • 21. Mobile Services by Windows Azure• By Microso"• Easily store data in the cloud• Managed C#• Cross PlatformiOSAndroidWindows• Async
  • 22. 01020304050607080910111213141516Mobile Services by Windows Azurepublic class Item{! ! public int Id { get; set; }! ! public string Text { get; set; }}Item item = new Item { Text = "Awesome item" };! ! ! App.MobileService.GetTable<Item> ().InsertAsync (item)! ! ! ! .ContinueWith (t => {! ! ! /* success or failure */} );
  • 23. by ShinobiBlazing fast charts!ShinobiCharts
  • 24. Xamarin.Social• Cross PlatformiOSAndroid• Share Text or Images• Twitter• Facebook• Flickr• App.net• Pinterest
  • 25. 01020304050607080910111213141516Xamarin.Social// 1. Create the servicevar facebook = new FacebookService {! ClientId = "<App ID from developers.facebook.com/apps>",! RedirectUrl = new System.Uri ("<Redirect URL fromdevelopers.facebook.com/apps>")};// 2. Create an item to sharevar item = new Item { Text = "Xamarin.Social is the bomb.com." };item.Links.Add (new Uri ("http://github.com/xamarin/xamarin.social"));// 3. Present the UI on iOSvar shareController = facebook.GetShareUI (item, result => {! // result lets you know if the user shared the item or canceled! DismissViewController (true, null);});PresentViewController (shareController, true, null);
  • 26. Signature Pad• Very simple API• Save/Load Vectors• Export Image
  • 27. 01020304050607080910111213141516Signature Padvar signature = new SignaturePadView (View.Frame);View.AddSubview (signature);//Get the signaturevar image = signature.GetImage ();ViewController (shareController, true, null);
  • 28. Xamarin.Mobile• Cross platformiOSAndroidWindows• GeoLocation• Contacts• Media Picker
  • 29. 01020304050607080910111213141516Xamarin.Mobilevar locator = new Geolocator { DesiredAccuracy = 50 };locator.GetPositionAsync (timeout: 10000).ContinueWith (t => {! Console.WriteLine ("Position Status: {0}", t.Result.Timestamp);! Console.WriteLine ("Position Latitude: {0}", t.Result.Latitude);! Console.WriteLine ("Position Longitude: {0}", t.Result.Longitude);}, TaskScheduler.FromCurrentSynchronizationContext ());
  • 30. Q&A
  • 31. DEMO
  • 32. THANK YOUJames Clanceyclancey@xamarin.com@jtclancey