如下图
问题1:关闭不了打开过的应用,点击应用严重的拖动情况。
问题2:少了关闭最下控制按键的功能,想全屏显示都不可以了。
希望解决一下!谢谢!
我看了一下代码,这个是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()) {//判断是否处于dismissstate,如处于则removeTask
mTaskCardView.startDismissTaskAnimation(
getRemoveAtListener(getAdapterPosition(), mTaskCardView.getTask()));
} else {//否则launcherTask
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);//设DismissState = true
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这样设计的,但是确实是这样的。后面的话,我会做一下修改,改掉这个问题
后来又看了下,这个不是google自带的,是rk后加的,估计是为了tvbox操作的。但是没有考虑触摸操作和鼠标操作的场景
修改如下,以下是Git修改记录:
diff --git
a/frameworks/base/packages/SystemUI/src/com/android/systemui/recents/tv/views/TaskStackHorizontalViewAdapter.java
b/frameworks/base/pa
index 236d077..8b2f31b 100644
--- a/frameworks/base/packages/SystemUI/src/com/android/systemui/recents/tv/views/TaskStackHorizontalViewAdapter.java
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/recents/tv/views/TaskStackHorizontalViewAdapter.java
@@ -21,6 +21,7 @@ import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.ImageView;
import com.android.systemui.R;
import com.android.systemui.recents.Recents;
@@ -36,6 +37,7 @@ import java.util.List;
import static android.app.ActivityManager.StackId.INVALID_STACK_ID;
+
public class TaskStackHorizontalViewAdapter extends
RecyclerView.Adapter{
@@ -47,31 +49,46 @@ public class TaskStackHorizontalViewAdapter extends
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
private TaskCardView mTaskCardView;
private Task mTask;
+ private ImageView dismissIcon;
+
public ViewHolder(View v) {
super(v);
mTaskCardView = (TaskCardView) v;
+ dismissIcon = (ImageView) v.findViewById(R.id.dismiss_icon);
}
public void init(Task task) {
mTaskCardView.init(task);
mTask = task;
mTaskCardView.setOnClickListener(this);
+ dismissIcon.setOnClickListener(this);
}
@Override
public void onClick(View v) {
- try {
- if (mTaskCardView.isInDismissState()) {
- mTaskCardView.startDismissTaskAnimation(
- getRemoveAtListener(getAdapterPosition(), mTaskCardView.getTask()));
- } else {
- 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);
- }
+ if(v == mTaskCardView) { // 遥控器选择X按钮,modify by ZZP
+ try {
+ if (mTaskCardView.isInDismissState()) {
+ mTaskCardView.startDismissTaskAnimation(
+ getRemoveAtListener(getAdapterPosition(), mTaskCardView.getTask()));
+ } else {
+ 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);
+ }
+ } else if(v == dismissIcon){ // 鼠标点击X按钮
+ try{
+ mTaskCardView.startDismissTaskAnimation(
+ getRemoveAtListener(getAdapterPosition(), mTaskCardView.getTask()));
+ } catch(Exception e) {
+ Log.e(TAG, v.getContext()
+ .getString(R.string.recents_launch_error_message, mTask.title), e);
+ }
+ }
+
}
有奖活动 | |
---|---|
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
多组DCTODC电源方案被打赏50分 | |
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
新手必看!C语言精华知识:表驱动法被打赏50分 | |
【我踩过的那些坑】杜绑线问题被打赏50分 | |
【我踩过的那些坑】STM32的硬件通讯调试过程的“坑”被打赏50分 | |
【我踩过的那些坑】晶振使用的问题被打赏100分 | |
【我踩过的那些坑】电感选型错误导致的处理器连接不上被打赏50分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 | |
【我踩过的那些坑】DRC使用位置错误导致的问题被打赏100分 | |
我踩过的那些坑之混合OTL功放与落地音箱被打赏50分 |