Android事件处理机制分为回调和监听两种
回调机制的实质是将事件的处理绑定在控件上,有图像用户界面控件自己处理事件。
简单的说:在A类中定义了一个方法,这个方法中用到了一个接口和该接口中的抽象方法,但是抽象方法没有具体的实现,需要B类去实现,B类实现该方法后,它本身不会去调用该方法,而是传递给A类,供A类去调用。
相对于回调,个人感觉监听更加常用。
监听由事件,事件源个监听器组成,监听器接口有三种实现方式:
匿名内部类:
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"you have clicked Button1",Toast.LENGTH_SHORT).show();
}
});
内部类:
private View.OnClickListener MyListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"you have clicked Button2",Toast.LENGTH_SHORT).show();
}
};
外部类:
--------------------------------------------------------------------------------------------------------------------------------------
然后第六章就是一些高级控件的使用
AutoCompleteText 下拉匹配
Spinner 下拉列表
ListView 列表视图
GirdView 九宫格
Gallery 水平滚动列表
ScrollView 滚动
TabHost 选项卡
ImageSwitcher 和Gallery一起实现幻灯片
ProgressBar 进度条
SeekBar 可拖动进度条
主要还是要多写,从实例中去熟悉控件,其中Tabhost因为版本的问题,要是想图文一起显示可以更换下APP的theme,在AndroidManifest.xml中换成 android:theme="@android:style/Theme.Black" 。
R文件有时找不到需要的ID,一方面如果找xml文件注意看看文件名是否大写了,大写的不行。另一方面可以手动import自己包下R文件,一般就行了
以上控件大多都要用到适配器
简单一点的
ArrayAdapter:
把数据放入一个数组以便显示
simpleAdapter:可以定义各种各样的布局,把ImageView ,Button,TextView等放在一起。一般还要用的数组列表ArrayList和HashMap
这两个适配器都要手动一个个添加数据,
BaseAdapter可以动态生成布局,需要重写一些方法
-------------------------------------------------------------------------------------------------------------------------------------
菜单和对话框也是非常常用的,一般新建项目时会自动重写选项菜单的回调方法,添加菜单项就好了。注意的是4.0以上版本也不能同时显示图文,要重写
public boolean onPrepareOptionsMenu(Menu menu)
{
// TODO Auto-generated method stub
return super.onPrepareOptionsMenu(menu);
}
//enable为true时,菜单添加图标有效,enable为false时无效。4.0系统默认无效
private void setIconEnable(Menu menu, boolean enable)
{
try
{
Class<?> clazz = Class.forName("com.android.internal.view.menu.MenuBuilder");
Method m = clazz.getDeclaredMethod("setOptionalIconsVisible", boolean.class);
m.setAccessible(true);
//MenuBuilder实现Menu接口,创建菜单时,传进来的menu其实就是MenuBuilder对象(java的多态特征)
m.invoke(menu, enable);
} catch (Exception e)
{
e.printStackTrace();
}
}
onCreateOptionsMenu(Menu menu) 里也要加上 setIconEnable(menu, true);
-------------------------------------------------------------------------------------------------------------------------------
到第六章为止安卓基础的一些使用就全部看完了。