Firefly开源社区

打印 上一主题 下一主题

关于FireFly-RK3399 :Android7.1代码发布和固件更新(2017/5/19)后的问题

741

积分

68

威望

68

贡献

技术大神

Rank: 3Rank: 3

积分
741
QQ
发表于 2017-6-5 16:52:28      楼主
我看了一下代码,这个是google原来的代码就是在这样设计的,很奇怪,那个x的图标并没有做点击监控,他点击响应的是整个taskview
下面是点击时的处理代码
frameworks/base/packages/SystemUI/src/com/android/systemui/recents/tv/views/TaskStackHorizontalViewAdapter.java
  1.         @Override
  2.         public void onClick(View v) {
  3.             try {
  4.                 if (mTaskCardView.isInDismissState()) {<font color="#ff0000">//判断是否处于dismissstate,如处于则removeTask</font>
  5.                     mTaskCardView.startDismissTaskAnimation(
  6.                             getRemoveAtListener(getAdapterPosition(), mTaskCardView.getTask()));
  7.                 } else {<font color="#ff0000">//否则launcherTask</font>
  8.                     EventBus.getDefault().send(new LaunchTvTaskEvent(mTaskCardView, mTask,
  9.                             null, INVALID_STACK_ID));
  10.                 }
  11.             } catch (Exception e) {
  12.                 Log.e(TAG, v.getContext()
  13.                         .getString(R.string.recents_launch_error_message, mTask.title), e);
  14.             }

  15.         }
复制代码
而如何处于DismiaaState呢看一下代码
frameworks/base/packages/SystemUI/src/com/android/systemui/recents/tv/views/TaskCardView.java
  1.     @Override
  2.     public boolean dispatchKeyEvent(KeyEvent event) {
  3.         // Override dispatchKeyEvent() instead of onKeyDown() to prevent warning from ViewRootImpl.
  4.         switch (event.getKeyCode()) {
  5.             case KeyEvent.KEYCODE_DPAD_DOWN : {
  6.                 if (!isInDismissState() && event.getAction() == KeyEvent.ACTION_DOWN) {
  7.                     setDismissState(true);<font color="#ff0000">//设DismissState = true</font>
  8.                     return true;
  9.                 }
  10.                 break;
  11.             }
  12.             case KeyEvent.KEYCODE_DPAD_UP : {
  13.                 if (event.getAction() == KeyEvent.ACTION_DOWN) {
  14.                     if (isInDismissState()) {
  15.                         setDismissState(false);
  16.                     } else {
  17.                         ((RecentsTvActivity) getContext()).requestPipControlsFocus();
  18.                     }
  19.                 }
  20.                 return true;
  21.             }

  22.             // Eat right and left key presses when we are in dismiss state
  23.             case KeyEvent.KEYCODE_DPAD_LEFT :
  24.             case KeyEvent.KEYCODE_DPAD_RIGHT : {
  25.                 if (isInDismissState()) {
  26.                     return true;
  27.                 }
  28.                 break;
  29.             }
  30.         }
  31.         return super.dispatchKeyEvent(event);
  32.     }
复制代码

所以,很奇怪不知道为啥google这样设计的,但是确实是这样的。后面的话,我会做一下修改,改掉这个问题


回复

使用道具 举报

741

积分

68

威望

68

贡献

技术大神

Rank: 3Rank: 3

积分
741
QQ
发表于 2017-6-20 11:50:37      沙发
yfb1991 发表于 2017-6-6 16:39
加油!!真棒!

后来又看了下,这个不是google自带的,是rk后加的,估计是为了tvbox操作的。但是没有考虑触摸操作和鼠标操作的场景
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表