基本使用见Android 通知栏Notification总结一:基本用法
还是引用那张图:
一、使用RemoteViews自定义布局
因为notification所在的进程和应用程序所在的进程不是同一个进程,所以如果notification要使用自定义布局,需要借助RemoteViews来实现,
1.基本用法
布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/id_text"
android:textColor="#000000" />
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:id = "@+id/id_img"/>
</LinearLayout>
代码:
Notification.Builder builder = new Notification.Builder(this);
RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.notification_test);
remoteViews.setTextViewText(R.id.id_text, "这是一个测试");
remoteViews.setImageViewResource(R.id.id_img, R.mipmap.ic_launcher);
builder.setCustomContentView(remoteViews);
Notification notification = builder.build();
RemoteViews的初始化方法接收两个参数,一个是应用的名称,一个是自定义的布局文件id
2.方法属性
setTextViewText(int id,CharSequence text)
设置TextView的文本setImageViewResource(int viewId, int srcId)
设置ImageView的资源setTextViewTextSize(int viewId, int units, float size)
设置字体大小setTextColor(int viewId, @ColorInt int color)
设置字体颜色setImageViewBitmap(int viewId, Bitmap bitmap)
设置ImageView的图片setInt(int viewId, String methodName, int value)
反射调用View对象的参数类型为int的方法setLong(int viewId, String methodName, long value)
反射调用View对象的参数类型为long的方法setBoolean(int viewId, String methodName, boolean value)
反射调用View对象的参数类型为boolean的方法setOnClickPendingIntent(int viewId, PendingIntent pendingIntent)
为View添加单击事件,事件类型只能为PendingIntent.
使用PendingIntent为View添加单击事件示例:
PendingIntent openActivityPendingIntent = PendingIntent.getActivity(this,0,new Intent(this,SecondActivity.class),PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.id_txt,openActivityPendingIntent);
这样在通知栏点击相应控件就会跳转到SecondActivity。
持续更新中……