创建快捷方式,一键清理快捷方式动画实现

 想要实现的功能: 快捷方式图标的位置不同,动画不同,比如快捷方式在左边,动画则是从左到右

1.如何创建快捷方式?

有两种方式:

第一种:需用户手动添加小部件到桌面

1)在AndroidManifest中声明 action = android.intent.action.CREATE_SHORTCUT"的Activity:

2) 在此activity 中设置点击快捷图标需启动的activity(因为从launcher中启动,所以包名类名要写全,类名前要加包名),快捷方式的图标和名称

第二种 :用广播主动添加快捷方式

1)给系统launcher发广播 (需权限 :com.android.launcher.permission.INSTALL_SHORTCUT ),系统接收到广播后添加快捷方式

2)在发广播的activity中设置需启动的activity, 快捷方式图标和名称


2。那如何获取快捷方式图标在桌面的位置呢?

最初,实现点击快捷方式进入主页,log中发现 ActivityManager 打开activity时带有参数:bnds=[216,385][376,585]

从launch源码中可以看到,只有快捷方式点击log中会展示图标的位置,

在点击快捷方式时,laucher会把快捷方式图标的矩形位置通过Intent发送给要启动的activity 使用intent.setSourceBounds

所以我们用intent.getSourceBounds 即可获取到坐标,在坐标的基础上做动画就好了


因为点击快捷方式背景透明,透过透明是桌面,所以加载acitivity方式应该用singleInstance


在最后一个操作是展示快捷方式的时候,如果此时调起手机中正在运行的程序界面,会看到最后一个界面是透明界面,然后点击这个透明界面,会像点击了widget一样有动画出现,这时候要怎么规避不让activity放到最后使用的APP页面呢?

1.使这个activity没有历史,即在Androidmenifest配置中 activity nohistory="true" 发现没用,其实换个思维想,此时快捷方式打开的acitivyt是最后一个 不管是不是透明,他并没有打开另外的activity,所以不算历史

2。有没有可以直接从最近使用中删除的属性 

android:excludeFromRecents="true"




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值