三种推送消息的类型,一种是推送的消息直接在状态栏显示,单击没有任何跳转,可以清除。第二种同样在状态栏显示,单击有跳转到另一个界面的效果,像常用APP的消息推送,单击跳转activity,单击跳转后自动清除该推送。第三种就是显示APP正在运行的效果,单击回到APP主界面(也可以设置为跳转到上次记录的界面),该类型的推送不可清除。先看一下demo:
;
直接上代码:MainActivity的JAVA代码:
package com.example.statusbarshow;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;
@SuppressLint("NewApi")
public class MainActivity extends Activity {
final int NOTIFYID_1 = 888; //第一个通知的ID
final int NOTIFYID_2 = 889; //第二个通知的ID
final int NOTIFYID_3 = 886; //第三个通知的ID
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//PermisionUtils.verifyStoragePermissions(this); //获取手机SD卡读取权限
final NotificationManager notificationManager= //获取通知管理器
(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
ImageButton i1=(ImageButton)findViewById(R.id.news1); //获取定义的各个按键
ImageButton i2=(ImageButton)findViewById(R.id.news2);
Button b3=(Button)findViewById(R.id.news3);
Button b4=(Button)findViewById(R.id.clear);
i1.setOnClickListener(new OnClickListener() { //推送第一种状态栏消息类型
@Override
public void onClick(View v) {
Notification.Builder builder1 = new Notification.Builder(MainActivity.this);
builder1.setSmallIcon(R.drawable.advise); //设置图标
builder1.setTicker("新消息");
builder1.setWhen(System.currentTimeMillis()); //发送时间
builder1.setContentTitle("推送消息1"); //设置标题
builder1.setContentText("每天进步一点点就够了,切忌不思进取"); //消息内容
builder1.setDefaults(Notification.DEFAULT_ALL);
Notification notification1 = builder1.build();
notificationManager.notify(NOTIFYID_1, notification1);// 通过通知管理器发送通知
}
});
i2.setOnClickListener(new OnClickListener() { //推送第一种状态栏消息类型
@Override
public void onClick(View v) {
Notification.Builder builder1 = new Notification.Builder(MainActivity.this);
builder1.setSmallIcon(R.drawable.advise1); //设置图标
builder1.setTicker("新消息");
builder1.setWhen(System.currentTimeMillis()); //发送时间
builder1.setContentTitle("推送消息2"); //设置标题
builder1.setContentText("点击查看详情"); //消息内容
builder1.setAutoCancel(true);//打开程序后图标消失
builder1.setDefaults(Notification.DEFAULT_ALL);
Intent intent=new Intent(MainActivity.this,SECOND.class); //设置点击跳转的activity
PendingIntent pendingIntent=PendingIntent.getActivity(
MainActivity.this, 0, intent, 0);
builder1.setContentIntent(pendingIntent);
Notification notification1 = builder1.build();
notificationManager.notify(NOTIFYID_2, notification1);// 通过通知管理器发送通知
}
});
b3.setOnClickListener(new OnClickListener() { //推送第一种状态栏消息类型
@Override
public void onClick(View v) {
Notification.Builder builder1 = new Notification.Builder(MainActivity.this);
builder1.setSmallIcon(R.drawable.advise2); //设置图标
builder1.setTicker("新消息");
builder1.setWhen(System.currentTimeMillis()); //发送时间
builder1.setContentTitle("APP正在运行"); //设置标题
builder1.setContentText("点击打开APP"); //消息内容
builder1.setDefaults(Notification.DEFAULT_ALL);
builder1.setOngoing(true);
Intent intent=new Intent(MainActivity.this,MainActivity.class); //设置点击跳转的activity
PendingIntent pendingIntent=PendingIntent.getActivity(
MainActivity.this, 0, intent, 0);
builder1.setContentIntent(pendingIntent);
Notification notification1 = builder1.build();
notificationManager.notify(NOTIFYID_3, notification1);// 通过通知管理器发送通知
}
});
b4.setOnClickListener(new OnClickListener() { //推送第一种状态栏消息类型
@Override
public void onClick(View v) {
notificationManager.cancelAll();
}
});
}
}
SECOND.JAVA代码:
package com.example.statusbarshow;
import android.app.Activity;
import android.os.Bundle;
public class SECOND extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
}
}
布局文件activity_main代码:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background"
android:stretchColumns="0,3">
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
>
<LinearLayout
android:baselineAligned="false"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:gravity="bottom|center"
android:layout_marginBottom="20dp"
>
<ImageButton
android:id="@+id/news1"
android:layout_width="130dp"
android:layout_height="40dp"
android:background="#0000"
android:layout_marginRight="10dp"
android:src="@drawable/button_1"
android:scaleType="fitXY"/>
<ImageButton
android:id="@+id/news2"
android:layout_width="130dp"
android:layout_height="40dp"
android:background="#0000"
android:src="@drawable/button_2"
android:scaleType="fitXY"
/>
</LinearLayout>
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<LinearLayout
android:baselineAligned="false"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="top|center"
android:orientation="horizontal"
>
<Button
android:id="@+id/news3"
android:layout_width="130dp"
android:layout_height="40dp"
android:text="@string/news3"
android:layout_marginRight="30dp" />
<Button
android:id="@+id/clear"
android:background="#0000"
android:textSize="25dp"
android:layout_width="130dp"
android:layout_height="40dp"
android:text="@string/clear" />
</LinearLayout>
</TableRow>
</TableLayout>
布局文件SECOND代码:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="这是第二种推送消息类型,带有activity跳转的功能!!"
android:textColor="#CC0033" />
</FrameLayout>
单击按钮实现动画效果,通过建立xml文件,android:state_pressed="false"表示没有按下时按钮是加载背景图片news_1,按下按钮时加载图片news_2。图片放在res资源下的drawable下。最后在activity_main里面将imagebutton的背景src链接到该xml文件中即可实现按钮动画效果。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="false"
android:drawable="@drawable/news_1"/>
<item android:state_pressed="true"
android:drawable="@drawable/news_2"/>
</selector>