我们已经成功地在模拟器和手机上运行起来我们得Hello World程序,那么让我们回过头来看看这个工程的结构。
打开解决方案资源管理器,比较值得我们关注的有以下的文件和文件夹:Activity1.cs,Resources文件夹下的文件夹及文件。
Activity1.cs的内容与一般的C#文件相似。
可以看到,Activity1这个类是继承自Activity类得,在类中重写了OnCreate方法,在方法内以SetContentView方法来设置这个Activity要显示的布局(Resource.Layout.Main),那么这个Resource.Layout.Main是哪里来的呢?打开Resource.Designer.cs这个文件你就能看到了,这个Resource.Layout.Main其实是一个int常量。那这个常量又是怎么来的呢?它其实代表的是Resources文件夹下的Layout文件夹下的Main.axml文件。Resources文件夹放置的是与程序相关的资源文件,如程序的icon图标(drawable文件夹内),布局文件(layout文件夹内)与常量值(values文件夹内)。当你生成程序时,Mono会把Resources下的这些文件夹分别编译为与文件夹同名的类作为Resource类的嵌套类,然后把文件中的文件名作为生成类的常量,并把xml文件中具有android:id这个属性的值作为Id类的常量。所以SetContentView(Resource.Layout.Main)实际上就是将Resources/Layout/Main.axml作为程序加载时的布局输出。布局文件是以xml格式编写的,Mono定义了一种新的文件格式:.axml,文件结构与xml文件一样,只不过在编辑文件时加入了针对android布局文件的智能提示:
布局文件中设置了一个Button 标签,用以配置按钮标签Widget,其内部设置的android:text属性是要显示的文字内容,引用"@string"里的Hello字符串常数。查看Resources/Values/strings.xml,字符串常数设置如下:
其中“Hello”字符串的内容为“Hello World, Click Me!”,这就是我们在模拟器或手机上看见的按钮上的文字内容了。
那么大家有没有想过,Mono是怎么知道程序一运行就以Activity1.cs为我们的主程序呢?仔细观察一下Activity1.cs的代码,发现Activity1这个类打有Activity这个特性,并且里面有个属性叫MainLauncher,值是true,那会不会就是以这个来识别的呢?为了验证这一想法,我们先来增加一个新的Activity,取名为Activity2,并且把这个MainLauncher也设为true,为了与Activity1的布局加以区分,我们在OnCreate中把按钮的文本修改一下,代码如下:
再次部署程序(希望你之前没有关掉模拟器,重新生成程序可以省去你再次启动模拟器的时间),结果程序一运行马上就抛出异常了,很自然就想到了,是由于Activity1和Activity2都有MainLauncher的原因,把Activity1的MainLauncher去掉,再次运行,好的,程序跑起来了,而且按钮的文本也变成了ojlovecd,看来我们的猜测没有错。而且不知道大家注意到没有,程序的名称也变成了My Activity
,可见程序的名称是由Label属性来指定的。
好了,说完了MonoDroid程序基本结构之后,让我们对代码做小小的修改来结束这次的学习吧。在之前的范例运行结果,窗口的底色一律是深黑色的,这是SDK默认的颜色,要更改Activity里的窗口底色有很多方法,最简单的方法就是将颜色色码事先定义在资源文件中。
首先在Values文件夹下新建一个color.xml,在里面加上如下内容:
然后重新生成项目,打开Main.axml,在LinearLayout节点中加上android:background属性,如下:
重新运行程序,怎样,底色变白了吧~~~
分享到:
相关推荐
MonoDroid学习笔记 网络整理 经典
11. **JAVA 8及以上版本的新特性**:例如Lambda表达式、Stream API、Optional类、日期时间API的改进等,这些新特性极大地提升了JAVA的编程效率和代码质量。 通过阅读和学习这些JAVA学习笔记,开发者不仅可以掌握...
总的来说,这份【狂神Java学习笔记——前端入门——HTML、CSS、JavaScript学习代码】是一份全面且实用的学习资料,它涵盖了前端开发的三大核心技术,并结合了个人实践和理解,对于希望入门前端开发的学习者来说是一...
在本篇“Spring学习笔记——HelloWorld”中,我们将探讨Spring框架的基础知识,以及如何创建一个简单的Spring应用程序。Spring是一个广泛使用的Java企业级应用开发框架,它提供了丰富的功能,包括依赖注入、AOP...
Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip ...
学习笔记之——基于pytorch的FSRCNN 把我的代码上传了,后续有更正会更新这个代码
Android学习笔记(三)android studio中CheckBox自定义样式(更换复选框左侧的勾选图像) Android学习笔记(四)Android 中Activity页面的跳转及传值 Android学习笔记(五)——Toast提示、Dialog对话框、Menu菜单 ...
j2me学习笔记【1】——helloworld程序示例 j2me学习笔记【2】——利用Display类的isColor()方法获取设备是否支持彩色的信息 j2me学习笔记【3】——简单的在线帮助示例 j2me学习笔记【4】——Item类的学习 j2me学习...
【Android 学习笔记(1)--永远不变的Hello World】 Android 开发是移动应用开发领域的重要组成部分,尤其对于新手而言,"Hello, World!" 是入门的起点。在这个学习笔记中,我们将探讨如何创建第一个简单的 Android...
个人网课学习笔记
### C#学习笔记——窗体应用程序 #### 一、引言 本文旨在详细介绍如何使用Visual Studio 2010创建Windows Form应用程序(WinForm),特别适合于初学者。通过本教程,您将学会如何从零开始搭建一个基本的WinForm项目,...
这套学习笔记全面覆盖了这两个平台的基础知识、核心概念以及高级特性,对于想要深入理解和掌握Mono在Android开发中的应用非常有价值。 首先,我们来了解一下Mono for Android。它是一个.NET开发环境,允许开发者...
"Java学习笔记——良葛格"是一份专为初学者设计的教程资料,由良葛格精心编写,旨在帮助读者掌握JDK5.0版本的Java基础知识。JDK(Java Development Kit)是Java开发的核心工具集,包含了编译器、调试器和运行环境等...
Spring.NET学习笔记22——整合WCF(应用篇) http://www.cnblogs.com/GoodHelper/archive/2010/05/15/SpringNet_Wcf.html
刘冬编写Spring.NET学习笔记25——整合Quartz.NET例子。 原文: http://www.cnblogs.com/GoodHelper/archive/2009/11/20/SpringNet_QuartzNet.html
刘冬编写的Spring.NET学习笔记26——整合NVelocity例子。 原文:http://www.cnblogs.com/GoodHelper/archive/2009/11/20/SpringNet_NVelocity.html
2024数据结构——学习笔记——入门必看【建议收藏】2024数据结构——学习笔记——入门必看【建议收藏】2024数据结构——学习笔记——入门必看【建议收藏】2024数据结构——学习笔记——入门必看【建议收藏】2024数据...
刘冬编写的Spring.NET学习笔记21——整合WebService的例子。 原文:http://www.cnblogs.com/GoodHelper/archive/2009/11/19/SpringNet_WebService.html