像QQ把联系人头像添加到桌面并显示消息个数的效果:bubbles-for-android
jopen
9年前
Bubbles for Android是一个Android库,提供类似QQ那样可以把联系人头像添加到桌面并显示消息个数的效果。
使用说明:
配置项目的依赖
在build.gradle文件中添加依赖。
dependencies { ... compile 'com.txusballesteros:bubbles:1.1' }
配置AndroidManifest
在AndroidManifest.xml 文件中添加下面的代码
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.txusballesteros.bubbles.app" > <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <application ...> ... <service android:name="com.txusballesteros.bubbles.BubblesService" android:enabled="true" android:exported="false" /> </application> </manifest>
添加第一个Bubble
构建Bubble layout,记住,第一个view必须是BubbleLayout
<com.txusballesteros.bubbles.BubbleLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ImageView android:id="@+id/avatar" android:layout_width="70dp" android:layout_height="70dp" android:layout_gravity="center" android:background="@drawable/profile_decorator" android:src="@drawable/profile" android:scaleType="centerCrop"/> </com.txusballesteros.bubbles.BubbleLayout>
创建BubblesManager实例
private BubblesManager bubblesManager; @Override protected void onCreate(Bundle savedInstanceState) { bubblesManager = new BubblesManager.Builder(this) .build(); bubblesManager.initialize(); ... } @Override protected void onDestroy() { bubblesManager.recycle(); ... }
把Bubble依附到窗口。
BubbleLayout bubbleView = (BubbleLayout)LayoutInflater .from(MainActivity.this).inflate(R.layout.bubble_layout, null); bubblesManager.addBubble(bubbleView, 60, 20);
配置bubbles垃圾桶
如果你想用一个垃圾桶来去除屏幕上的bubbles,你可以配置它的布局。
定义垃圾桶的布局:
<ImageView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="20dp" android:src="@mipmap/bubble_trash_background" android:layout_gravity="bottom|center_horizontal" />
利用BubblesManager builder来配置垃圾桶布局
private BubblesManager bubblesManager; @Override protected void onCreate(Bundle savedInstanceState) { bubblesManager = new BubblesManager.Builder(this) .setTrashLayout(R.layout.bubble_trash_layout) .build(); bubblesManager.initialize(); ... }