zoukankan      html  css  js  c++  java
  • Xamrin开发安卓笔记(二)

    http://www.cnblogs.com/minCS/p/4112617.html

    Xamrin开发安卓笔记(二)

     

    昨天调理一天AAPT.EXE 被推出的问题(错误代码 error MSB6006: "aapt.exe" exited with code -1073741819),纠结一天到底是什么原因,寝食难安,后来想通了可能是安卓模拟器的原因。今早换了一个安卓SDK,到现在没出现AAPT的错误。

    并且可以可视化布局(之前可视化布局很丑陋)。然后接着写,暂时抛弃vs2015,因为2015的BUG直接影响我编写的感觉,所以先用vs2013 update4继续写。

    首先解决的是真机调试的问题,之前没搞过安卓,不知道这么调试,其实超级简单。插上安卓机器,开发者模式的USB调试选项打开,找个什么手机管家之类的东西,把驱动安装上(有的手机型号不自动安装驱动,导致能识别他是个移动设备但是无法让VS认识他,所以最好找个什么管家之类的东西把驱动安装上)。

    首先写的是跳转传值的事情,这个属于常用功能。布局就不多说了,就是一个按钮,拖进来改个名字。改个ID,生成(为了避免CS文件找不到这个ID,这个事情以后不在说了)

    1 btnTo.Click += delegate
    2             {
    3                 //要跳转的地址
    4                 var second = new Intent(this, typeof(SecondActivity));
    5                 //带过去的参数(key,value)
    6                 second.PutExtra("tel", txtPhone.Text);
    7                //执行跳转
    8                 StartActivity(second);
    9             };

    带参数跳转到另一个页面。另一个页面获取参数

     1 Intent.GetStringExtra("tel"); 

    通过KEY索检数据。我感觉跳转很简单。。

    接下来说通知事件,通知事件有好几种实现方式,不过我写完之后VS告诉我使用的方法已经过时。这让我很伤心。

    先说一下普通的通知吧,安卓的通知是可以闪灯,响声,震动。这些通过通知的属性来实现。

    通知调用 Notification 类来实现。看下具体代码

     1   btnPush.Click += delegate {
     2                 Notification notify = new Notification(Resource.Drawable.Icon, "你有新的短消息");
               //响声,震动,LED闪灯需要调用这个属性 3 notify.Defaults = NotificationDefaults.All; 4 //注意RingtoneManager这个需要引用 Android.Media;获取系统声音 5 Android.Net.Uri uri = RingtoneManager.GetDefaultUri(RingtoneType.Notification); 6 notify.Sound = uri;//铃声路径 7 //震动方式数组形式,{震动时间,间隔时间,震动时间} 8 notify.Vibrate = new long[] { 1000,300,1000}; 9 //Color静态类需要引用这个 Android.Graphics 10 //LED等是自动循环的不用像震动那样设置循环间隔 11 notify.LedARGB = Color.Green; 12 notify.LedOffMS = 1000;//显示时间 13 notify.LedOnMS = 1000;//关闭时间 14 notify.Flags = NotificationFlags.ShowLights | notify.Flags; 15 var pIntent = PendingIntent.GetActivity(this, 0, 16 new Intent(this, typeof(SecondActivity)), PendingIntentFlags.UpdateCurrent); 17 notify.SetLatestEventInfo(this, "通知头", "通知内容", pIntent); 18 Mgr.Notify(0, notify);//通知ID和通知 19 };

    据说这个是2.0时代的代码,很古老。

    Mgr的初始化写法是

    var Mgr = (NotificationManager)GetSystemService(NotificationService);

    当然你可以不实用弱变量,随意咯。

    这里重点说一下这句话

    var pIntent = PendingIntent.GetActivity(this, 0,new Intent(this, typeof(SecondActivity)), PendingIntentFlags.UpdateCurrent);

    索检一个新的活动,第一个参数是上下文(貌似所有关于上下文的时候都是this)第二个参数巴拉巴拉说一大堆结果括号里面说暂时没啥用,但是你必须写。第三是点击通知启动哪个活动页面,第四个是发送标志。

    这句话目的是当用户点击通知的时候执行那个页面。不写不行,因为通知必须指定到某个地方去。

    最后执行通知。

    另一个写法据说是3.0的写法。如下

     1 btnBuilder.Click += delegate
     2             {
     3                 var pIntent = PendingIntent.GetActivity(this, 0, new Intent(this, typeof(SecondActivity)), PendingIntentFlags.UpdateCurrent);
     4                 var notify = new Notification.Builder(this)
     5                     .SetTicker("你有新的短消息")
     6                     .SetSmallIcon(Resource.Drawable.Icon)
     7                     .SetContentTitle("通知头")
     8                     .SetContentText("通知内容")
     9                     .SetContentInfo("右下角");
    10                 Mgr.Notify(0, notify.Notification);//通知ID重复则不会被取消貌似重复的话会变成另一个ID
    11             };

    我欣赏3.0的写法。简约而不简单。所有的东西都可以靠 点来完成,而且参数属性比2.0写法还要多。这个写法也可以写上震动,闪灯,声音,可以自己看看哪个是。

    今天先更新这么多。下一次更新估计就开始系统的学习一些东西了。

    总结一下这几天的体验,安装方面尽量找靠谱的模拟器,我就在模拟器上吃亏,Xamrin版本尽量最新。

    代码执行风格类似MVC。

    所有事件都是先 实例化,在去修改他的各种属性,最后执行。而不像以前写web那样,页面画一画CS代码直接写执行。几乎每个东西都需要去做实例化。

    var变量和强类型,自己把握用哪个,我个人觉得var其实不错。

    就这样吧。接下来会继续更新的。

    如果有哪里描述不清楚或者错误,请指出,我会马上更改的,毕竟我也是第一次用这个东西。

    转载请注明出处。


    作者:小胖李 
    出处:http://www.cnblogs.com/minCS/ 
    本文版权归作者和博客园共有,禁止转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    软件测试中桩模块与驱动模块的概念与区别(转载),打桩
    DataFactory使用和注意,排列组合
    SCWS中文分词,功能函数实例应用
    按指定长度截取中英文混合字符串
    CSS截取中英文混合字符串长度
    使DIV相对窗口大小左右拖动始终水平居中
    浮动5-常用列表显示(案例)
    多选项卡切换原理
    使当前对象相对于上层DIV 水平、垂直居中定位
    使图片相对于上层DIV始终水平、垂直都居中
  • 原文地址:https://www.cnblogs.com/carl2380/p/4918304.html
Copyright © 2011-2022 走看看