Android Launcher研究之桌面图标重命名

本文详细介绍了如何在Android设备上实现桌面应用图标重命名的功能。通过解析长按事件,创建对话框获取新名称,修改桌面图标名称,并保存数据库更新信息。最后,确保加载布局时正确加载更新后的图标信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  闲话少叙,目前原生的Launcher,只有桌面上的文件夹支持重命名。第三方软件如ADW,GOLauncher等长按桌面图标之后在弹出的popup框中也有了重命名选项。本文意在给出此功能实现的demo,如果你有不同的观点,也请多多指教。

1.获取桌面图标的信息。
  当我们长按桌面图标时,会执行Workspace.java中的方法 startDrag(CellLayout.CellInfo cellInfo),其参数cellInfo即为操作对象。

  过程分析:添加到桌面上的app图标,数组会保存其相应信息CellInfo。长按时会响应手指移动的onInterceptTouchEvent事件,并根据移动时的坐标来与数组中的app的信息比较,若手指移动到app的桌面有效区域,app长按事件响应。

View child = cellInfo.cell;
ItemInfo info = (ItemInfo)child.getTag();  //Get the app Info

2.创建能够重命名的对话框。
对话框的作用是为了记录输入,并将其作为该图标新的名字。
EidtName = mEditInput.getText().toString(); //Get the new name 

3.修改桌面图标
桌面上的app,即快捷方式,从安装包获取得Icon和Title并将其显示于桌面。
修改信息:
ShortcutInfo mShortcutInfo = (ShortcutInfo)info;    
mShortcutInfo.setTitle(EidtName); //Set ShortcutInfo Title

修改名字:
View v = mWorkspace.getViewForTag(mShortcutInfo); //Get View for ShortcutInfo
mShortcutInfo.title = EidtName;
((BubbleTextView)v).setText(EidtName); //Set View Title

补充:google提供了修改桌面快捷方式图标以及名字的接口,本文只做修改名字的分析。

4.保存数据库
LauncherModel.updateItemInDatabase(Launcher.this,mShortcutInfo);

5.重新加载
在加载桌面布局时,调用方法LauncherModel.loadWorkspace()中获取app信息getShortcutInfo();
其默认是先从包管理器中获得,而非从数据库中加载。这里要改变其加载顺序。 

        // from the db
        if (c != null) {
            info.title =  c.getString(titleIndex);
        }

        // from the resource
        if (info.title == null) {
            if (resolveInfo != null) {
                info.title = resolveInfo.activityInfo.loadLabel(manager);
            }
        }

关键代码已全部贴出,欢迎各位多多指教!转载请注明作者和出处,谢谢!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值