立波教你做一键清理内存桌面快捷方式动画:图解金山电池医生
来源:互联网 发布:信达证券软件下载 编辑:程序博客网 时间:2024/05/17 09:04
大家用户一些一键清理内存的软件,会发现点击桌面上的“快速清理”快捷方式,就会播放一个动画,然后提示你清理了多少内存和进程,看起来挺酷的,不过这样子最大好处让用户减少了2次不必要的操作:点击执行清理操作,退出软件操作。
我们今天就拿金山电池医生做图解分析:
你用过金山电池医生的话,它会在第一次打开软件的时候,在你手机桌面上流氓地创建一个“快速省电”的快捷方式,如果你想一键清理进程,点它就可以。
起初,我以为这玩意是个widget,但是想想不对,那么搞没必要;当我真的要添加“窗口小部件”的时候,发现了玄机:
你仔细看会发现,快捷方式的图标和播放动画的图片错位了,哈哈,你是不是想说,这不就是骗小孩的把戏吗?
没错,其实就是个障眼法:当用户点击快捷方式的时候,实际上启动了快捷方式指向的activity,只不过这个activity是一个dialog风格,在里面播放一个动画而已,
当执行完清理内存的操作,动画结束,toast结果信息给用户,然后自己finish。
详细的做法如下:
1、现在AndroidManifest.xml里声明一个 activty,也是快捷方式要启动的窗体:
<activity android:name=".onekey.OneKeyActivity" android:excludeFromRecents="true" android:exported="true" android:icon="@drawable/shortcut_onekey" android:label="@string/shortcut_onekey" android:taskAffinity="com.souapp.screenlockmanager" android:theme="@android:style/Theme.Translucent.NoTitleBar" > <intent-filter> <action android:name="android.intent.category.MAIN" /> <action android:name="android.intent.action.CREATE_SHORTCUT" /> </intent-filter> </activity>
2、你的程序如何创建快捷方式,这里就不写了
3、简单说一下OneKeyActivity
在layout下创建一个布局文件:shortcut_onekey.xml
<?xml version="1.0" encoding="UTF-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/main" android:layout_width="fill_parent" android:layout_height="fill_parent" > <FrameLayout android:id="@+id/anim_layout" android:layout_width="60.0dip" android:layout_height="60.0dip" android:background="@drawable/shortcut_onekey_bg" android:visibility="invisible" > <ImageView android:id="@+id/anim_image" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/shortcut_onekey_rotate" android:visibility="invisible" /> <ImageView android:id="@+id/cover_image" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/shortcut_onekey_cover" android:visibility="visible" /> </FrameLayout></RelativeLayout>
其实这个布局文件就是堆放了几个图片而已
然后动画效果,需要在anim目录下创建shortcut_onekey.xml
<?xml version="1.0" encoding="UTF-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" > <rotate android:duration="1200" android:fromDegrees="0.0" android:pivotX="50.0%" android:pivotY="50.0%" android:toDegrees="1440.0" /></set>
下面是OneKeyActivity的主要代码:
@Override public void onCreate(Bundle bundle) { super.onCreate(bundle); Intent intent = getIntent(); setContentView(R.layout.shortcut_onekey); bg = (FrameLayout)findViewById(R.id.anim_layout); Rect rect = intent.getSourceBounds(); if(rect != null) {//int i = getResources().getDimensionPixelSize(0x7f0b001d); int i=20; int j = rect.left + rect.width() / 2; int k = i + rect.top; android.widget.RelativeLayout.LayoutParams layoutparams = (android.widget.RelativeLayout.LayoutParams)bg.getLayoutParams(); layoutparams.leftMargin = j - layoutparams.width / 2; layoutparams.topMargin = k - layoutparams.height / 2; bg.setLayoutParams(layoutparams); } play(this); mHandler.sendEmptyMessageDelayed(1, 1000); } public static void play(OneKeyActivity onekeyactivity) { onekeyactivity.bg.setVisibility(0); ImageView imageview = (ImageView)onekeyactivity.findViewById(R.id.anim_image); imageview.setVisibility(0); imageview.startAnimation(AnimationUtils.loadAnimation(onekeyactivity, R.anim.shortcut_onekey)); } private Handler mHandler = new Handler() {public void handleMessage(Message msg) {Toast.makeText(getApplicationContext(), "杀掉N多个进程", Toast.LENGTH_SHORT).show();if (1 == msg.what)finish(); // 动画播放结束,结束我们的Activity界面}};
整体而言,是比较简单的;但是这种效果的设计,我觉得不是程序员和美工能想出来的,应该是产品经理这种比较贴近于用户使用角度,提出类似的使用需求来;看来干啥都不容易,特别是做APP不赚钱,还要想方设法改善用户体验,得到用户的使用认可,也只有大公司有这个资源,有闲工夫养着一批人这么玩。
- 立波教你做一键清理内存桌面快捷方式动画:图解金山电池医生
- 高仿金山《电池医生》首页一键省电UI动画效果
- [Android开发实战]金山清理大师(猎豹清理大师)一键加速快捷方式动画实现
- 点心省电、省电宝、金山电池医生对比评测
- 电池医生专业版充电时小点旋转动画
- 创建快捷方式,一键清理快捷方式动画实现
- Android 类似《金山电池医生》里的那些电量时间是如何计算的?具体看图
- 教你创建qq好友桌面快捷方式
- 教你创建qq好友桌面快捷方式
- iOS5开发:从程序里直接跳转到设置项的实现和代码分享(类似于金山电池医生功能,iOS5有效)
- iOS5开发:从程序里直接跳转到设置项的实现和代码分享(类似于金山电池医生功能,iOS5有效)
- 桌面快捷方式
- 桌面快捷方式
- 桌面快捷方式
- 桌面快捷方式
- 实现类似金山点击首页内存清理后跳转到内存页面效果
- Android中为你的应用程序添加桌面快捷方式
- Android为你的应用程序添加桌面快捷方式
- inet_aton和inet_network和inet_addr三者比较
- plsql developer打开字段值出现无效的窗口句柄解决方法
- android之handler 传送非原生类数据
- java多线程 sleep()和wait()的区别
- Linux使用静态库
- 立波教你做一键清理内存桌面快捷方式动画:图解金山电池医生
- Axis2创建WebService实例
- ubuntn下串口工具minicom使用
- 走进WPF系列学习之二 如何用WPF绘制与配置2D图形界面
- android中开机启动服务案例
- Attach函数的讲解
- 为什么我们程序员难晋升
- Oracle如何创建用户权限
- 三种纯CSS实现三角形的方法