安卓手机怎么修改下拉通知栏

安卓手机怎么修改下拉通知栏,第1张

方法:

1、进入设置点击通知栏设置可以对通知栏进行基本的设置;

2、选择页面样式为单页会出现可以自定义开关位置,还有其余的设置;

3、设置通知栏的主题风格,进入主题风格选择混搭点击通知栏,可以设置通知栏的主题风格,如果对现有的主题风格不满意可以进入在线选择主题风格。

Notification即通知,用于在通知栏显示提示信息。

在较新的版本中(API level >11),Notification类中的一些方法被Android声明deprecated(弃用),其实基本上相当于全部弃用了。

Android官方声明弃用,一定有它的理由,虽然我也不知道是什么人家都建议你不要用了,那就不要老是恪守着N年前的东西了。就像是以前,一说到标签页,大家基本上都会想到TabHost配合ActivityGroup,但Android后来提倡Fragment。

废话说多了,还是小结一下使用方法。

下面按照创建一个通知的步骤一步一步来,同时给出新旧实现方法。

1、获取Notification管理器

NotificationManager noteMng = (NotificationManager)getSystemService(NOTIFICATION_SERVICE)

2、新建一个Notification,设置状态栏显示样式

private Notification note

//API 11以下

note = new Notification(R.drawable.ico_launcher "显示于屏幕顶端状态栏的文本", System.currentTimeMillis())

//API 11及以上

Notification.Builder builder = new Notification.Builder(nowContext).setTicker("显示于屏幕顶端状态栏的文本")

.setSmallIcon(R.drawable.ic_laucher)

API 11以上版本中,状态栏显示的样式跟下拉通知栏中显示的样式,可以一起设置,就是通过Notification.Builder类来实现,这里的Builder只调用了两个方法来设置状态栏显示样式。

3、设置Notification标志位(非必要步骤)

//FLAG_ONGOING_EVENT表明有程序在运行,该Notification不可由用户清除

note.flags = Notification.FLAG_ONGOING_EVENT

4、设置点击Notification后的触发事件

//通过Intent,使得点击Notification之后会启动新的Activity

Intent i = new Intent(nowContext, AnotherActivity.class)

//该标志位表示如果Intent要启动的Activity在栈顶,则无须创建新的实例

i.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)

pendingIntent = PendingIntent.getActivity(nowContext, 100, i, PendingIntent.FLAG_UPDATE_CURRENT)

5、设置Notification在通知栏里的样式

(1)系统默认样式

//API 11以下:

note.setLatestEventInfo(nowContext, "take me to your heart", "Micheal learn to rock", pendingIntent)

//API 16及以上,build()方法要求API 16及以上

//一会API 11以上,一会API16以上,我也很想知道Android的API是怎么设计的

note = builder.setContentIntent(pendingIntent).setContentTitle("title").setContentText("text").build()

(2)自定义样式:

自定义样式,就是让Notification在通知栏显示成自定义的xml布局

应当注意的是,Notification的自定义样式,只支持以下可视组件:

FrameLayout, LinearLayout, RelativeLayout

TextView, Button, AnalogClock, ImageView, ImageButton, Chronometer, ProgressBar

RemoteView view = new RemoteView(nowActivity.getPackageName(), R.layout.note_layout)

//API 11以下

note.contentView = view

note.contentIntent = pendingIntent

//API 16及以上,又是build()方法导致的,汗。。

note = builder.setContent(view).setContentIntent(pendingIntent).build()

这个步骤里有一个很值得注意的地方:pendingIntent被设置为note的contentIntent的值,就意味着点击了这个通知才会触发该Intent。

那么如果只是想让自定义布局里的某个按钮触发呢?比如说,弄了一个音乐播放器,Service负责播放音乐,Notification显示当前播放进度和一些简单的暂停按钮、上一首、下一首按钮,让用户不用再打开界面就可以通过Notification上的按钮 *** 纵音乐播放。

假设说想让自定义布局里的一个id为R.id.button1的按钮来触发这个Intent,可以如下 *** 作:

view.setOnClickPendingIntent(R.id.button1, pendingIntent)//在上面创建RemoteView实例后加上这句

然后注意,pendingIntent已经绑定到按钮上了,上面Notificatiion实例中,设置contentIntent的语句要去掉。

6、发布该通知,第一个参数为该notification的ID

noteMng.notify(10, note)

有关Notification的更多详细用法,建议查看官方API文档


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8044971.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存