Notification通知、普通通知、大视图通知、进度条通知, 子线程可以操作时度条、流动进度条通知、自定义通知

package com.example.aa;

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Point;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v4.app.NotificationCompat;
import android.support.v4.app.NotificationCompat.Builder;
import android.util.Log;
import android.view.Display;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.RemoteViews;

/**
 * Object obj = context.getSystemService(Context.静态常量);返回一个系统服务对象 public void
 * test() { Context context = this;
 * 
 * NotificationManager notificationManager = (NotificationManager)
 * context.getSystemService(Context.NOTIFICATION_SERVICE);
 * 
 * LayoutInflater layoutInflater = (LayoutInflater)
 * context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
 * 
 * WindowManager windowManager = (WindowManager)
 * context.getSystemService(Context.WINDOW_SERVICE); Display d1 =
 * windowManager.getDefaultDisplay(); // 获取屏幕宽、高用
 * System.out.println("------------d1---------:"+ d1.getHeight());//高用
 * System.out.println("------------d1---------:"+ d1.getWidth());//幕宽
 * 
 * LocationManager locationManager = (LocationManager)
 * context.getSystemService(Context.LOCATION_SERVICE); }
 */
public class MainActivity extends Activity {
	Builder builder = null;
	NotificationManager manager = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

	private int id1 = 0; // 通知的id
	private int num = 1; // 通知的编号

	public Builder initBuilder(Builder builder) {
		return builder;
	}
/****************************普通通知--标准通知************************************************/
	// 普通通知--标准通知
	public void notification(View v) {
		NotificationCompat.Builder builder = new NotificationCompat.Builder(
				this);

		builder.setSmallIcon(R.drawable.ic_launcher);// 设置小图片,可选,在右下角
		builder.setContentTitle("5 new message");// 设置标题
		builder.setContentText("twwain@android.com");// 设置内容

		builder.setTicker("New message");// 第一次提示消息的时候显示在通知栏上
		builder.setNumber(num++);// 设置通知编号

		Bitmap btm = BitmapFactory.decodeResource(this.getResources(),
				R.drawable.test);
		builder.setLargeIcon(btm);// 设置大图片 在左边

		builder.setAutoCancel(true);// 自己维护通知的消失

		// 构建一个Intent
		Intent intent = new Intent(this, ResultActivity.class);
		intent.putExtra("name", "王光荣");
		/**
		 * 封装一个Intent 用于标识PendingIntent的构造选择:
		 * FLAG_CANCEL_CURRENT:如果构建的PendingIntent已经存在,则取消前一个,重新构建一个。
		 * FLAG_NO_CREATE:如果前一个PendingIntent已经不存在了,将不再构建它。
		 * FLAG_ONE_SHOT:表明这里构建的PendingIntent只能使用一次。
		 * FLAG_UPDATE_CURRENT:如果构建的PendingIntent已经存在,则替换它,常用。
		 */
		PendingIntent resultPendingIntent = PendingIntent.getActivity(this, 0,
				intent, PendingIntent.FLAG_UPDATE_CURRENT);
		// 设置通知主题的意图 可选
		builder.setContentIntent(resultPendingIntent);

		Notification notification = builder.build();// 创建通知

		// 获取通知管理器对象,用于帮助通知的显示,取消等等
		NotificationManager notificationManager = (NotificationManager) this
				.getSystemService(Context.NOTIFICATION_SERVICE);
		/**
		 * 参数1:使用任意整数,表示通知的id, 如果两个通知的id相同,第二个通知会替换第一个通知 参数2: 要被显示的通知对象
		 */
		notificationManager.notify(id1++, notification);// 显示通知
		// notificationManager.cancel(id1);//根据通知id取消通知
	}
/*******************************大视图通知******************************************************/
	// 大视图通知
	public void bignotification(View v) {
		Bitmap btm = BitmapFactory.decodeResource(getResources(),
				R.drawable.test);

		Intent intent = new Intent(MainActivity.this, ResultActivity.class);
		PendingIntent pendingIntent = PendingIntent
				.getActivity(MainActivity.this, 0, intent,
						PendingIntent.FLAG_CANCEL_CURRENT);

		// 创建builder
		NotificationCompat.Builder builder = new NotificationCompat.Builder(
				MainActivity.this);
		// 使用builder设置属性
		builder.setSmallIcon(R.drawable.test1);// 设置小图标
		builder.setLargeIcon(btm);// 设置大图标
		builder.setNumber(13);// 设置编号
		builder.setContentIntent(pendingIntent);// 设置意图
		// builder.setContentTitle("标题");//设置不生效
		// builder.setContentText("内容");//设置不生效

		NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();
		inboxStyle.setBigContentTitle("华清远见");// 大标题,在最上面
		inboxStyle.addLine("中华人民共和国1");
		inboxStyle.addLine("中华人民共和国2");
		inboxStyle.addLine("中华人民共和国3");
		inboxStyle.addLine("中华人民共和国4");
		inboxStyle.addLine("中华人民共和国5");
		inboxStyle.addLine("中华人民共和国6");
		inboxStyle.setSummaryText("www.hqyj.com");// 落脚,在最下面

		// 设置大视图
		builder.setStyle(inboxStyle);

		// 创建通知
		Notification notification = builder.build();

		// 显示通知
		NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
		notificationManager.notify(0, notification);
	}
/*********************************进度条通知, 子线程可以操作时度条*****************************************************/
	// 进度条通知, 子线程可以操作时度条
	public void progressnotification(View v) {
		manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
		// 第一步,创建Builder对象
		builder = new NotificationCompat.Builder(this);
		// 第二步,设置属性
		builder.setSmallIcon(R.drawable.ic_launcher);// 设置小图标,如果不设置大图标,小图标当作大图标使用,而小图标不见了
		builder.setContentTitle("下载图片");// 设置标题
		builder.setContentText("正在下载");// 设置内容
		builder.setAutoCancel(true); // 设置用户自己维护通知的取消, 默认值为true

		new Thread() {
			public void run() {
				for (int i = 0; i <= 100; i++) {
					try {
						Thread.sleep(100);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
					if (i == 100) {
						builder.setContentText("下载完毕");
					}
					builder.setProgress(100, i, false);// 设置进度条,并且总进度为100,当前进度为30, false表示能看到进度
					// 第三步,创建通知
					Notification notification = builder.build();
					// 第四步,显示通知
					manager.notify(0, notification);
				}
			}
		}.start();

	}
/*****************************流动进度条通知***************************************************/
	// 流动进度条通知
	public void cycleprogressnotification(View v) {
		manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
		// 1,创建builder
		builder = new NotificationCompat.Builder(this);
		// 2,使用builder设置属性
		builder.setSmallIcon(R.drawable.ic_launcher);
		builder.setContentTitle("Picture Download");
		builder.setContentText("Download in progress");
		builder.setProgress(0, 0, true);// 设置为true表示流动,看不见时度,所以 0,0不起作用
		manager.notify(0, builder.build());
		// 5秒之后还停止流动
		new Thread(new Runnable() {
			@Override
			public void run() {
				try {
					Thread.sleep(5000);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				builder.setProgress(100, 100, false);// 设置为false,表示刻度
				builder.setContentText("下载完毕");
				manager.notify(0, builder.build());
			}
		}).start();
	}
/****************************自定义通知********************************************************/
	// 自定义通知
	public void mySelfnotification(View v) {
		/**创建自定界面
		 * 参数1:是activity的包名, 可以使用activity.getPackageName()得到com.example.aa
		 * 参数2:布局文件
		 */
		RemoteViews contentViews = new RemoteViews("com.example.aa", R.layout.custom_notifition);
		// 通过控件的Id设置属性
		contentViews.setImageViewResource(R.id.imageView, R.drawable.test);
		contentViews.setTextViewText(R.id.button, "钱");
		contentViews.setTextViewText(R.id.textView, "又得了5分钱");

		// 封装了一个发送广播的意图
		Intent intentx = new Intent("broadcast.btn");//字符串表示广播类
		PendingIntent intentpi = PendingIntent.getBroadcast(this, 1, intentx,PendingIntent.FLAG_UPDATE_CURRENT);
		contentViews.setOnClickPendingIntent(R.id.button, intentpi);// 点击按钮触发意图,意图可以是广播意图,也可以是跳转Activity的意图

		Intent intent = new Intent(this, ResultActivity.class);
		PendingIntent pendingIntent = PendingIntent
				.getActivity(MainActivity.this, 0, intent,
						PendingIntent.FLAG_CANCEL_CURRENT);

		//1,创建Builder对象
		NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
		//2,设置属性
		builder.setSmallIcon(R.drawable.ic_launcher);//设置小图标,只出现在新通知来后的提示
		builder.setContentTitle("My notification");// 设置了无效,不设报错
		builder.setTicker("new message");//新通知来后的显示信息
		builder.setAutoCancel(true);
		
		builder.setContentIntent(pendingIntent);//设置意图,意图可以是广播意图,也可以是跳转Activity的意图
		builder.setContent(contentViews);// 设置自定义界面

		NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
		mNotificationManager.notify(10, builder.build());
	}
}
















<pre name="code" class="java">package com.example.aa;

import android.app.Activity;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v4.app.NotificationCompat;
import android.view.View;
import android.widget.Button;

public class ResultActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		Intent intent = this.getIntent();
		String name = intent.getStringExtra("name");//王光荣
		Button btn = new Button(this);
		btn.setText(name);
		setContentView(btn);
	}
}


 
<pre name="code" class="html"><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.aa.MainActivity"
    tools:ignore="MergeRootFrame" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="notification"
        android:text="普通通知" />

    <Button
        android:onClick="bignotification"
        android:id="@+id/notification2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="大视图通知" />

    <Button
        android:onClick="progressnotification"
        android:id="@+id/progressnotification"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="条形进度条通知" />

    <Button
        android:onClick="cycleprogressnotification"
        android:id="@+id/notification4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="流动进度条通知" />

    <Button
        android:onClick="mySelfnotification"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="自定义进度条通知" />

</LinearLayout>

 
<pre name="code" class="html"><RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
	android:layout_width="match_parent"
	android:layout_height="match_parent"
	>
		<ImageView
		android:id="@+id/imageView"
		android:layout_width="wrap_content"
		android:layout_height="match_parent"
		android:layout_alignParentLeft="true"
		/>
		
		<Button
		android:id="@+id/button"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:layout_alignParentTop="true"
		android:layout_toRightOf="@id/imageView" />
		
		<TextView
		android:id="@+id/textView"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:layout_below="@id/button"
		android:layout_toRightOf="@id/imageView" />

</RelativeLayout>


 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值