Xamrin开发安卓笔记(二)

时间:2022-05-22 08:52:36

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/ 
本文版权归作者和博客园共有,禁止转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

Xamrin开发安卓笔记(二)的更多相关文章

  1. Xamrin开发安卓笔记(三)

    http://www.cnblogs.com/minCS/p/4118170.html Xamrin开发安卓笔记(三)   安装片 Xamrin开发安卓笔记(一) Xamrin开发安卓笔记(二) 这次 ...

  2. Xamrin开发安卓笔记(一)

    http://www.cnblogs.com/minCS/p/4108133.html Xamrin开发安卓笔记(一)   安装篇 环境虽然搭建的不稳定,不过还是可以开发的,又加了两个环境变量不知道有 ...

  3. 《MFC游戏开发》笔记二 建立工程、调整窗口

    本系列文章由七十一雾央编写,转载请注明出处.  http://blog.csdn.net/u011371356/article/details/9300383 作者:七十一雾央 新浪微博:http:/ ...

  4. 软件开发学习笔记 <二>软件开发模型、Up、Rup、敏捷Up

    软件开发过程(process) 是一个将用户需求转化为软件系统所需要的活动的集合. 软件生命周期(SDLC,Software Devlopment Life Cycle) 软件从孕育.诞生.成长.成熟 ...

  5. python-django开发学习笔记二

    1.简述 1.1 开发环境 该笔记所基于的开发环境为:windows8.python2.7.5.psycopg2-2.4.2.django1.5.4.pyCharm-2.7.3.以上所描述的软件.插件 ...

  6. 基于.NET的CAD二次开发学习笔记二:AutoCAD .NET中的对象

    1.CAD对象:一个CAD文件(DWG文件)即对应一个数据库,数据库中的所有组成部分,看的见(包括点.多段线.文字.圆等)和看不见(图层.线型.颜色等)的都是对象,数据库本身也是一个对象. 直线.圆弧 ...

  7. ECharts实例开发学习笔记二——时间轴

    记录一下ECharts时间轴的使用,首先是照着官方的示例做一遍,在这里不要忘了引入timelineOption.js,后面介绍如何动态创建时间轴的记录数,即根据需求可伸缩显示有多少天或者年月等轴标记数 ...

  8. 《MFC游戏开发》笔记八 游戏特效的实现(二):粒子系统

    本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9360993 作者:七十一雾央 新浪微博:http:// ...

  9. [Firefly引擎][学习笔记二][已完结]卡牌游戏开发模型的设计

    源地址:http://bbs.9miao.com/thread-44603-1-1.html 在此补充一下Socket的验证机制:socket登陆验证.会采用session会话超时的机制做心跳接口验证 ...

随机推荐

  1. 【转】Python 日期和时间

    本文转自:http://www.runoob.com/python/python-date-time.html Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能. Pytho ...

  2. bzoj1934 bzoj2768

    最小割的经典模型,体现出最小割的基本定义,把两个集合划分的最小代价 把一开始同意的人连源点,不同意的连汇点,有关系的人之间连边,流量都为1 不难发现,割两点(人)间的边就相当于朋友之间发生冲突 割到连 ...

  3. 基于ThinkPHP+AJAX的省市区三级联动

    练习,就当练习. 省市区三级联动,样式如下图所示: 1,导入两个js文件并且导入数据库文件. 两个js文件分别是jquery-2.1.4.min.js和jquery-1.js,数据库文件,见附件. 2 ...

  4. 调停者(Mediator)模式

    调停者模式是对象的行为模式.调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用.从而使它们可以较松散地耦合.当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些 ...

  5. git回滚命令reset、revert的区别

    ##使用git,总有一天会遇到下面的问题: (1)改完代码匆忙提交,上线发现有问题,怎么办? 赶紧回滚. (2)改完代码测试也没有问题,但是上线发现你的修改影响了之前运行正常的代码报错,必须回滚. 所 ...

  6. 安卓开发环境配置及HelloWorld

    一:JAVA 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 1.1 ...

  7. create alter rename desc select update delete insert

    conn scott/root;create table student (id number(3), name varchar2(10), sex char(2), sno number(3));a ...

  8. jar文件的Eclipse插件安装

    以[zigen.plugin.db_1.2.2.v20101009.jar]为例. (1)在[\eclipse\dropins]目录下新建一个目录,例如[myplugin] (2)上面新建的n目录下建 ...

  9. Git入门学习总结

    用了两天时间看完廖雪峰老师的git教程(http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b0 ...

  10. Linuxx学习-特殊文件与进程

    具有 SUID/SGID 权限的指令执行状态 SUID 的权限其实与进程的相关性非常的大!为什么呢?先来看看 SUID 的程序是如何被一般用户 执行,且具有什么特色呢? SUID 权限仅对二进制程序( ...