Mr.Alright---安卓N系统最近任务锁定功能实现

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

老规矩先看需求:在最近任务上面添加锁定功能,基于安卓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) {
  
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值