4

我知道這已經在StackOverflow上被問過很多次了,但我很着迷Facebook Messenger如何繪製查詢頭。Facebook Messenger如何繪製聊天頭? (Android)

我按照這個tutorial放置一個ImageView作爲覆蓋。然而,拖動它周圍是呆滯,不像Chatheads顯示非常流暢的動畫。

打開「開發人員選項」中的「顯示GPU視圖更新」選項會在拖動查詢頭時閃爍屏幕。但是,拖動我的ImageView不會觸發任何閃爍。

這裏有一個小截屏:https://dl.dropboxusercontent.com/u/13595927/temp/TRIM_20140225_134543.mp4

我試過層類型設置爲LAYER_TYPE_SOFTWARE,但它並沒有改變任何東西。我還有什麼遺漏?

回答

0

這裏是我的簡單的解決辦法: 1)創建服務(不要忘記將其添加的Manifest.xml)。

2)添加ImageView(或其他視圖),你想在你的窗口上繪製。您必須通過初始化LayoutParams來精確指定屏幕上的位置。

3)將OnTouchListener添加到要移動的視圖中,然後在MotionEvent.ACTION_UP中進行計算(這是當您放下視圖時),必須將其從屏幕上移除時(在我的情況下,當弄皺的紙張位於回收站)。

4)不要忘記添加你的Manifest。XML中的下面的代碼片段:

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> 

5)不要忘記刪除所有你已經在你的服務吸入的onDestroy()的觀點:

@Override 
public void onDestroy() { 
    super.onDestroy(); 

    // remove views on destroy! 
    if (ivCrumpledPaper != null) { 
     mWindowManager.removeView(ivCrumpledPaper); 
     ivCrumpledPaper = null; 
    } 

    if (ivRecycleBin != null) { 
     mWindowManager.removeView(ivRecycleBin); 
     ivRecycleBin = null; 
    } 
} 

6)給你的結果:

Dismiss message

7)我創建了一個博客帖子包含更多細節和完整的代碼 - here

+0

對不起,但是這種技術甚至不是很接近Facebook的實施順利:) – Saket