Activity

基于监听的实践处理机制 实现监听事件的方法

  • 通过内部类实现
private class OnClick implements View.OnClickListener{ @Override public void onClick(View v) { Intent intent = null; switch (v.getId()) { case R.id.imageButton_search: //goto FaceSetActivity intent = new Intent(MainActivity.this,FaceSetActivity.class); break; } startActivity(intent); } }

  • 通过匿名内部类实现
SearchImageBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //do somethintg } });

  • 通过事件源所在类实现
声明类时继承 public class XXX extends XXX implements View.OnClickListener { ...... } 在类中实现函数 @Override public void onClick(View v) { switch (v.getId()) { //do something... } } 设置监听器 mBtn.setOnClickListener(this);

  • 通过外部类实现
  • 布局文件中onClick属性(针对点击事件)
基于回调的事件处理机制 监听事件的优先级大于回调函数
public boolean onTouchEvent(MotionEvent event) { //do something... return (false/true) } true:回调到此为止 false:继续回调父控件的回调函数

View的事件分发
dispatchTouchEvent->setOnTouchListener->onTouchEvent onclick/onLongClick来自onTouchEvent的处理

Handler消息处理 延时处理
函数原型 : Handler.postDelayed(Runnable r, delaytime ms); mHandler.postDelayed(new Runnable() { @Override public void run() { Intent intent = new Intent(HandlerActivity.this, ButtonActivity.class); } }, 3000)

线程间通信
mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); swtich (msg.what) { //do something... } } } 在其他线程中做以下操作 Message message = new Message(); mesasge.what = 1; mHandler.sendMessage(message);

File内部存储
FileOutputStream = openFileOutput(filename, mode); FileInputStream = openFileInput(filename)

File外部存储
获取外部存储路径 Environment.getExternalStorageDirectory().getAbsolutePath() 6.0版本以上动态申请权限 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.XXX},1)

    推荐阅读