如何制作一个手机桌面宠物?

知乎,中文互联网高质量的问答社区和创作者聚集的原创内容平台,于 2011 年 1 月正式上线,以「让人们更好的分享知识、经验和见解,找到自己的解答」为品牌使命。知乎凭借认真、专业、友善的社区氛围、独特的产品机制以及结构化和易获得的优质内容,聚集了中文互联网科技、商业、影视、时尚、文化等领域最具创造力的人群,已成为综合性、全品类、在诸多领域具有关键影响力的知识分享社区和创作者聚集的原创内容平台,建立起了以社区驱动的内容变现商业模式。

 

iOS目前-20180209来说,桌面宠物是不可能实现的;

Android上面是可以实现的,那么我们就请出知乎的吉祥物 ->

@刘看山 :

1.显示

Android上在桌面上显示悬浮,大体上用的就是Service+WindowManager;

新建一个Service,添加一个WindowManager,设定好布局;

WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); WindowManager.LayoutParams params = new WindowManager.LayoutParams(); params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; params.format = PixelFormat.RGBA_8888; params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE; params.width = petW; params.height = petW; params.x = 0; params.y = 0; elfView.setVisibility(VISIBLE); wm.addView(elfView, params);

刘看山就出现在了桌面上;

2,移动

按照原来在Windows上的经验,一个桌宠,最起码的标准是,拖来拖去,走闹跑跳;

而让悬浮体移动,简单来说只要重新设定坐标轴,更新窗口即可;

params.x =dx; params.y = dy; wm.updateViewLayout(elfView, params);

那么,添加上拖拽动画后

0

当然,拖拽代码是全网通用的TouchListener拖拽;

case MotionEvent.ACTION_DOWN: lastX = (int) event.getRawX(); lastY = (int) event.getRawY(); paramX = params.x; paramY = params.y; break; case MotionEvent.ACTION_MOVE: dx = (int) event.getRawX() - lastX; dy = (int) event.getRawY() - lastY; params.x = paramX + dx; params.y = paramY + dy; wm.updateViewLayout(elfView, params); break;

同理,走路就是新开一个线程,做出出动画的同时,对坐标进行操作;

贴上一个刘看山走路+玩耍的视频吧:

0

3,进阶互动

这里我用的是14年左右,手机360的一个动画效果;

把360的那个小人拉上一个弹弓,发射出去清理缓存那个;

说白了,就是拖拽和移动的结合,捎带一点view的基础动画;

0

当时我还没毕业;

被一个创业公司拉去做苦力;

一个月给1800块;

cto玩手机看见了这个东西;

和我开玩笑说“来,我要这个效果”

我说“你给我一个月1万块我就做”

cto说“你要能做出来,我给你一个月一万”

一个月挣1万,大概是上大学时候的我的人生目标吧;

真怀念那时候;

不像现在,Android变成了过气行业;

人生目标变成了不失业-头;

放一个bug:

0

照例,我在知乎上弄的效果都是开源的,如果对源码感兴趣的同学,可以到

wuyongxiang/ScreenElf​github.com/wuyongxiang/ScreenElf

下载,自己添加功能玩;

如果只想下载刘看山玩玩,可以点这个下载,注意要在手机系统应用设置中,找到ScreenElf,允许开启悬浮窗,要不然什么都看不见

/**

注意,因为应用根本没写界面,所以看起来像是闪退,所以一定要经过截图那三个步骤,因为Android手机现在默认就是不容许应用开悬浮的;

**/

欢迎大家积极给赞+star

其他在知乎上放的Android效果源码:

如何用代码画出一只齿轮?

QQ 未读消息的拖拽动态效果是如何实现的?

QQ上发送么么哒时候,弹出弹跳表情,是如何实现的?

一个人可以 DIY 出什么有意思的东西?

知乎网页登录背景的动画是怎么做出来的?

祥子:【Android源码分享】一个果冻质感弹性控件&高仿MIUI9时钟表盘

祥子:如何用安卓手机当做遥控器控制家里的非智能电器?

郑重声明:部分文章来源于网络,仅作为参考,如果网站中图片和文字侵犯了您的版权,请联系我们处理!

为您推荐