Android View监听按键返回事件

1,960 阅读1分钟

背景

开发过程中,用户一按返回键就退出当前的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;
			}
		});
	}
}