张高兴的 Xamarin.Android 学习笔记:(二)“Hello World”
完成环境配置后开始第一个简单项目。打开 Visual Studio 新建一个 Xamarin.Android 项目 “HelloAndroid”。(GitHub:https://github.com/ZhangGaoxing/xamarin-android-demo/tree/master/HelloAndroid)

解决方案结构如下

1. 项目结构分析
Properties 存放着应用的一些配置信息。直接双击 “Properties” 可以设置应用的一些属性。AndroidManifest.xml 则是 Android 应用的配置文件,像活动,权限等都要在其中注册,但不需要手动注册,编译时 Xamarin 会自动完成。AssemblyInfo.cs 存放应用的编译信息,像名称,描述,版本等。
引用 与一般的 .Net 项目一样。
Components 暂时不了解怎么用……
Assets 下存放的是原生的资源文件,像文本之类的,不会经过编译,直接打包。目录下有一个简单的帮助文件。
Resources 下存放的都是要经过编译的资源文件。和 Android 项目下的 res 目录是一样的,drawable 下存放的是图片文件,layout 下是应用布局文件,value 下则是字符串。和 Assets 目录一样,也有一个简单的帮助文件。Resource.Designer.cs 则是一些自动生成的代码。
MainActivity.cs 则是默认创建的主活动。
2. 代码说明
由于空项目自动创建了一个活动和一个布局,则使用默认的模板。
Main.axml
双击 Main.axml 打开布局编辑器,你可以和正常的 .Net 项目一样从工具箱中拖拽控件,也可以使用类似Xaml的方式来编写布局。这里我们需要一个 Button 用来点击,和一个 TextView 用来显示 “Hello, Android”。每创建一个控件,相应的 id 会自动添加到 Resource.Id 中(找不到 id 的话请重新生成一下项目)。效果示意图如下

界面 xml 代码如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/showHello" />
<Button
android:text="Click Me"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/sayHello" />
</LinearLayout>
MainActivity.cs
Android 项目中任何活动都要重写 onCreate() 方法,同样的 Xamarin 也已经自动创建了一个符合 C# 命名规则的 OnCreate() 方法。和 Android 项目一样,活动创建完成后需要加载布局,SetContentView () 方法没变只不过符合了 C# 的命名规则,将 Resource.Layout 下的布局传入即可。这里传入的是 Resource.Layout.Main 。
public class MainActivity : Activity
{protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// 加载布局
SetContentView (Resource.Layout.Main);
}
}
创建事件首先要获取布局中的控件,在 Xamarin 中可以使用泛型方法 FindViewById<T>() 来获取控件,需要传入一个 id 值。
// 获取布局中的控件
Button say = FindViewById<Button>(Resource.Id.sayHello);
TextView show = FindViewById<TextView>(Resource.Id.showHello);
接下来创建 Button 的 Click 方法。和一般的 .Net 项目一样,直接上代码。
// 绑定 Click 事件
say.Click += (sender, e) =>
{ };
这个简单的项目实现的是点击计数,并使用 Toast 通知显示,下面给出完整代码
using Android.App;
using Android.Widget;
using Android.OS; namespace HelloAndroid
{
[Activity(Label = "HelloAndroid", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
int count = ;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// 加载布局
SetContentView (Resource.Layout.Main);
// 获取布局中的控件
Button say = FindViewById<Button>(Resource.Id.sayHello);
TextView show = FindViewById<TextView>(Resource.Id.showHello);
// 绑定 Click 事件
say.Click += (sender, e) =>
{
count++;
show.Text = "Hello, Android";
say.Text = $"You Clicked {count}";
// Toast 通知
Toast.MakeText(this, $"You Clicked {count}", ToastLength.Short).Show();
};
}
}
}
效果图(需要注意的是,使用模拟器调试时应用会直接闪退,应该是应用支持文件没传进模拟器吧,我猜的。真机调试时第一次安装了三个应用,一个运行时应用,一个API支持应用,还有一个自己的应用。)

张高兴的 Xamarin.Android 学习笔记:(二)“Hello World”的更多相关文章
- 张高兴的 Xamarin.Android 学习笔记:(一)环境配置
最近在自学 Xamarin 和 Android ,同时发现国内在做 Xamarin 的不多.我在自学中间遇到了很多问题,而且百度到的很多教程也有些过时,现在打算写点东西稍微总结下,顺便帮后人指指路了. ...
- 张高兴的 Xamarin.Android 学习笔记:(三)活动生命周期
本文将直接解释我写的一个示例.示例目的在于展示 Android 活动在 Xamarin 中的用法.如果有朋友对基础知识不太了解建议先学 Android . 新建一个 Xamarin.Android 项 ...
- 张高兴的 Xamarin.Android 学习笔记:(四)常用控件
示例地址 GitHub : https://github.com/ZhangGaoxing/xamarin-android-demo/tree/master/ControlsDemo
- Android学习笔记二之初始Activity
初识Activity,跟着教程学习敲了一遍这一章的内容,下面根据目录结构总结知识点: 一.活动是什么 上篇博文中我们提到了Android四大组件,其中有一个Activity,我们将之称为活动.活动是最 ...
- android学习笔记二、Activity深入学习
一.创建和使用: 1.Activity是android的四大组件之一,需要继承Activity并在清单文件中进行声明才能使用.没有声明则报错. 2.启动Activity是通过Intent,有两种方式: ...
- android学习笔记二
ADT(Android Development Tools)安卓开发工具. android项目目录简介 ==> src==>源代码文件 res==>资源文件 AndroidManif ...
- Android 学习笔记二 自定义按钮形状 颜色 点击渐变
问题:自定义按钮的颜色 形状弧度 渐变效果 1.新建自定义属性button_login.xml (借鉴某大神) <?xml version="1.0" encoding=& ...
- Android学习笔记二:activity的理解
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/7513290.html 一:activity定义了app的页面 一个app有很多个页面组成,一个页面其实就是一个 ...
- android学习笔记二:Intent
1.Intent作用 协助完成各个组建间的通信.如activity间.启动service.Broadcast. 2.Intent构成 1.Componet name:要启动的目的组建. 2.Actio ...
随机推荐
- 团队作业9——测试与发布(Beta版本)
Beta版本测试报告 一bug汇总 计时没有显示即倒计时,难度不同的功能没有实现(已修复) 没有导入试卷和错题功能(不打算修复) 前台管理功能(部分修复) 界面美观问题(没有修复也不打算修复) 二.场 ...
- 201521123026 《java程序设计》第七周学习总结
1. 本章学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 Q1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 答: public ...
- 201521123027 <java程序设计>第七周学习总结
1.本周学习总结 2.书面作业 Q1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 答: 源代码: //contains()方法 public boolean c ...
- 201521123097《Java程序设计》第五周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 2. 书面作业 1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过? ...
- 201521123023《java程序设计》第四周学习总结
1. 本周学习总结 思维导图 常规: (1)抽象类:不能被直接实例化.只能作为其它类的父类,这一点与final类正好相反.用关键词abstract声明. (2)继承:只能有一个父类,即单继承,子类继承 ...
- 201521123071 《JAVA程序设计》第十四周学习总结
第14周作业-数据库 1. 本周学习总结 1.1 以你喜欢的方式(思维导图.Onenote或其他)归纳总结多数据库相关内容. 1.使用JDBC将Java程序与数据库连接 1.1注册驱动 Class.f ...
- XML解析【介绍、DOM、SAX详细说明、jaxp、dom4j、XPATH】
什么是XML解析 前面XML章节已经说了,XML被设计为"什么都不做",XML只用于组织.存储数据,除此之外的数据生成.读取.传送等等的操作都与XML本身无关! XML解析就是读取 ...
- Java是如何解析xml文件的(DOM)
Java解析xml文件 在Java程序中读取xml文件的过程也称为"解析xml文件": 解析的目的: 获取 节点名和节点值 获取 属性名.属性值. 四中解析方式: DOM SAX ...
- Linux 文件查找
在Linux系统的查找相关的命令: which 查看可执行文件的位置 whereis 查看文件的位置 locate 配合数据库查看文件位置 find 实际搜寻硬盘查询文件名称 whereis wher ...
- Numpy中Meshgrid函数介绍及2种应用场景
近期在好几个地方都看到meshgrid的使用,虽然之前也注意到meshgrid的用法.但总觉得印象不深刻,不是太了解meshgrid的应用场景.所以,本文将进一步介绍Numpy中meshgrid的用法 ...