Xamrin开发安卓笔记(一)
http://www.cnblogs.com/minCS/p/4108133.html
Xamrin开发安卓笔记(一)
环境虽然搭建的不稳定,不过还是可以开发的,又加了两个环境变量不知道有没有效果。待测。
加的两个环境变量是
① 添加环境变量 ANDROID_SDK_HOME:
D:\Android\
② 在path环境变量下追加路径下追加路径:
D:\Android\platform-tools;D:\Android\tools;
修改了一下CPU的虚拟技术
整体来说用c#写安卓的代码挺有意思。代码风格和写法跟用java写的基本类似,只不过有一些方法名不同而已。因为之前没写过安卓程序也没怎么开发过java程序,所以有错误的地方请指出。
SetContentView (Resource.Layout.Main);
默认程序上来第一句话就是这个,我英文又不好,所以理解是大概意思是获取布局的资源文件。
在这里有个事情需要注意一下,如果新拖了一个控件,但是在CS代码页面获取不到,可以尝试从新生成整个项目,这样就能带过来了。如果没带过来硬写的话可能会提示error,所以需要注意一下。
然后就是在页面上拖控件随便拖几个。
我拖了几个

分别是TextView,EditText,Button
因为我之前是一直在做web开发所以解释偏向webform
TextView类似Label
EditText类似Text
Button类似Button
我的命名规则基本都是在使用web的。如果谁知道这个命名规则可以告诉我下哈~
下面说一下控件的一些注意事项,

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:minWidth="25px"
android:minHeight="25px">
<TextView
android:text="小李"
android:layout_width="match_parent"
android:layout_height="25.0dp"
android:id="@+id/textView1" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/txtPhone"
android:text="10086"
android:layout_marginTop="30.0dp" />
<Button
android:text="通话"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnPhone"
android:textSize="25px" />
<Button
android:text="跳转"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/btnTo" />
</LinearLayout>

大小都是用像素表示,对齐方式都是用dp表示。dp可以是float类型。
ID命名都是@+id/youName。
VS的可视化编辑可以让我们在属性上把他们都给设置上。(VS2015 BUG 设置字体大小可能会在可视化页面失效,不知道为什么,运行起来没问题)如果之前学过安卓开发请无视这段。
Button btnPhone = FindViewById<Button>(Resource.Id.btnPhone);
EditText txtPhone = FindViewById<EditText>(Resource.Id.txtPhone);
通过视图的ID查找这个控件,这样就可以找到这个控件并且操作这个控件,c#这边可以使用两种方式来给控件添加事件。

btnPhone.Click += delegate{};
btnPhone.Click += BtnPhone_Click;
private void BtnPhone_Click(object sender, EventArgs e)
{
}

自带的hello world是使用第一种委托方式我感觉第一种简单所以我也那么些,第二种是写完+=按两下tab生成出来的。
接下来就可以在委托或者方法里面写自己的代码进行功能操作了。我做了个打电话的小demo

btnPhone.Click += delegate
{
//创建 是否类型提示框
var callDialog = new AlertDialog.Builder(this);
//提示框信息
callDialog.SetMessage("是否开始通话?");
//确定按钮的文字和事件
callDialog.SetNeutralButton("通话", delegate
{
//创建打电话的事件
var call = new Intent(Intent.ActionCall);
//要打给的电话号是多少
call.SetData(Android.Net.Uri.Parse("tel:" + txtPhone.Text));
//执行这个事件
StartActivity(call);
});
//取消按钮的文字和事件,如果将下面的事件注视掉,则变成一个普通的 消息框,只有确定按钮
callDialog.SetNegativeButton("取消", delegate { });
//显示出来。
callDialog.Show();
};

代码执行的方式从上到下,那么开始就创建了一个提示框中间部分我们对我们的提示框做了一些操作,最后把这个提示框显示出来。感觉这种写法类似于cs的窗体写法但是又不太像,不过理解起来很容易。
这时候就可以运行了,不过在运行之前做几个设置。
因为需要打电话所以需要调用一个接口(?)

还需要设置一下最小的可执行的安卓版本

个人建议最好设置成模拟器的版本号。
这样就能打电话了。
现更新到这,跳转功能下次在说。
作者:小胖李
出处:http://www.cnblogs.com/minCS/
本文版权归作者和博客园共有,禁止转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
Xamrin开发安卓笔记(一)的更多相关文章
- Xamrin开发安卓笔记(三)
http://www.cnblogs.com/minCS/p/4118170.html Xamrin开发安卓笔记(三) 安装片 Xamrin开发安卓笔记(一) Xamrin开发安卓笔记(二) 这次 ...
- Xamrin开发安卓笔记(二)
http://www.cnblogs.com/minCS/p/4112617.html Xamrin开发安卓笔记(二) 安装篇 Xamrin开发安卓笔记(一) 昨天调理一天AAPT.EXE 被推出 ...
- C#开发安卓自学笔记1
今天开始研究了下C#开发安卓,刚开始什么都不懂,学过安卓的同学们也是用Java开发的,虽然两者开发差别不大,但是还是有差别的 // Set our view from the "main&q ...
- 使用VS2017开发安卓app(1)环境搭建
本人新手,边学习边写笔记,有错误不足之处,望各位博友指正~ 想要用vs开发安卓app,需要在安装时勾选 Xamarin是一个跨平台开发框架.在这一框架内,开发iOS.Android.Windows P ...
- 【前端】移动端Web开发学习笔记【2】 & flex布局
上一篇:移动端Web开发学习笔记[1] meta标签 width设置的是layout viewport 的宽度 initial-scale=1.0 自带 width=device-width 最佳实践 ...
- 【前端】移动端Web开发学习笔记【1】
下一篇:移动端Web开发学习笔记[2] Part 1: 两篇重要的博客 有两篇翻译过来的博客值得一看: 两个viewport的故事(第一部分) 两个viewport的故事(第二部分) 这两篇博客探讨了 ...
- 驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址
驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址 最近重新看了乾龙_Heron的<ARM 上电启动及 Uboot 代码分析>(下简称<代码分析>) ...
- 驱动开发学习笔记. 0.06 嵌入式linux视频开发之预备知识
驱动开发读书笔记. 0.06 嵌入式linux视频开发之预备知识 由于毕业设计选择了嵌入式linux视频开发相关的项目,于是找了相关的资料,下面是一下预备知识 UVC : UVC,全称为:USB v ...
- 驱动开发学习笔记. 0.05 linux 2.6 platform device register 平台设备注册 2/2 共2篇
驱动开发读书笔记. 0.05 linux 2.6 platform device register 平台设备注册 2/2 共2篇 下面这段摘自 linux源码里面的文档 : 内核版本2.6.22Doc ...
随机推荐
- 【Mac命令行学习】(持续更新)
常用命令: 一.修改环境变量文件: 1.进入文件:vi .bash_profile 2.键盘点击[a]键,进入文件编辑 3.修改完成后,如果是vi,点击[esc]键退出编辑模式 4.输入以下命令进行具 ...
- 【学习ATX基于uiautomator2】之API操作Android方法
具体API可参考:<uiautomator2>以及参考github官方文档 感谢:Ricky_Frog <Python+uiautomator2手机UI自动化测试实战 -- 2. 用 ...
- Photoshop脚本之eps转换成jpg
function saveEPS( doc, saveFile ) { var saveOptions = new JPEGSaveOptions( ); saveOptions.encoding = ...
- petrozavodsk summer 2018 游记&&总结
day0: 出发前训了一场比较水bapc2017保持手感(恢复信心),成功AK了,不过罚时略高.然后三人打车从紫金港到杭州东站,坐高铁到上海虹桥,再坐机场快线到浦东机场(傻乎乎的jsb帮爸爸付了钱,然 ...
- Openstack(Kilo)安装系列之Keystone(四)
创建租间.用户.角色 一.To configure prerequisites 1.Configure the authentication token: export OS_TOKEN=ADMIN_ ...
- Torch-RNN运行过程中的坑 [0](一些基础概念)
0.Lua & LuaJIT简介 Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能. Lua 是巴 ...
- trait优先级 与 使用
之前一直沒有讲到trait,在此我不得不提一下trait中的优先级: 在trait继承中,优先顺序依次是:来自当前类的成员覆盖了 trait 的方法,而 trait 则覆盖了被继承的方法. For e ...
- AWS系列-根设备类型
1.AWS根设备类型分为两类 实例存储(本地存储) EBS存储(网络存储) 2.实例存储 系统和磁盘在同一主机上 3.EBS存储 Elastic Block Storage EBS可能与云主机不在一台 ...
- TypeScript 基本类型(一)
1.boolean 布尔值 true/false let isDone: boolean = false; 2.number 数字:和JavaScript 一样,TypeScript 里的所有数字都是 ...
- webpack 从入门到工程实践
from:https://www.jianshu.com/p/9349c30a6b3e?utm_campaign=maleskine&utm_content=note&utm_medi ...