- 浏览: 532699 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
tangyunliang:
大哥你太历害了谢谢
Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信 -
u013015029:
LZ,请问下,在// 添加消息到聊天窗口 , 这里获取Ed ...
Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信 -
endual:
怎么保持会话,我搞不懂啊
Android基于XMPP Smack Openfire开发IM【一】登录openfire服务器 -
donala_zq:
显示:[2013-11-30 11:50:36 - Andro ...
android-----------新浪微博 -
donala_zq:
哥,运行不了啊
android-----------新浪微博
自定义通知与系统通知的学习
通知这块比较简单,代码不多
[img]
[/img]
工程结构图:
[img]
[/img]
NotificationDemoActivity:
NotificationDemoTest
main.xml
maintwo.xml
notification.xml
配置文件:
通知这块比较简单,代码不多
[img]
[/img]
工程结构图:
[img]
[/img]
NotificationDemoActivity:
package com.amaker.notification; 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.view.View.OnClickListener; import android.widget.Button; /** * @Title: NotificationDemoActivity.java * @Package com.amaker.notification * @Description: 通知控制类 * @author ZZL */ public class NotificationDemoActivity extends Activity { private Button clearBtn ; private NotificationManager manager ; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); init(); } /** * 初始化方法实现 */ private void init(){ //步骤一:取得系统服务 manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); //步骤二: Notification notification = new Notification(R.drawable.notification, "收到小马通知测试", System.currentTimeMillis()); /** * 小马在这个地方写下为什么要在用到通知的时候要创建PendingIntent对象,是因为 * Notification可以与应用程序脱离,即便应用程序关闭,Notification仍然 * 会显示在状态栏中,当应用程序再次启动后,又可以重新控制这些Nofication消息, * 如清除或替换它们,因为才创建的此对象,更神奇的是这个对象由安卓系统本身维护哦,所以 * 在应用关闭后这个对象是不会被翻译掉的 */ //步骤三: Intent intent = new Intent(); intent.putExtra("Msg", "这是从Notification传递过来的信息"); intent.setClass(this, NotificationDemoTest.class); PendingIntent contentIntent = PendingIntent.getActivity(this, 0,intent, 0); //步骤四:setLatestEventInfo通过标准的方式将我们的通知设置到指定的View中 notification.setLatestEventInfo(this, "通知测试哦", "这是通知的主内容", contentIntent); //写下面这句话的时候大家注意下不要忘了加震动权限,不然没法调用硬件 //notification.defaults = Notification.DEFAULT_VIBRATE; //下面这句是把当前的通知设置永久保存的Notification,好暴力呀,吼吼 //notification.flags = Notification.FLAG_NO_CLEAR //下面这句是指:如果要让其它的软件检测到永久保存的通知时可以这样写 //Notification.flags = Nofication.FLAG_ONGOING_EVENT; /** * 在这一步需要指定标识Notification的唯一ID,这个ID必须相对于同一个 * NoficationManager对象是唯一的,否则就会覆盖相同ID的Notification */ //步骤五: manager.notify(R.drawable.notification, notification); clearBtn = (Button)findViewById(R.id.button1); clearBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { manager.cancel(R.drawable.notification); //清除所有通知: //manager.cancelAll(); } }); } }
NotificationDemoTest
package com.amaker.notification; 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.view.View.OnClickListener; import android.widget.Button; import android.widget.RemoteViews; import android.widget.Toast; /** * @Title: NotificationDemoTest.java * @Package com.xiaoma.www.demo * @Description: 接收并弹出通知传递过来的信息 * @author MZH */ public class NotificationDemoTest extends Activity { //声明变量 private Button selfBtn; private NotificationManager manager ; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.maintwo); init(); } /** * 初始化方法实现 */ private void init(){ Intent i = this.getIntent(); String msg = i.getStringExtra("Msg"); if(!"".equals(msg)){ Toast.makeText(this, msg, Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(this, "未接收到任何短信", Toast.LENGTH_SHORT).show(); } selfBtn = (Button)findViewById(R.id.button2); selfBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { sendNotification(); } }); } private void sendNotification(){ /** * 下面还是五个步骤,呵呵跟前面那个Activity是一样的,只是通知布局不同咯,用RemoteViews加载 */ manager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); Notification notification = new Notification(R.drawable.ic_launcher, "这是自定义通知的信息哦", System.currentTimeMillis()); PendingIntent pendingIntent = PendingIntent.getActivity(this, 1, getIntent(), 1); /** * RemoteViews这个类的官方文档解释为: * 很直接很简单的讲就是:从我们自己的XML文件中加载一个VIEW到通知中 */ RemoteViews rViews = new RemoteViews(getPackageName(), R.layout.notification); rViews.setTextViewText(R.id.textView, "更新自定义内容"); notification.contentView = rViews; notification.contentIntent = pendingIntent; //notification.setLatestEventInfo(this, "这是通知的标题", "这是通知的正文", pendingIntent); manager.notify(1, notification); } }
main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="@drawable/background" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#000000" android:text="清队当前通知" /> </LinearLayout>
maintwo.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:background="@drawable/background" > <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="点我查看自定义通知" android:textColor="#000000" /> </LinearLayout>
notification.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="自定义内容" android:textColor="#F00" android:textSize="20px" android:gravity="center" android:id="@+id/textView" /> <ImageButton android:id="@+id/imageBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:src="@drawable/notification"/> </LinearLayout>
配置文件:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.amaker.notification" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/xiaoma" android:label="@string/app_name" > <activity android:name=".NotificationDemoActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".NotificationDemoTest"></activity> </application> </manifest>
发表评论
-
Android中如何模拟一次点击(touch)事件
2014-05-06 10:41 0在Android中有时需要模拟某一个View的touch事件, ... -
Android程序Crash时的异常上报
2014-04-28 18:15 0http://blog.csdn.net/singwhatiw ... -
android程序中证书签名校验的方法
2014-04-28 17:58 2004android程序中证书签名校验的方法一 2013-02 ... -
MD5理解错了,哎
2014-03-17 14:14 0MD5只对数据加密是无法解密的,也就是说,你把100加密后,就 ... -
Android 获取网络时间
2014-03-12 11:42 2042Android 获取网络时间 在网上看到的最常见的方式有: ... -
SQLite清空表并将自增列归零
2014-03-05 18:02 1550SQLite清空表并将自增列归零 作者:Zhu Yanfeng ... -
Handler小看一下
2013-11-11 16:42 0android handler调用post方法还是阻塞 su ... -
Frame Animation小看一下
2013-10-12 16:30 781Demo运行效果图: 源码: -
动画小学一下
2013-10-12 16:14 737转自: http://www.eoeandroid.com/f ... -
Android 动画之ScaleAnimation应用详解
2013-10-12 15:49 1004===============eoeAndroid社区推荐:= ... -
android开发中的一个工具类
2013-06-19 16:04 0package com.wanpu.login.dialog; ... -
android TextView怎么设置个别字体颜色并换行?
2013-06-20 09:25 1683(1)、TextView 设置个别字体颜色 TextView ... -
Android开发之文件下载,状态时显示下载进度,点击自动安装
2013-05-07 15:38 1430在进行软件升级时,需要进行文件下载,在这里实现自定义的文件下载 ... -
android中的状态保存
2013-04-07 14:21 978package com.zzl.call; import ... -
android动画基础:tween动画
2013-04-06 11:21 1241工程结构图: [img] [/img] 四个动画的xml ... -
面试中遇到的几个问题
2013-06-09 11:56 991SAX与DOM之间的区别 SAX ( ... -
Android获取其他包的Context实例,然后调用它的方法,反射!!!
2013-03-25 10:32 1222Android中有Context的概念,想必大家都知道。Con ... -
Android的内存机制和常见泄漏情形
2013-03-06 16:55 794一、 Android的内存机制 Android的程序由Ja ... -
JUnit测试小小demo
2013-03-06 16:37 1158运行效果图: [img] [/img] 项目结构图 ... -
android开发中的异常小工具
2013-03-04 15:53 899package com.zzl.tools; impor ...
相关推荐
在Android开发中,Notification系统通知是用户界面与用户交互的重要方式之一,用于在状态栏显示消息,即使应用在后台运行也能...通过学习和实践这些示例,你将能够更好地理解和运用Notification系统通知和自定义通知。
系统通知是Android提供的原生功能,而自定义通知则是开发者为了提供更加丰富和个性化的用户体验而进行的扩展。下面我们将详细探讨“系统通知”和“自定义的通知”。 首先,系统通知是Android API提供的一种服务,...
总结来说,Android的通知系统提供了强大的灵活性,让开发者能够创建各种类型的通知,包括带有按钮的自定义通知。通过`NotificationCompat.Builder`和`NotificationChannel`,我们可以轻松地设计和管理这些通知,以...
【标题】"NotificationDemoWPF自定义通知窗体样式"主要涉及的是在Windows Presentation Foundation (WPF) 平台上创建自定义的通知窗口。WPF是.NET Framework的一部分,它提供了丰富的用户界面设计工具和功能,允许...
在Android开发中,自定义通知栏Notification是一种提升用户体验的重要手段。...这个项目不仅提供了基本的自定义通知功能,也可能包含了一些进阶技巧和优化措施,对深入理解Android通知系统非常有帮助。
自定义工作流系统的设计与实现是一项复杂而重要的任务,它涉及到企业的日常运营效率和业务流程优化。本文档将深入探讨如何构建一个高效、灵活且用户友好的自定义工作流系统。 首先,我们需要理解工作流的基本概念。...
5. **Swift的定时器(Timer)**:可以用来模拟通知的延迟出现,就像系统通知那样。 6. **UIWindowScene**:如果你的应用支持多窗口场景,可能需要在特定的窗口场景中添加通知视图。 7. **响应用户交互**:当用户...
本教程将详细介绍如何自定义通知,以满足特定的界面和功能需求,让通知更具个性化。 一、创建基础通知 在Android中,我们可以使用`NotificationCompat.Builder`类来构建一个基本的通知。首先,需要引入`androidx....
例如,我们可以自定义通知的扩展和收缩动画,或者利用系统的`Notification.FLAG_SHOW_LIGHTS`和`Notification.FLAG_ONLY_ALERT_ONCE`标志来控制LED灯闪烁和振动。 4. **优先级与可见性**:根据需求,可能需要调整...
然而,Android系统默认的通知样式可能无法满足所有设计需求,因此我们需要自定义通知样式。这通常涉及到以下几个方面: 1. **大图标(Large Icon)**:除了小图标,我们还可以设置一个大图标,用`setLargeIcon`方法...
自定义通知栏布局可以包括改变通知图标、文本样式、颜色、甚至是添加额外的交互元素,如按钮或自定义视图。在代码实现中,通常会通过`NotificationCompat.Builder`类或者在Android O及以上版本使用`...
在MacOS操作系统中,系统通知中心是用户获取应用程序更新、提醒和其他重要信息的主要途径。为了增强应用程序的功能,开发者有时需要自定义并添加新的通知源。本文将深入探讨如何使用Objective-C编程语言在MacOS上...
1. **创建自定义通知图标** - 在Android中,通知图标需要遵循特定的设计规范,尤其是在Android O及以上版本,必须是白色且透明背景的。你可以使用Android Studio的Asset Studio或第三方工具来创建符合规范的图标。 ...
9. **自定义布局**:如果需要更复杂的交互,可以通过`RemoteViews`来定制通知的布局,添加更多的控件和功能。 10. **适配不同Android版本**:由于Android系统版本众多,不同版本的API对通知的处理可能有所不同,...
总的来说,自定义日期选择器是Android开发中的一个重要实践,它涉及到了Android UI设计、事件处理、动画、数据绑定等多个方面,对开发者全面理解Android系统具有很高的价值。通过这样的项目,开发者不仅可以提升技能...
3. **自定义通知样式** - 可以通过设置扩展样式如`BigTextStyle`, `InboxStyle`或`PictureStyle`来自定义通知的内容展示。 - 使用`PendingIntent`为通知添加操作,例如点击通知后启动新的Activity或执行其他操作。...
本文将详细讲解5.0之后的系统默认通知栏特性,自定义通知栏的实现,以及弹出悬浮自定义通知栏的方法。 ### 一、系统默认通知栏 Android 5.0引入了Material Design设计语言,通知栏也遵循这一设计风格,变得更为...
本文将详细介绍如何在Android中不使用自定义布局创建自定义通知栏图标,这对于理解Android的通知机制和RemoteViews的使用具有重要的学习价值。 首先,创建一个通知的基本步骤包括以下几个关键点: 1. 创建`...
在Android开发中,自定义控件是提升应用独特性和用户体验的重要手段。`ViewGroup`是Android UI组件的基础,它作为容器...记住,自定义控件的过程也是学习和理解Android系统工作原理的过程,这对提升开发技能大有裨益。