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


相关推荐

  • 语音识别/合成开源项目

    语音识别/合成开源项目转自:https://blog.csdn.net/github_19776427/article/details/52530066语音识别项目:http://www.oschina.net/project/tag/203/tts-speech sf.net http://www.codesoso.net/Search?q=%D3%EF%D2%F4%CA%B6%B1%F0&amp;l=chttp:/…

    2022年6月26日
  • pycharm如何调试代码_pycharm调试debug入门

    pycharm如何调试代码_pycharm调试debug入门1.首先在怀疑出错的代码处的前面设置断点2.点击pycharmdebug按钮3.stepover也就是F8进行单击调试,只有光标在哪一行就是即将运行的代码只有光标跳到下一行,这一行才会执行4.运行到某一个自定义函数def的时候如果想知道里面如何运行单击stepinto(F7)然后继续stepover最后可能返回一个result回到main函数继续stepover。5.如果是嵌套函数,函数里面还有别的自定义函数可以运行到那一行时继续stepinto6.如.

    2022年8月25日
  • node 的运行命令

    node 的运行命令node 的运行命令

    2022年4月23日
  • pycharm linux激活码-激活码分享

    (pycharm linux激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~AFH5K5BM31-eyJsaWNlb…

    2022年3月30日
  • maven 环境变量的配置「建议收藏」

    maven 环境变量的配置「建议收藏」我的电脑是win10_64位的。一、安装,我使用的是免安装版的,直接解压缩就可以使用。二、配置环境变量。  1.打开环境变量配置。右键计算机→属性→高级系统设置→高级→环境变量,在系统变量中配置。  2.配置MAVEN_HOME。在系统变量中新建,变量名MAVEN_HOME,变量值,maven文件夹路径,我的路径是F:\Wab\资料\maven\资料\apach…

    2022年4月19日
  • js 生成二维码 vue项目

    js 生成二维码 vue项目//生成一个dom存放二维码<divid=”qrcode”ref=”qrcode”></div>//引入库importQRCodefrom’qrcodejs2’//如果没有二维码就生产有就删除当前二维码重新生产新的if(!this.qrcode){ this.qrcode=newQRCode(‘qrcode’,{ width:200, height:200,//高度 text:content//.

    2022年10月9日

发表回复

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

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