包含标签 Xamarin.Android 的文章

Xamarin.Android中如何根据给定的文件名获取文件

这里我们通过C#的反射机制来实现这个功能,以获取Resource/drawable文件夹下的图片为例: public int getResourceByReflect(String imageName) { var drawable = typeof(Resource.Drawable); int r_id = 0; try { var field = drawable.GetField(imageName); r_id = (int)field.GetValue(field.Name); } catch (Exception e) { } return r_id; } 使用方法: var id = getResourceByReflect(iconItem.Name); if (id == 0) return; var picture = BitmapFactory.DecodeResource(Context.Resources, id); 需要指出的是,在原生技术中,也可以通过反射实现这个功能,但其反射的目标对象是J……

阅读全文

Xamarin.Android开发中一些不可不知的知识点

Xamarin.Android所提供的接口基本上是对原生接口的再封装,但Xamarin团队在封装时采用了C#风格,这会导致某些API的用法无法完全和原生方法对照起来。除此之外,由于Xamarin.Android并不是将C#直接翻译成JVM语言,而是引入了Mono运行时,通过ACW……

阅读全文

Xamarin.Android下启动邮件发送的方法

在Android的原生平台上,启动邮件发送的方法如下: Intent i = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto", "443570993@qq.com", null)); i.putExtra(Intent.EXTRA_SUBJECT, "致岁寒输入法作者"); i.putExtra(Intent.EXTRA_TEXT, "请写下您的建议或者遇到的问题..."); startActivity(Intent.createChooser(i, "反馈建议")); 在Xamarin.Android下,与上面对应的实现为: Intent i = new Intent(Intent.ActionSendto, Android.Net.Uri.FromParts("mailto", "443570993@qq.com", null));……

阅读全文

Xamarin下获得各平台应用所在文件夹路径的方法

Android: // <AppHome>/files string path = Environment.GetFolderPath(Environment.SpecialFolder.Personal); iOS: // <AppHome>/Documents string docFolder = Environment.GetFolderPath(Environment.SpecialFolder.Personal); // to meet Apple’s iCloud terms, content that is not generated by the user // should be placed in the /Library folder or a subdirectory inside it string libFolder = System.IO.Path.Combine(docFolder,"..", "Library"); WindowPhone: // <AppHome>\local string path = Windows.Storage.ApplicationData.Current.LocalFolder.Path;……

阅读全文

Xamarin.Form跨平台访问系统图片库

这篇文章主要介绍如何在Xamarin.Form实现跨平台的调用系统图片库。 由于系统图片库是一个平台相关性比较大的系统工具,在Xamarin.Form上没有现成的统一API可用,所以我们只能利用DependencyService 来自己实现一个对系统图片库的调用。 下面,我们就一步一步……

阅读全文

使用C#实现byte[]转UIImage、Image

不啰嗦,直接上代码 byte[]转UIImage 在Xamarin.iOS项目中用。 public UIImage bytesToUIImage(byte[] data){ if (data == null) return null; GCHandle hObject = GCHandle.Alloc(data, GCHandleType.Pinned); IntPtr pObject = hObject.AddrOfPinnedObject(); NSData nsdata = NSData.FromBytes(pObject, (System.nuint)data.Length); UIImage image = UIImage.LoadFromData(nsdata); if (hObject.IsAllocated) hObject.Free(); return image; } catch (Exception e) { } return null; } byte[]转Image 在Xamarin.Form中用。 public Image bytesToImage(byte[] data){ var image = new Image(); image.Source = ImageSource.FromStream(() => new MemoryStream(data)); return image; } Stream转byte[……

阅读全文