老规矩先看需求:在最近任务上面添加锁定功能,基于安卓7.0的源码,效果图在最后
分析移除任务的操作有哪些?
1.点击“X”按钮
2.点击“全部清除”
3.左右滑动
好啦!知道那里可以移除,在哪里修改就好了
首先你要知道最近任务在哪个包下面,不卖关子,告诉你
在frameworks\base\packages\SystemUI文件夹下,包名是com.android.systemui
上来二话不说先添加一个bool值再说,是为了多版本适配
具体可以参考 Mr.Nubility进阶记——安卓系统开发之多版本适配 这篇文章
接下来要增加锁 我们需要先找到控件所在的地方,下面提供两种方法
1.打开String.xml文件,搜索“全部清除”,然后拿到id,全局搜索看哪里用到的
2.打开AS->tools->Android->Android Device Monitor,点击界面上你要找的按钮,你想要什么自己拿就好了
通过上述两种方法可以找到布局文件recents_task_view_header.xml,在后面添加一个ImageView就好了
至于锁的图片,有美工的找美工要,没有美工的,找我要哈哈,网址如下
阿里巴巴的http://iconfont.cn/?utm_source=androiddevtools&utm_medium=website
布局画好了,开始逻辑吧,一步一步来不着急
根据布局里的ID 我们可以轻松找到TaskViewHeader.java,然后先添加imageview自身的逻辑
为了保证代码的可读性,我们尽量按照源码的方式写,只写关键代码
protected void onFinishInflate() { mFivLock = (FixedSizeImageView) findViewById(R.id.fiv_lock);}
public void bindToTask(Task t, boolean touchExplorationEnabled, boolean disabledInSafeMode) {
...//判断是否显示lock
if (getResources().getBoolean(com.android.systemui.R.bool.enable_lock_recent_task)) {
//设置Tag共点击时图标切换使用
mFivLock.setTag(Prefs.getBoolean(mContext, t.title, false) ? LOCK : LOCK_OFF);
mFivLock.setVisibility(View.VISIBLE);
mFivLock.setOnClickListener(this);
}
}
public void onTaskDataLoaded() {
mFivLock.setImageResource(Prefs.getBoolean(mContext, mTask.title, false) ? R.drawable.lock : R.drawable.lock_off);
}
public void unbindFromTask(boolean touchExplorationEnabled) {
mTask = null;
mFivLock.setImageDrawable(null);
if (touchExplorationEnabled) {

本文详细介绍了如何在Android 7.0的SystemUI中为最近任务添加锁定功能,包括移除任务的各种操作,如点击X、全部清除、滑动等。涉及代码实现、布局调整和逻辑处理,以及如何利用SharedPreferences存储任务状态。
最低0.47元/天 解锁文章
1891

被折叠的 条评论
为什么被折叠?



