【Xamarin开发 Android 系列 7】 Android 结构基础(下)

原文:【Xamarin开发 Android 系列 7】 Android 结构基础(下)

*******前期我们不打算进行太深入的东西,省的吓跑刚进门的,感觉门槛高,so,我们一开始就是跑马灯一样,向前蹿*************

 

前一篇 我们从大概上知道了 Android的体系,我强调,我们的重点是Application,包括以后的开发 我们也都是开发Application,没有其他。

我们队APP有了大概了了接,知道 .apk的组成。

那么真正的app 包含哪些细节的东西呢,都是概念性的东西,但是必须知道。所以 我们一一罗列出来,并对照关系。

首先我们讲解的是其四大组件 Activity  /BroadcastReceiver/ Service /Content Provider

1.Activity

 一个Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务,例如拨号、拍照、发送email、看地图。每一个activity被给予一个窗口,在上面可以绘制用户接口。窗口通常充满屏幕,但也可以小于屏幕而浮于其它窗口之上。Android应用中每一个Activity都必须要在AndroidManifest.xml配置文件中声明,否则系统将不识别也不执行该Activity

  一个应用程序通常由多个activities组成,他们通常是松耦合关系。通常,一个应用程序中的activity被指定为"main"activity,当第一次启动应用程序的时候呈现给用户的那个activity。每一个activity然后可以启动另一个activity为了完成不同的动作。每一次一个activity启动,前一个activity就停止了,但是系统保留activity在一个栈上(“back stack”)。当一个新activity启动,它被推送到栈顶,取得用户焦点。Back Stack符合简单“后进先出”原则,所以,当用户完成当前activity然后点击back按钮,它被弹出栈(并且被摧毁),然后之前的activity恢复。

2.Service 

 一个Service 是一段长生命周期的,没有用户界面的程序,可以用来开发如监控类程序.类似 windows 服务。可以用来进行 缓存处理、大数据处理、音乐媒体文件播放等后台处理。

比较好的一个例子就是一个正在从播放列表中播放歌曲的媒体播放器。在一个媒体播放器的应用中,应该会有多个activity,让使用者可以选择歌曲并播放歌曲。然而,音乐重放这个功能并没有对应的activity,因为使用者当然会认为在导航到其它屏幕时音乐应该还在播放的。在这个例子中,媒体播放器这个activity 会使用Context.startService()来启动一个service,从而可以在后台保持音乐的播放。同时,系统也将保持这个service 一直执行,直到这个service 运行结束。另外,我们还可以通过使用Context.bindService()方法,连接到一个service 上(如果这个service 还没有运行将启动它)。当连接到一个service 之后,我们还可以service 提供的接口与它进行通讯。拿媒体播放器这个例子来说,我们还可以进行暂停、重播等操作。

3.Content Provider

此组件提供数据内容分发共享,相当于自身的数据的对外一个接口Provider,android平台提供了Content Provider使一个应用程序的指定数据集提供给其他应用程序。这些数据可以存储在文件系统中、在一个SQLite数据库、或以任何其他合理的方式

4.Broadcast receivers

 广播接收器,顾名思义,就是接受来自系统或者程序的事件通知,然后转发通知订阅者程序。相当于C#中的事件 订阅 广播模式。Broadcast receivers订阅自己需要的事件通知信息,进行自身的处理,比如 :电池电量过低,蓝牙打开,等等,系统推送消息到 系统的 事件总线,然后由订阅者获取事件,(Event-Bus)事件总线模式,是我推测的,不知道是不是这种模式,在  WCF基于 Azure开发的时候,提供事件总线,对来自不同来源 的消息进行推送通知,交由特定的订阅者进行消息的分发处理。

 

 

5.Views and ViewGroups

在程序界面上你能看到的程序控件 都是派生来自 View 类,例如:buttons, labels, textboxes, and radio

buttons are all examples of Views,

View是所有UI组件的基类,而ViewGroup是容纳这些组件的容器,其本身也是从View派生出来的。AndroidUI界面的一般结构可参见下面的示意图:

 

View 的创建 可以通过编程 或者xml布局的方式进行。我们通常都是在IDE下进行 View  控件的开发

 

6.User interface widgets 

   接口部件,Android提供基于部件的形式进行友好的界面体验式开发,部件集在 Framework下的android.widget 

7. Common layouts 布局(五种布局模式)

  1 LinearLayout 线性布局 

线性布局,这个东西,从外框上可以理解为一个div,他首先是一个一个从上往下罗列在屏幕上。每一个LinearLayout里面又可分为垂直布局(android:orientation="vertical")和水平布局(android:orientation="horizontal" )。当垂直布局时,每一行就只有一个元素,多个元素依次垂直往下;水平布局时,只有一行,每一个元素依次向右排列。
  linearLayout中有一个重要的属性 android:layout_weight="1",这个weight在垂直布局时,代表行距;水平的时候代表列宽;weight值越大就越大。

线形布局中预览和真机中完全一样。

TextView占一定的空间,没有赋值也有一定的宽高,要特别注意。

 2 FrameLayout

      FrameLayout是最简单的一个布局对象。它被定制为你屏幕上的一个空白备用区域,之后你可以在其中填充一个单一对象 — 比如,一张你要发布的图片。所有的子元素将会固定在屏幕的左上角;你不能为FrameLayout中的一个子元素指定一个位置。后一个子元素将会直接在前一个子元素之上进行覆盖填充,把它们部份或全部挡住(除非后一个子元素是透明的)。    
3、AbsoluteLayout
   AbsoluteLayout 这个布局方式很简单,主要属性就两个 layout_x 和 layout_y 分别定义 这个组件的绝对位置。 即,以屏幕左上角为(0,0)的坐标轴的x,y值,当向下或向右移动时,坐标值将变大。AbsoluteLayout 没有页边框,允许元素之间互相重叠(尽管不推荐)。我们通常不推荐使用 AbsoluteLayout ,除非你有正当理由要使用它,因为它使界面代码太过刚性,以至于在不同的设备上可能不能很好地工作。

4、RelativeLayout
    相对布局可以理解为某一个元素为参照物,来定位的布局方式。

5、TableLayout

       表格布局类似Html里面的Table。每一个TableLayout里面有表格行TableRow,TableRow里面可以具体定义每一个元素。每个TableRow 都会定义一个 row (事实上,你可以定义其它的子对象,这在下面会解释到)。TableLayout 容器不会显示row 、cloumns 或cell 的边框线。每个 row 拥有0个或多个的cell ;每个cell 拥有一个View 对象。表格由列和行组成许多的单元格。表格允许单元格为空。单元格不能跨列,这与HTML 中的不一样。

  TabRow只论行,不论列(列自定义)。

(布局参考来自:http://www.cnblogs.com/chiao/archive/2011/08/24/2152435.html)

 

8.Adapter layouts 自适应布局

List View

Grid View  

两个自适应布局

 

 

 

9.XML layout files

 页面布局文件,一个xml文件,包含 Tags 来进行布局  控件的 声明,每个控件对应的是 对应 的控件类,属性进行控件的初始化赋值。每个控件都有唯一的ID,

如:android:id="@+id/searchButton",@ 告诉解析器 这是控件的Id,+ 表示注册到资源文件到R.java,在资源文件中,对应的整数数字ID标识到控件。

10.Intents 

消息传递承载容器,用来在Android的各个部件间进行通讯的时候,消息承载。

主要用于:1、窗体Activity的数据传递  2、服务数据通知 3、组件间进行通讯数据传递 等

11. Resources

实现对程序的资源文件 ,图像 、音频、视频、文件、动画菜单、样式 的操作管理。

12. R.java 文件

当编译项目的时候,程序包中的资源文件ID标识被放置到程序的R.Java文件中,R class 文件中包含各个资源的int 类型的标识ID。如下图:

   

 

看完以上的内容,我们对app 的开发的认知基本完毕。再次提示:不会进行过深的层次的讲解。待熟练后,可以对各个部件 概念进行更深入的学习。

 

时间: 2025-01-23 20:14:31

【Xamarin开发 Android 系列 7】 Android 结构基础(下)的相关文章

【Xamarin开发 Android 系列 6】 Android 结构基础(上)

原文:[Xamarin开发 Android 系列 6] Android 结构基础(上)     前面大家已经熟悉了什么是Android,而且在 [Xamarin开发 Android 系列 4] Android 基础知识 一文里,开篇就上图,展示了Android的架构. 大概也就4层 APP--应用程序层 Framework --公共架构层 Native Libs + Dalvik VM---系统类库+虚拟机 Linux Kernel--Linux内核   Android 是一个基于Linux开发

【Xamarin开发 Android 系列 4】 Android 基础知识

原文:[Xamarin开发 Android 系列 4] Android 基础知识 什么是Android?   Android一词的本义指"机器人",同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统.中间件.用户界面和应用软件组成,而且不存在任何以往阻碍移动产业创新的专有权障碍,号称是首个为移动终端打造的真正开放和完整的移动软件. Android是一种以Linux为基础的开放源代码操作系统,主要使用于便携设备.目前尚未有统一中文

【Xamarin开发 Android 系列 3】循序渐进的学习顺序

原文:[Xamarin开发 Android 系列 3]循序渐进的学习顺序 指定合理的学习步骤,将各个技术点进行强化.慢慢 的就从点到线 到面的飞跃,一切仅仅是时间问题,开始前,请记住,学习是最佳的投资方式.风险成本极小,但是收货极佳. 用最小的杠杠,撬动爆发力极强的财富,那就是学习和经验的累积的过程!      [学习顺序-1 国内篇] [Xamarin Android开发实战基础篇] 第1章 Xamarin开发Anroid应用介绍 11.1 Xamarin基本知识 11.1.1 Xamarin

【Xamarin开发 Android 系列 13】 应用打包部署

原文:[Xamarin开发 Android 系列 13] 应用打包部署    开始倒叙咯................ 先更新大宝部署吧,这个章节比较的Easy,童鞋们不用费脑筋.点解?从界面上填写几个参数,其他都是傻瓜式的[下一步],童鞋们是否喜欢.卤煮 反正很是受用. 我们开发好的程序,需要打包成 .apk,成为安卓的安装包.然后就可以通过下载的形式安装到 用户终端手机/平板/TV/Watch....... 发布程序 主要的还是将应用发布到 谷歌的官方商店 Google Play..再然后

【Xamarin开发 Android 系列 1】环境部署搭建

原文:[Xamarin开发 Android 系列 1]环境部署搭建 开篇自然先扯一段,近几年移动互联网如果熊猫零食一样,蔓延迅速.楼主身为一个微软忠实的粉丝,无奈,老爹不给力.Silverlight开发的WP7 ,Windows Phone 系列没成功, 收购诺基亚 ,搭载WP8 ,依然Windows Phone  ,结果Xaml依然不温不火.最后还把诺基亚干挺了.想想当时手握N91 的吊样儿..时过境迁. 主流移动互联网平台, 1 Android 2 IOS 3???? 地铁 大街上,凡是走的

【Xamarin开发 Android 系列 2】VS2015跨平台开发的几种方式

原文:[Xamarin开发 Android 系列 2]VS2015跨平台开发的几种方式   在微软Build大会上,微软宣布在VS2015中支持三种方式进行跨平台的开发. 1. Xamarin 2. Cordova 3. C++ Xamarin  官网 :http://xamarin.com/ Xamarin 是由早期的Mono项目演变而来,原本是在Linux上执行C#程序的一个开放原始码项目.后来陆续发表支持iOS的Mono Touch framework以及Mono For Android

【Xamarin开发 Android 系列 5】 Xamarin 的破解

原文:[Xamarin开发 Android 系列 5] Xamarin 的破解 有关这个话题,十分敏感,公司开发还是支持下商业版权吧,毕竟一帮猴子辛辛苦苦没日没夜的干活,不说开宝马奔驰,吃饭还是必须的. 但是针对个人来说,确实太贵了,尤其在天朝.我只能说是,死鬼死鬼...... 网上也有很多旧版本的破解的补丁,试过几个 不好用,甚至不能用,周末花了两天时间,自己动手丰衣足食.            有同学表示,看见这些就兴奋,兴奋过了又茫然了.还是不知道怎么下手. 偶尔看到一篇文章写的挺好:地址

Android应用开发提高系列(2)——《Practical Java 中文版》读书笔记(下)

声明 欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs.com   系列 Android应用开发提高系列(1)--<Practical Java 中文版>读书笔记(上)    正文  注意:条目和用语可能与书籍有所出入,但尽量保持原样加一些自己的理解. 一.性能 1. 先把焦点放在设计.数据结构和算法身上 备注:良好的设计.明智的选择数据结构和算法可能比高效代码更重要.   2.  不要依赖编译

Android应用开发提高系列(5)——Android动态加载(下)——加载已安装APK中的类和资源

前言  Android动态加载(下)--加载已安装APK中的类和资源.   声明 欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs.com  Android中文Wiki:http://wikidroid.sinaapp.com     正文 一.目标 注意被调用的APK在Android系统中是已经安装的.    上篇文章:Android应用开发提高系列(4)--Android动态加载(上)--加载