背景
开发过程中,用户一按返回键就退出当前的activity不一定都是合理的,比如界面上功能引导,点击一次返回应该是隐藏当前引导,继续点击返回才是退出当前activity。这些场景可能涉及到view能够感知返回事件。
实现方式
view可以通过以下的方式来实现对按键返回的监听:
public class TestActivity extends AppCompatActivity {
public static final String TAG = "TestActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
// 这是一个普通的android.view.View
View normalView = findViewById(R.id.normal_view);
// 下面两行代码的顺序不能颠倒
normalView.setFocusableInTouchMode(true);
normalView.requestFocus();
normalView.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// 需要对action进行判断,否则会收到两次回调
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
Log.i(TAG, "view监听到返回键");
return true;
}
return false;
}
});
}
}