如何製作一個手機桌面寵物?


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);

那麼,添加上拖拽動畫後

當然,拖拽代碼是全網通用的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;

同理,走路就是新開一個線程,做出齣動畫的同時,對坐標進行操作;

貼上一個劉看山走路+玩耍的視頻吧:

3,進階互動

這裡我用的是14年左右,手機360的一個動畫效果;

把360的那個小人拉上一個彈弓,發射出去清理緩存那個;

說白了,就是拖拽和移動的結合,捎帶一點view的基礎動畫;

當時我還沒畢業;

被一個創業公司拉去做苦力;

一個月給1800塊;

cto玩手機看見了這個東西;

和我開玩笑說「來,我要這個效果」

我說「你給我一個月1萬塊我就做」

cto說「你要能做出來,我給你一個月一萬」

一個月掙1萬,大概是上大學時候的我的人生目標吧;

真懷念那時候;

不像現在,Android變成了過氣行業;

人生目標變成了不失業(狗頭);

放一個bug:

照例,我在知乎上弄的效果都是開源的,如果對源碼感興趣的同學,可以到

wuyongxiang/ScreenElf?

github.com圖標

下載,自己添加功能玩;

如果只想下載劉看山玩玩,可以點這個下載,注意要在手機系統應用設置中,找到ScreenElf,允許開啟懸浮窗,要不然什麼都看不見

/**

注意,因為應用根本沒寫界面,所以看起來像是閃退,所以一定要經過截圖那三個步驟,因為Android手機現在默認就是不容許應用開懸浮的;

**/

歡迎大家積極給贊+star

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

如何用代碼畫出一隻齒輪?

QQ 未讀消息的拖拽動態效果是如何實現的?

QQ上發送么么噠時候,彈出彈跳錶情,是如何實現的?

一個人可以 DIY 出什麼有意思的東西?

知乎網頁登錄背景的動畫是怎麼做出來的?

祥子:【Android源碼分享】一個果凍質感彈性控制項高仿MIUI9時鐘錶盤

祥子:如何用安卓手機當做遙控器控制家裡的非智能電器?


推薦閱讀:

美國雪山Natural Balance特級低卡配方成犬糧全面評測!
從小開始養金毛是一種什麼體驗(一)
吸貓大會:布偶貓酷貝
專業學習培訓與業餘學習有什麼不同
078.與喵共舞39~再會小兔子

TAG:編程 | iOS開發 | Android開發 | 寵物 |