|
我看了一下代码,这个是google原来的代码就是在这样设计的,很奇怪,那个x的图标并没有做点击监控,他点击响应的是整个taskview
下面是点击时的处理代码
frameworks/base/packages/SystemUI/src/com/android/systemui/recents/tv/views/TaskStackHorizontalViewAdapter.java
- @Override
- public void onClick(View v) {
- try {
- if (mTaskCardView.isInDismissState()) {<font color="#ff0000">//判断是否处于dismissstate,如处于则removeTask</font>
- mTaskCardView.startDismissTaskAnimation(
- getRemoveAtListener(getAdapterPosition(), mTaskCardView.getTask()));
- } else {<font color="#ff0000">//否则launcherTask</font>
- EventBus.getDefault().send(new LaunchTvTaskEvent(mTaskCardView, mTask,
- null, INVALID_STACK_ID));
- }
- } catch (Exception e) {
- Log.e(TAG, v.getContext()
- .getString(R.string.recents_launch_error_message, mTask.title), e);
- }
- }
复制代码 而如何处于DismiaaState呢看一下代码
frameworks/base/packages/SystemUI/src/com/android/systemui/recents/tv/views/TaskCardView.java
- @Override
- public boolean dispatchKeyEvent(KeyEvent event) {
- // Override dispatchKeyEvent() instead of onKeyDown() to prevent warning from ViewRootImpl.
- switch (event.getKeyCode()) {
- case KeyEvent.KEYCODE_DPAD_DOWN : {
- if (!isInDismissState() && event.getAction() == KeyEvent.ACTION_DOWN) {
- setDismissState(true);<font color="#ff0000">//设DismissState = true</font>
- return true;
- }
- break;
- }
- case KeyEvent.KEYCODE_DPAD_UP : {
- if (event.getAction() == KeyEvent.ACTION_DOWN) {
- if (isInDismissState()) {
- setDismissState(false);
- } else {
- ((RecentsTvActivity) getContext()).requestPipControlsFocus();
- }
- }
- return true;
- }
- // Eat right and left key presses when we are in dismiss state
- case KeyEvent.KEYCODE_DPAD_LEFT :
- case KeyEvent.KEYCODE_DPAD_RIGHT : {
- if (isInDismissState()) {
- return true;
- }
- break;
- }
- }
- return super.dispatchKeyEvent(event);
- }
复制代码
所以,很奇怪不知道为啥google这样设计的,但是确实是这样的。后面的话,我会做一下修改,改掉这个问题
|
|