从零开始学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广播

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • dede织梦后台页面及功能修改及精简操作方法

    dede织梦后台页面及功能修改及精简操作方法

  • npm包–rimraf[通俗易懂]

    npm包–rimraf[通俗易懂]1/含义rimraf 包的作用:以包的形式包装rm-rf命令,用来删除文件和文件夹的,不管文件夹是否为空,都可删除2/安装npminstallrimraf–save-dev3/使用constrimraf=require(‘rimraf’);rimraf(‘./test.txt’,function(err){//删除当前目录下的t

    2022年10月28日
  • get请求最大长度限制多少k_get请求大小限制多少

    get请求最大长度限制多少k_get请求大小限制多少原来:&lt;ahref="rejectedaddrmsginfo.jsp?sender=&lt;%=URLEncoder.encode(rec.getRejectedAddr())%&gt;&amp;senderType=&lt;%=senderType%&gt;&amp;receiverType=1target="_blank"&gt;Detail&lt;/a&gt;修改后:&a

  • 如何撰写《软件需求规格说明书》

    1概述1.1编写目的指出编写《需求规格说明书》的目的。下面是示例:编写此文档的目的是进一步定制软件开发的细节问题,希望能使本软件开发工作更具体。为了使用户、软件开发者及分析和测试人员对该软件的初始规定有一个共同的理解,它说明了本软件的各项功能需求、性能需求和数据需求,明确标识各项功能的具体含义,阐述实用背景及范围,提供客户解决问题或达到目标所需要的条件或权能,提供一个度量和遵循的基准。…

  • VMware虚拟机安装Ubuntu 2022最新版详细图文安装教程(VMware虚拟机安装+Ubuntu下载+VMware虚拟机配置运行)「建议收藏」

    VMware虚拟机安装Ubuntu 2022最新版详细图文安装教程(VMware虚拟机安装+Ubuntu下载+VMware虚拟机配置运行)「建议收藏」Ubuntu2022来啦,VMware虚拟机安装Ubuntu2022最新版详细图文安装教程(VMware虚拟机安装+Ubuntu下载+VMware虚拟机配置运行),数千字图文详解,一步步教会你如何安装、配置、运行虚拟机及Ubuntu。

  • java与c的区别_c 和java的区别是什么

    java与c的区别_c 和java的区别是什么Java和C都是指令式语言(ImperativeLanguage),不同的是Java有面向对象(OO)成分在里面,而C是完全面向过程的,C的高级版本C++、C#支持面向对象。另外一个不同是,Java跨平台,既不同的操作系统都可以通过JVM来解释Java程序,而C、C++、C#则是与平台相关的,有些指令只在某些操作系统中才能执行。具体原因是,Java是解释型语言,所有代码都会翻译成统一的、与系统无…

发表回复

您的电子邮箱地址不会被公开。

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