一、在布局文件里布局文件activity_main.xml布局文件android
代码安全
<LinearLayout 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"
android:orientation="vertical" >ide
<Button
android:id="@+id/btn_simpleText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="简单文本的通知"
android:onClick="notifySimpleText"/>
<Button
android:id="@+id/btn_progress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="进度通知"
android:onClick="notifyProgress"/>
<Button
android:id="@+id/btn_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="列表通知"
android:onClick="notifyList"/>
<Button
android:id="@+id/btn_bigimage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="大图标通知"
android:onClick="notifyBigImage"/>布局
</LinearLayout>
ui
------------------------------------this
二、在MainActivity 类里 实现通知的基本操做线程
代码code
public class MainActivity extends Activity {xml
private NotificationManager notifmg;对象
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 系统的 通知管理器
notifmg = (NotificationManager) getSystemService(Service.NOTIFICATION_SERVICE);
}
=========================
// 简单文本的通知
public void notifySimpleText(View view) {
// 建立一个通知
NotificationCompat.Builder builder = new NotificationCompat.Builder(
this);
// 设置通知的 一些属性
builder.setSmallIcon(R.drawable.ic_launcher)// 设置通知小图标
.setContentTitle("消息提示") // 设置标题
.setContentText("注意:明天有强风,请注意安全")// 设置通知文本内容
// 不断滚动该内容
/*.setTicker(
"注意:明天有强风,请注意安全!注意:明天有强风,请注意安全注意:明天有强风,请注意安全注意:明天有强风,请注意安全注意:明天有强风,请注意安全")*/
// 设置通知的声音和 震动
.setDefaults(
Notification.DEFAULT_SOUND
| Notification.DEFAULT_VIBRATE)
// 第二个参数 -- 响应码
// 第三个参数 -- Intent
.setContentIntent(
PendingIntent.getActivity(this, 100, new Intent(
Intent.ACTION_CALL, Uri.parse("tel:10086")),
PendingIntent.FLAG_ONE_SHOT));
// 启动通知
// 第一个参数 -- id
// 第二个参数 -- 要启动的通知对象.build方法
notifmg.notify(1, builder.build());
}
效果图示例
======================
//进度通知 -- 有2个通知 -- 一、下载进度通知
// 二、下完完成通知
public void notifyProgress(View view){
//开辟一个线程
new Thread(new Runnable() {
@Override
public void run() {
//建立一个 通知
NotificationCompat.Builder builder = new NotificationCompat.Builder(MainActivity.this);
builder.setSmallIcon(R.drawable.ic_launcher)//设置通知小图标
.setContentTitle("消息提示")
.setContentText("正在下载...");
for(int i = 0;i<100;i++){
builder.setProgress(100, i, false);
notifmg.notify(2,builder.build());//启动通知
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//下载完后 取消 该通知
notifmg.cancel(2);
//从新new一个通知
builder = new NotificationCompat.Builder(MainActivity.this);
//注意: 必定要有setSmallIcon 否则 该 通知 看不见
builder.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("消息提示")
.setContentText("下载完成");
notifmg.notify(3,builder.build());
}
}).start();
}
效果图示例
======================================================
//列表通知
public void notifyList(View view){
//建立一个通知
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("消息提示");
//建立一个类型
NotificationCompat.InboxStyle style = new NotificationCompat.InboxStyle();
style.addLine("哈哈哈");
style.addLine("aaaaaaaa");
style.addLine("呜呜呜呜");
//设置通知的类型
builder.setStyle(style);
notifmg.notify(4,builder.build());
}
效果图示例
====================================================
//海报等大图通知
public void notifyBigImage(View view){
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("消息提示");
//建立一个类型
NotificationCompat.BigPictureStyle bps = new NotificationCompat.BigPictureStyle();
//第二个参数放 提示的图片
bps.bigLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher));
//第一个参数 -- 使用Bitmap工厂把图片资源转换成Bitmap类型
//第二个参数 -- 要推送的海报等大图
bps.bigPicture(BitmapFactory.decodeResource(getResources(), R.drawable.xxx));
builder.setStyle(bps);//设置成大图标的类型
notifmg.notify(5,builder.build());//启动通知
}
}
效果图示例