首先是一个写通知样式的activity这里只是简单的写了一下
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}" >
<ImageView
android:id="@+id/imageNo"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_marginRight="10dp" />
<TextView
android:id="@+id/titleNo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/imageNo" />
<TextView
android:id="@+id/textNo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/titleNo"
android:layout_toRightOf="@id/imageNo" />
</RelativeLayout>
下面是当出现通知时,用户点击会跳出这个页面
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
<Button
android:id="@+id/button2"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
</LinearLayout>
他的逻辑界面
public class aaActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.aa);
}
}
在主界面写了一个简单的按钮
<pre name="code" class="html"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}" >
<Button
android:id="@+id/btnCustomNotification"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="105dp"
android:layout_marginTop="158dp"
android:text="通知" />
</RelativeLayout>
最后是最重要的主逻辑界面
<pre name="code" class="java">public class MainActivity extends Activity {
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
btn = (Button) findViewById(R.id.btnCustomNotification);
btn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
/*
* 远程试图
*/
RemoteViews contentViews = new RemoteViews(getPackageName(),
R.layout.activity_n);
contentViews.setTextViewText(R.id.textNo, "123");
contentViews.setTextViewText(R.id.titleNo, "456");
/*
* 通知点击事件其中PendingIntent是待处理的intent而
* PendingIntent.FLAG_CANCEL_CURRENT是当有多条推送信息的时候最新的一条点击响应
*/
Intent intent = new Intent(MainActivity.this, aaActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(
MainActivity.this, 0, intent,
PendingIntent.FLAG_CANCEL_CURRENT);
/*
* 需要创建一个Notification对象用来承载通知的内容
* 小图标,使用setSamllIcon()方法设置。
* 标题,使用setContentTitle()方法设置。
* 文本内容,使用setContentText()方法设置。
*/
Notification.Builder mBuilder = new Notification.Builder(
MainActivity.this).setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("My notification")
.setTicker("new message");
mBuilder.setAutoCancel(true);
mBuilder.setContentIntent(pendingIntent);//详细内容的页面
mBuilder.setContent(contentViews);
mBuilder.setAutoCancel(true);//自动取消
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(10, mBuilder.build());// 发送通知
}
});
}
}
这里是简单的实现点击通知按钮,会发出通知,在通知栏点击通知会跳到相应的界面。