一.第一个Android应用:
开发Android引用大致需要3步:
1.创建一个Android项目
2.在XML布局文件中定义应用程序的用户界面。
3.在Java代码中编写相关功能。
创建android的步骤就省略了,记录一些要点:
android项目的layout目录下有一个XX.XML文件该文件定义了android的用户界面。
从控件面板拖进一个BUTTON控件,双击控件就可以进入.XML对应的位置修改TEXT就是BUTTON的名称。
添加andriod:onclick = “clickHandler”这里就是添加一个点击消息响应方法,方法的名字是clickHandler,
其中XML中一些描述:
android:id:该属性制定了控件的唯一标识,每个控件都有一个唯一的ID。
android:layout_width:指定该界面组件的宽度。如果为match_parent说明跟父容器具有相同的宽度;wrap_content是说组件宽度取决于它的内容的长宽。
android:layout_hight:跟上面的宽度相似
src下的目录是项目的源代码实现逻辑功能在该文件下定义clickHandler的功能:添加了下面两行代码:
TextView tV = (TextView)findViewById(R.id.button1);//获取UI界面中testd的ID
tV.setText("hello"+new java.util.Date());//点击后改变文本框的显示内容
而onCreate中的setContentView(R.layout.activity_main);说明使用layout文件下的activity_main配置布局
Androidmainfest.xml:
是整个应用的描述文件,说明了应用的名称使用的图标,组件等等。
声明运行应该本身的权限:在Andrmainfest.xml元素里添加<uses_permission android:name="android.permission.CALL_PHONE"/>即这应用要运行的话需要CALL_PHONE这个权限(手机里的权限)
也可以为应用中的组件成员添加权限成员即运行该控件需要的权限。
Activity与view
Activity是应用用负责与用户交互的组件view组件则是所有UI控件、容器控件的基类。View组件是实实在在看到的部分,但需要放到容器组件,或者使用Activity将他们现实出来(在mainfest.XML Activity中添加组件的成员)
service
组件与activity组件地位是并列的,但service是在后台运行的一般不与用户进行交互,因此他没有图形用户界面。activity组件需要继承activity基类,而service组件也需要继承service基类。
BroadcastReceiver
该组件是一个广播消息接收器,类似于监听器,但是他监听的是应用中的其他组件,开发者只需要实现自己的子类,并重写onReceive(Context context,Intent intent),当其他组件通过sendBroadcast()\sendStickBroadcast()或者sendOrdereBroadcast()发送广播消息,如BroadcastReceiver组件也对该消息感兴趣则会触发onRecive()。
添加该组件的方法:
1.在JAVA代码中通过Contet.registRecevier()方法祖册BroadcastReceiver.
2.在androidmainfest.XML文件中用<reeiver ../>元素完成注册
ContentProvider
对于android应用而言他们必须相互独立,如果这些应用需要实时数据交互,各自运行在自己的Dalvik虚拟机实例中。
当用户实现自己的ContentProvider,需要实现下面的抽象方法:
inser(Uri,ContentValues):向ContentProvider插入数据。
delete(Uri,ContentValues):删除ContentProvider中指定的数据。
updata(Uri,ContentValues,String,String[]):更新ContentValues中指定的数据。
query(Uri,String[],String,String[],String):查询数据
通常事一个应用使用contentresolver来访问数据另一个程序使用contenprovider暴露数据。
Intent和IntertFilter
严格的说Intent不是安卓内部应用组件,但它作用很大,当android运行时需要连接不同的组件,就要借助intent实现,intent可以启动应用中另一个activity也可以启动servic组件,还可以发送一条广播消息来触发broadcastreceiver,所以说intent是一个桥梁连接这些组件。
intent显式:明确需要启动或者触发的组件类名
intent隐式:只是指定需要启动或者触发的组件满足的条件
通过调用intentfilter声明自身能满足的条件。
签名android程序:
为了避免被安装包覆盖,应用产品都要求对应用进行签名
1.签名的作用:确认发布者身份,
2.确保应用的完整性:签名会对应用包中的文件进行处理