android+仿最新网易云音乐底面栏,安卓仿网易云音乐通知栏控制音乐,默认显示Notification bigView...
最近在做一个音乐播放器的时候遇到了一个关于notification的问题,在网上找了很久都没有头绪。后来找到了解决的办法,特意记录一下。
问题描述
首先请看网易云音乐的通知栏
普通高度的notification.png
加高notification.png
可以看到,网易云音乐的通知栏有两种,一种是普通的通知栏,一种是显示bigView的通知栏。这两种通知栏是可以通过双指上滑/下滑来切换的(说实话,我今天才知道原来还有这个功能...)。
网易云音乐在播放音乐的时候,默认显示的是第二种通知栏,而我今天遇到的问题是:通过自定义布局来实现通知栏,默认情况下只能显示第一种普通高度的通知栏,需要双指滑动一下才能显示bigView通知栏。
对于大多数用户来说,可能并不知道有双指滑动通知栏这一功能,因此这样的用户体验是不够友好的,那么,如何实现像网易云一样的,默认就显示bigView的notification呢?
首先新建一个测试项目,再新建两个布局,一个用作普通的notification视图,一个用作bigView的notification视图:
普通notification视图,命名为normal_notification.xml
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
android:layout_width="64dp"
android:layout_height="64dp"
android:src="@mipmap/icon"/>
android:layout_width="0dp"
android:layout_height="64dp"
android:layout_marginEnd="10dp"
android:layout_marginStart="10dp"
android:layout_weight="1"
android:orientation="vertical">
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="歌曲名"
android:textSize="18sp"/>
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="歌手名"/>
android:layout_width="wrap_content"
android:layout_height="64dp"
android:gravity="center_vertical">
android:layout_width="26dp"
android:layout_height="26dp"
android:background="@null"
android:scaleType="fitCenter"
android:src="@mipmap/pre"/>
android:layout_marginStart="10dp"
android:layout_width="26dp"
android:layout_height="26dp"
android:background="@null"
android:scaleType="fitCenter"
android:src="@mipmap/play"/>
android:layout_marginStart="10dp"
android:layout_width="26dp"
android:layout_height="26dp"
android:background="@null"
android:scaleType="fitCenter"
android:src="@mipmap/next"/>
bigView的notification视图,命名为big_notification.xml
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
android:layout_width="110dp"
android:layout_height="110dp"
android:src="@mipmap/icon"/>
android:layout_width="match_parent"
android:layout_height="110dp"
android:orientation="vertical">
android:id="@+id/tv_song_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="10dp"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:text="歌名"
android:textSize="15sp"/>
android:id="@+id/tv_song_singer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="10dp"
android:layout_marginStart="10dp"
android:layout_marginTop="5dp"
android:text="歌名"
android:textSize="12sp"/>
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="20dp"
android:gravity="center_vertical"
android:orientation="horizontal">
android:layout_marginEnd="10dp"
android:layout_width="26dp"
android:layout_height="26dp"
android:background="@null"
android:scaleType="fitCenter"
android:src="@mipmap/like"/>
android:layout_marginEnd="10dp"
android:layout_width="26dp"
android:layout_height="26dp"
android:background="@null"
android:scaleType="fitCenter"
android:src="@mipmap/pre"/>
android:layout_marginEnd="10dp"
android:layout_width="38dp"
android:layout_height="38dp"
android:background="@null"
android:scaleType="fitCenter"
android:src="@mipmap/play"/>
android:layout_marginEnd="10dp"
android:layout_width="26dp"
android:layout_height="26dp"
android:background="@null"
android:scaleType="fitCenter"
android:src="@mipmap/next"/>
除了这两个用作notification的布局文件之外,在主界面中还有一个按钮,通过按钮的点击事件,模拟开始播放音乐,发送通知。这里就不贴代码了,直接贴按钮点击事件中的核心代码:
//发送自定义视图通知
public void sendCustomViewNotification(View view) {
//普通notification用到的视图
RemoteViews normalView = new RemoteViews(getPackageName(), R.layout.normal_notification);
//显示bigView的notification用到的视图
RemoteViews bigView = new RemoteViews(getPackageName(), R.layout.big_notification);
Notification notification = new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setTicker("开始播放啦~~")
.setOngoing(true)
.setContent(normalView)//设置普通notification视图
.setCustomBigContentView(bigView)//设置显示bigView的notification视图
.setPriority(NotificationCompat.PRIORITY_MAX)//设置最大优先级
.build();
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
manager.notify(22, notification);
}
上面这段代码相信大家应该经常使用,这是构建一个自定义通知的基本代码。在使用builder对象为notification设置一些列熟悉的时候,有三个关键的方法,我都已经注释出来了
1.setContent:给notification设置普通状态下显示的视图
2. setCustomBigContentView():给notification设置bigView
设置完上面两个方法之后,程序应该能实现双指滑动切换普通notification和bigView notification了,但还无法像网易云的通知栏一样,默认显示bigView notification,所以:
3. setPriority(NotificationCompat.PRIORITY_MAX):给notification设置最高的优先级
设置了优先级之后,终于能够实现和网易云音乐相同的通知栏效果了,大功告成,下面上图:
默认启动的时候:
默认启动时显示的通知栏
双指滑动后效果:
2.png
PS:
1.上面写的两个布局文件没有参考意义,快下班了,噼里啪啦写出来的,估计有些问题
2.有空录下GIF,效果应该会更直观
android+仿最新网易云音乐底面栏,安卓仿网易云音乐通知栏控制音乐,默认显示Notification bigView...相关推荐
- android仿百度新闻,【Android】最新主流新闻app功能实现。仿网易,搜狐等新闻客户端实现展示...
最新主流新闻app功能实现.仿网易,搜狐等新闻客户端 (原创作品,转载请说明出处)先给大家看一下效果图: 这个项目总体来说虽然不是特别难,但是确实非常常用的功能.是业余时间自己写的一个小项目. 以前我 ...
- 【Android】最新主流新闻app功能实现。仿网易,搜狐等新闻客户端实现展示
最新主流新闻app功能实现.仿网易,搜狐等新闻客户端 作者:程序员小冰 欢迎点击关注微博 (原创作品,转载请说明出处)先给大家看一下效果图: 这个项目总体来说虽然不是特别难,但是确实非常常用的功能.是 ...
- ehshig蒙文歌曲_额格希格音乐播放器_额格希格音乐播放器安卓版下载_额格希格音乐播放器最新版app下载_好趣手游网...
额格希格蒙语版是一款颇具民族特色的蒙文歌曲下载软件.额格希格音乐播放器收集了最全的蒙文歌曲曲库,各种经典的蒙文歌曲以及当前流行的蒙文流行歌全都有,深受广大内蒙用户喜爱! 软件介绍 想了解蒙语音乐或者想 ...
- 车秘android版本最新版本,车秘下载2021安卓最新版_手机app官方版免费安装下载_豌豆荚...
程序需要调用以下重要权限: 直接安装应用 - 允许程序安装应用 直接拨打电话号码 - 允许程序从非系统拨号器里输入电话号码 编辑您的讯息(短信或彩信) - 允许编写短信 请求安装文件包 - 允许程序请 ...
- 安卓仿网易云界面的本地音乐播放器的实现
前言:读研究生之前,老板让学IOS,老老实实看了一个学期的IOS(在这里强烈安利一下腾讯课堂的小码哥IOS视频,基本刚开始只需要10块买第一部,后面的就可以用可视币来兑换了,质量还不错,能学到很多东西 ...
- Android系统默认显示电池电量百分比
Android系统默认显示电池电量百分比 整理一下修该需求时候遇到的问题以及进行修改的思路: 需求:Android 11 让系统默认显示电池电量百分比 整理一下修该需求时候遇到的问题以及进行修改的思路 ...
- 安卓 实现网易云音乐底部播放栏效果之使用UI绑定到Service上实现
先说原理:音乐播放需要使用到Service,而播放栏也是属于音乐播放的,那么为什么我们不把这两者合在一起呢? 把UI和音乐Service合在一起,用Service来控制UI界面不是更简单.在进入Act ...
- 网易云音乐android api_网易云音乐怎么发布个人Mlog?网易云音乐发布个人Mlog的教程介绍...
现在很多人都喜欢发Mlog,网易云音乐中也可以发布mlog啦,下面小编就为大家带来网易云音乐发布个人Mlog的具体操作方法,想知道的话就来看看吧. 网易云音乐怎么发布个人Mlog?网易云音乐发布个人M ...
- 项目总结3 类似网易云音乐导航栏指示器(个性推荐、歌单等)的简单实现(一)
我们先来看看网易云音乐导航栏指示器是什么样的. 箭头指向的蓝色框就是导航指示器,点击之后下面的view会跟着移动,每个button下面还有个小红线跟着.这个效果其实不难实现,我们先来分析分析. 在iO ...
最新文章
- 2022-2028中国快时尚服装市场竞争及发展前景预测报告
- Java关键字及其作用
- Android -- EventBus使用
- LeetCode Rotate Function(寻找规律)
- 【译】如何使用索引视图和一个只有2行的表限制业务规则
- 面向小白:git和github的简明使用教程
- MFC 中屏蔽CDialog类窗体处理ESC和ESCAPE按键
- java mvc ef_一个简单MVC5 + EF6示例分享
- Cloud for Customer的设置加载机制
- [机器学习] PMML实现模型上线
- 学计算机之路写一篇作文,我的学习之路作文(2篇)
- ArrayDeque 双端队列
- 正则表达式 以字符串开头_干货-Shell编程之正则表达式
- 使用字典暴力破解练习
- 北京理工大学OJ的Mid难度题目的题解
- 语法树,短语,直接短语,句柄
- java 编写metro风格_纯Javascript实现Windows 8 Metro风格实现
- 利用javascript写一个石头剪刀布的简易小游戏
- 睿智的目标检测27——Pytorch搭建Faster R-CNN目标检测平台
- Edge浏览器缓存问题简直可怕