从零开始学android<Notification通知.四十四.>

从零开始学android<Notification通知.四十四.>在android中有时会在主界面上收到某些应用的推送,有的可以包含图片,声音或者震动效果,当点击这些提示时,有时还可以进入到发送提示的的应用。这些提示的推送就是通知,当然通知早根本上也是你一种服务。首先想要使用通知就必须使用到Notification.Builder和NotificationManager这两个类使用Notification.Builder来取

大家好,又见面了,我是你们的朋友全栈君。

在android中有时会在主界面上收到某些应用的推送,有的可以包含图片,声音或者震动效果,当点击这些提示时,有时还可以进入到发送提示的的应用。

这些提示的推送就是通知,当然通知早根本上也是你一种服务。

首先想要使用通知就必须使用到Notification.Builder 和NotificationManager这两个类

使用Notification.Builder来取得Notification对象,使用NotificationManager来取得操作通知的对象

当然,我们也可以使用RemoteViews来获得自定义View来创建自定义的通知

接下来就让我们一起用例子来学习通知的使用吧

主界面xml

<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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="15dp"
        android:text="原始通知" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/button1"
        android:layout_below="@+id/button1"
        android:layout_marginTop="53dp"
        android:text="自定通知" />

</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" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=" 主界面哦"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</LinearLayout>

自定义通知界面

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/b12" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/imageView1"
        android:text="大学橙色预警"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView1"
        android:layout_toRightOf="@+id/imageView1"
        android:text="部分地区降雨达到500ml" />

</RelativeLayout>

主文件

package com.example.notification1;

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.widget.Button;
import android.widget.RemoteViews;

public class MainActivity extends Activity {
	private Button button1, button2;
	private Notification.Builder builder;
	private NotificationManager manager;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		button1 = (Button) this.findViewById(R.id.button1);
		button2 = (Button) this.findViewById(R.id.button2);
		builder = new Notification.Builder(this);// 创建一个通知设置
		manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

		button1.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				PendingIntent pendingIntent = PendingIntent.getActivity(
						MainActivity.this, 0, new Intent(MainActivity.this,
								Main.class), 0);// 获得pendingIntent意图
				builder.setContentIntent(pendingIntent);
				builder.setSmallIcon(R.drawable.b12);
				builder.setTicker("您有新通知");
				builder.setContentTitle("降雨橙色预警");
				builder.setContentText("下午5时降雨将会达到500ml,请市民注意防范");
				builder.setContentInfo("暴雨,大风");
				builder.setSubText("本月底7次大雨");
				builder.setDefaults(Notification.DEFAULT_SOUND);// 设置默认提示生啊
				long[] vibrate = { 100l, 1000l, 100l, 1000l, 10l, 1000l };// 设置震动的频率
				builder.setVibrate(vibrate);// 设置自定义震动
				Notification notification = builder.build();
				manager.notify(1000, notification);// 开启通知
			}
		});
//自定义通知
		button2.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				RemoteViews contentRemoteViews = new RemoteViews(
						getPackageName(), R.layout.custom);// 获取自定义的layout
				Intent intent = new Intent(MainActivity.this, Main.class);
				PendingIntent conPendingIntent = PendingIntent.getActivity(
						MainActivity.this, 0, intent, 0);
				builder.setContent(contentRemoteViews);
				builder.setContentIntent(conPendingIntent);
				Notification notification = builder.build();
				manager.notify(1001, notification);
			}
		});
	}

}

通知界面JAVA文件

package com.example.notification1;

import android.app.Activity;
import android.os.Bundle;

public class Main extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
	// TODO Auto-generated method stub
	super.onCreate(savedInstanceState);
	super.setContentView(R.layout.main);
}
}


从零开始学android<Notification通知.四十四.>

从零开始学android<Notification通知.四十四.>

点击通知

从零开始学android<Notification通知.四十四.>

点击自定义通知

从零开始学android<Notification通知.四十四.>

通过本节的学习,希望读者能够掌握原始通知的使用和自定义通知的配置和使用。

下节预报:BroadCast广播

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149348.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • sqlyog安装步骤_sqlyog安装教程

    sqlyog安装步骤_sqlyog安装教程百度网盘账号(QQ账号):374879539QQ密码:fjl12345进去下载SQLyog的安装包就可以了用完之后及得给我的博客点个赞和关注哦!

    2022年9月24日
    0
  • linux查看并杀死进程_ubuntu查看进程命令

    linux查看并杀死进程_ubuntu查看进程命令今天在netbeans中关闭webrick时,发现没有关闭掉,打入localhost:3000依然显示页面,发现无法从nb中再次关闭只有进入ubuntu的进程下关闭查看进程:1,ps-e命令2,feng@feng:~$sudonetstat-antupActiveInternetconnections(serversandestablished)ProtoRecv-QSe…

    2022年9月21日
    0
  • 如何下载离线地图数据(支持谷歌、百度、高德等所有地图源)

    下载离线地图数据(支持谷歌、百度、高德等所有地图源)发布时间:2019-03-12版权:离线地图分为两种:一种叫“金字塔瓦片”数据,一种叫“矢量地图数据”。我们看的在线地图比如,百度,谷歌,高德等等网页上的地图,都是金字塔瓦片;另外一种是手机上用来导航的,比如高德地图APP,也可以下载离线地图数据,这个就是矢量的。卫星影像地图都是金字塔瓦片,无矢量数据。…

    2022年4月5日
    455
  • 爆肝两万字,我爷爷都看的懂的《栈和队列》,建议各位观众姥爷先收藏

    爆肝两万字,我爷爷都看的懂的《栈和队列》,建议各位观众姥爷先收藏文章目录一、栈????栈的概念及结构????栈的实现二、队列????队列的概念及结构????队列的实现三、栈和队面试题四、概念选择题????1????2一、栈????栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称库栈底。栈中的数据元素遵守后进先出LIFO(LastInFirstOut)的原则栈有两个经典的操作1️⃣压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。2️⃣出栈:栈的删除操

    2022年6月2日
    36
  • 2021山东安全员c证考试题库_安全管理员试题库C2

    2021山东安全员c证考试题库_安全管理员试题库C2题库来源:安全生产模拟考试一点通公众号小程序2022年山东省安全员C证考题为山东省安全员C证复训题库高频考题覆盖!2022年山东省安全员C证考试题模拟考试题库及在线模拟考试根据山东省安全员C证新版教材大纲编写。山东省安全员C证理论题库通过安全生产模拟考试一点通上练习全部题库。1、【多选题】动臂变幅幅度限制装置功能通过空载运动目测及査验计算书的方式进行。()査验计算书有此状态臂架防后翻能力验算。(ABDE)A、吊钩空载B、臂架内变幅到设计最大仰角C、臂架内变幅到设计最大幅度…

    2022年9月6日
    3
  • H.264 Profile、Level、Encoder三张简图

    H.264 Profile、Level、Encoder三张简图

    2021年8月30日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号