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)

你可能感兴趣的:(Activity)