从零开始学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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux amd显卡驱动画面撕裂,从此告别画面撕裂 AMD-FreeSync技术解析

    linux amd显卡驱动画面撕裂,从此告别画面撕裂 AMD-FreeSync技术解析说到”垂直同步”技术,相信很多玩家都知道是啥意思,它可以有效解决游戏中的画面撕裂问题,让画面更平滑。然而它也有一个致命伤:会限制显卡的性能输出,进而造成卡顿。至于具体缘由,还要从显示器的工作原理说起。●为什么会有撕裂?目前几乎所有显示器的画面都是一行一行扫描上去的,刷新率通常固定为60Hz,而显卡在渲染不同画面时的速度不一样,简单画面渲染的快,复杂画面则要慢一些,当显卡输出和显示器输出不同步,…

    2022年6月7日
    38
  • Java AbstractMethodError 原因分析

    Java AbstractMethodError 原因分析背景AbstractMethodError异常对于我来说还是比较不常遇见的,最近有幸遇到,并侥幸的解决了,在这里把此种场景剖析一番,进入正题,下面是AbstractMethodError在Java的异常机制中所处的位置:现在明确了AbstractMethodError所具有的特性:1.它是Error的子类,Error类及其子类都是被划分在非检查异常之列的,就是说这些异常不能在编译阶…

    2022年6月2日
    36
  • Java Double转Bigdecimal丢失精度原因学习

    Java Double转Bigdecimal丢失精度原因学习记录学习Double转Bigdecimal丢失精度的原因注意事项:不能直接使用Bigdecimal的构造函数传double进行转换,部分数值会丢失精度,因为计算机是二进制的Double无法精确的储存一些小数位,0.1的double数据存储的值实际上并不真的等于0.1如该方式将0.1转换为Bigdecimal得到的结果是0.1000000000000000055511151231257827021181583404541015625这是为什么呢,以往只是知道结论知道不能这么用,也大概知道是因为do

    2022年6月4日
    33
  • 0817a

    0817ahttps://zhidao.baidu.com/question/1302230504869242619.html

    2022年6月1日
    41
  • socketpair原理_pair of shoes意思

    socketpair原理_pair of shoes意思socketpair()函数的声明:#include&lt;sys/types.h&gt;#include&lt;sys/socket.h&gt;intsocketpair(intd,inttype,intprotocol,intsv[2]);socketpair()函数用于创建一对无名的、相互连接的套接子。 如果函数成功,则返回0,创建好的套接字分别是sv[0…

    2022年10月15日
    1
  • Caused by: java.lang.NoClassDefFoundError: freemarker/cache/TemplateLoader

    Caused by: java.lang.NoClassDefFoundError: freemarker/cache/TemplateLoader

    2021年11月23日
    41

发表回复

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

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