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