Android事件处理通常和控件相结合,通常有以下几种事件处理模型:
public voidonCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button bn =(Button)findViewById(R.id.bn);
bn.setOnClickListener( newMyClickListener() );
}
class MyClickListenerimplements View.OnClickListener
{
@override
public void onClick(View arg0)
{
EditText txt =(EditText)findViewById(R.id.txt);
Txt.setText(“bn 被单击了!”);
}
}
基于监听的事件处理模型步骤如下:
为了实现回调机制的事件处理,Android为所有GUI组件提供了一些事件处理方法,以View为例,该类包含如下方法
所有基于回调的处理方法都有一个boolean类型的返回值,该返回值用于标识该处理方法是否能完全处理该事件
程序可调用Activity的如下方法获取系统的Configuration对象:
Configuration cfg = getResources().getConfiguration();
一旦获得了系统的Configuration对象,便可获得如下系统的配置信息
Handler类包含如下方法用于发送、处理消息
使用实例:
final Handler myHandler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
if (msg.what == 0x1222)
{
doSomething();
}
}
};
//定义一个计时器,让该计时器周期性地执行指定任务
new Timer().schedule(new TimerTask()
{
@Override
public void run()
{
//新启动的线程无法访问该Activity里的组件
//所以需要通过Handler发送信息
Message msg = new Message();
msg.what = 0x1222;
//发送消息
myHandler.sendMessage(msg);
}
}, 0 , 2*1000);
(先在AVD中用GestureBuilder创建手势,然后导出至/res/raw中)
library = GestureLibraries.fromRawResource(this, R.raw.gestures);
if( !library.load() ){
finish();
}
GestureOverlayView gesture = (GestureOverlayView)findViewById(R.id.gesture);
gesture.addOnGesturePerformedListener(this);
@Override
public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
// TODO Auto-generated method stub
ArrayList<Prediction> gestures = library.recognize(gesture); //获取全部预测结果
int index = 0;
double score = 0.0;
for(int i = 0; i < gestures.size(); ++i){
Prediction result = gestures.get(i);
if(result.score > score){
index = i;
score = result.score;
}
}
Toast.makeText(this, gestures.get(index).name, Toast.LENGTH_LONG).show();
}