1. Android是什么?
Android是一个平台,主要包括Linux微内核,中间件(SQLite等),关键应用(电话本、邮件、短消息、GoogleMap、浏览器等),提供的Java框架,以及Android中的JVM。
2.Android特点之布局管理
FrameLayout:左上角只显示一个组件。
LinearLayout:线性布局管理器,分为水平和垂直俩中,只能进行单行布局。
TableLayout:任意行和列的表格布局管理器。其中TableRow代表一行,TableRow的每一个视图组件代表一个单元格。
AbsoluteLayout:绝对布局管理器,坐标轴的方式,左上角是(0,0)点,往右x轴递增,往下Y轴递增。
RelativeLayout:相对布局管理器,更具最近一个视图组件,或是顶层父组件来确定下一个组件的位置。
3.Activity交互
Intent方式:Intent其实就是用来在Activity之间做交互用的,需要说明的是Intent有个意图说明,值得用深究,举个简单的例子,有种叫Intent.ACTION_CALL,可直接拨打电话。
SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置。SharedPreferences类似过去Windows系统上的ini配置文件,但是它分为多种权限,可以全局共享访问,最终是以xml方式来保存,效率不如Intent,但是由于可以共享,所有可以再Acitivity之间交互。但其效率比SQLite要高。
SQLite也就是数据库,这种方式不推介,因为其效率问题,如果是在不同应用之间交互,可以考虑SQLite。或是永久存储的情况下
In general
Anroid UI与Qt Quick的核心思想是相似的,都是采用MVC(Model-View-Controller)
模式。Anroid为了单纯化界面修改方式,采用了目前比较流行的解决方案--即将界面描述部份的程序码,抽取到程序外部的 XML
描述文件中。应用程序框架包括 XML 描述界面,R.java资源文件索引,
1. XML 描述界面
-Android
为了单纯化界面修改方式,采用了目前比较流行的解决方桉--即将界面描述部份的程序码,抽取到程序外部的 XML 描述文件中。方便界面修改。
其中的XML描述界面的机制跟QML很像,但是比QML更加成熟。
1)Anroid XML已经有成熟完整的控件库。Qt
Quick目前只有少量的控件,没有button,scrollbar。
2)都支持layout,view,property设置
3)都是描述性语言,语法基本一致。都设置id,weight,height,property后面设置value
4)透过
Android 开发工具,自动将 XML 描述档转换成资源文件。一旦应用程序要使用某个界面或是任何种类的资源(字串、图片、图示、音效...),都使用索引来查询。QML中的qrc也是起这样的作用吗,no
5)QML支持java script,Anroid XML not
6)Qt Quick支持用Qt C++生成plugin在QML里使用
Code example
XML: android:layout_height="wrap_content"
// convenient evalue
2. R.java 资源文件索引
-当你建立一个 BMI
新工程,打开位于
「src/com/demo/android/bmi」 目录下的 「R.java」档,你可以看到如下的程序码
public static final class string {
public static
final int app_name=0x7f040000;
public static final int
bmi_btn=0x7f040003;
public static final int
bmi_result=0x7f040004;
public static final int
height=0x7f040001;
public static final int
weight=0x7f040002;
}
R.java就是XML文档转换生成的资源文件索引,当应用程需要使用某个界面或者资源的时候,都通过这个索引来查询。Qt Quick
使用qrc来做资源文件的简单索引。相比起来,Anroid读取资源文件的效率应该更高。
3.Bmi.java 主程序逻辑
- Google Android
将其应用程序的界面称为视图(View),而负责控制各种动作行为的程序主体(Controller),则称为活动(Activity)。因此一个 Android 应用程序,必定会对应到一个以上的 Activity。
import
android.app.Activity;
import
android.os.Bundle;//导入"android.app.Activity"跟"android.os.Bundle"两个
Package
public class Bmi extends Activity
{
@Override //"@"开头的语句表示装饰子(decorator)语句
public void
onCreate(Bundle savedInstanceState)
{//"Bundle"的内容与手机平台的内存管理有关。
super.onCreate(savedInstanceState);//
parent.onCreat
setContentView(R.layout.main);//
set qml resource to showb
}
4. 真正特别之处:整合网络的应用 Intern
Activity之前的交互采用Intern,Qt Quick采用Signal slot的方式
5. Android 应用程序的运作流程,存在于四种载体中:
1) Activity :与用户交互的系统模块
2) Broadcast Intent Receiver
:可使应用对外部事件做出响应,提供一个在不同应用的代码之前进行动态绑定。
3)
Service:应用于后台服务通过serivice来通信。应用的生命周期是由Android系统来决定的,不由具体的应用的线程左右。当应用要求在没有界面显示的情况还能正常运行,(要求有后台线程,而后台线程是不会被系统回收,直到线程结束)这个时候就需要用到Service
4) Content
Provider:ContentProvider封装很多Android当中的上下文环境,包括SQLite,这就使得在不同应用之间交互成为可能。
Activity 运作流程
由实际运行的记录来看,我们可以归纳出所有 Android 应用程序都遵循的动作流程:
一般启动
onCreate -> onStart
-> onResume