mono for android 2 (通过Hello,World ,熟悉项目)
一. 在vs2012中新建项目,选择Andriod Application的默认项目模板:
二. 查看项目结构:
其实基本跟silverlight/wpf相识,主要结构:
1. Assets 和 Resource 目录:
Assets 目录, 如果应用需要用到二进制资源文件, 比如特殊字体、声音等, 放在这个目录下, 并将 BuildAction 设置为 AndrioidAsset , 资源将会和应用程序一起部署, 在运行时可以通过 AssetManager 使用类似下面的代码进行访问:
public class ReadAsset : Activity { protected override void OnCreate (Bundle bundle) { base.OnCreate (bundle); InputStream input = Assets.Open ("my_asset.txt"); } }
另外,字体文件可以这样加载:
Typeface tf = Typeface.CreateFromAsset( Context.Assets, "fonts/samplefont.ttf");
Resource 目录, 包含应用程序所需的图片、 布局描述、 二进制文件和字符串字典等资源文件。 比如, 一个简单的 Android 应用包含一个界面描述文件 (main.axml) , 一个国际化的字符串字典 (strings.xml) 以及图标 (icon.png) , 这些文件按照下面的结构保存在 “Resource” 目录内:
Resources/
drawable/
icon.png
layout/
main.axml
values/
strings.xml
为了让编译系统能够将资源文件识别出 Android 资源, 需要将其编译动作 (Build Action) 设置为 “Android Resource”。 上面的目录结构经过编译之后, 将会生成类似下面的文件:
public class Resource { public class Drawable { public const int icon = 0x123; } public class Layout { public const int main = 0x456; } public class Strings { public const int FirstString = 0xabc; public const int SecondString = 0xbcd; } }
使用 Resource.Drawable.icon
可以引用 drawable/icon 文件, Resource.Layout.main
可以引用 /layout/main.axml 文件, 而使用 Resource.Strings.FirstString
则可以引用 values/strings.xml 文件中的第一个字符串。
以上这些和 Android SDK 文档中介绍的都是大同小异的,加上了net 特有的一些风格而已。
2. Activity 及 View:
项目中默认生成Main.axml,这是默认的View,你可自己根据实际需要新增或修改等。
与winform/wpf等不同的是 android项目中并没有main的主函数,也没有StartupUri的启动界面,那程序是如何启动主界面呢,
查看Activity1的代码中不难发现,有几点需要注意的:
[Activity(Label = "HelloWorld", MainLauncher = true, Icon = "@drawable/icon")] public class Activity1 : Activity { int count = 1; protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); // Get our button from the layout resource, // and attach an event to it Button button = FindViewById<Button>(Resource.Id.MyButton); button.Click += delegate { button.Text = string.Format("{0} clicks!", count++); }; } }
第一点:[Activity(Label = "HelloWorld", MainLauncher = true, Icon = "@drawable/icon")]中指定了Label,并指定了MainLauncher=true,也就是说这是主程序,启动时候触发的Activity,至于具体对应哪个界面的,可以从SetContentView(Resource.Layout.Main) 这一句看到Activity对应得界面。
第二点: // Get our button from the layout resource,
// and attach an event to it
Button button = FindViewById<Button>(Resource.Id.MyButton);
button.Click += delegate { button.Text = string.Format("{0} clicks!", count++); };
这两句也充分的展示了在mono for android中基于事件的机制也是支持的,只是需要简单的为控件添加相应的委托事件即可,显得格外简单。
3 .项目属性
项目属性主要是针对android目标系统版本/支持的架构,程序名称等的设置,这在发布和部署的时候应格外注意。
好了,简单运行一下HelloWorld的程序,效果就出来了,第一节的介绍就到这里了。
posted on 2013-10-07 15:48 wu-yansheng 阅读(273) 评论(0) 编辑 收藏 举报