Android音乐播放器制作 加入控制台(三)
发布时间 - 2026-01-10 23:16:26 点击率:次Android音乐播放器的运行效果
这篇博客还是接着上一篇Android音乐播放器制作写的,没看过的可以去看看。
其中这个效果(圆形ImageView和控件匀速旋转):
我前面的博客中写到过我就不一一细说了:
图片变成圆形:android图片处理,让图片变成圆形
旋转:android图片处理:让图片一直匀速旋转
文字跑马灯:TextView的跑马灯效果以及TextView的一些属性
具体实现
首先是布局文件中添加了如下代码,这些代码就是实现控制台的,给整体设置了一个invisible,为了让他点击有音乐播放的时候控制台才显示出来:
<RelativeLayout
android:id="@+id/main_control_rl"
android:layout_width="match_parent"
android:layout_height="90dp"
android:layout_alignParentBottom="true"
android:background="@drawable/bottom_control_shape"
android:visibility="invisible">
<com.duanlian.mymusicplayerdemo.view.CircleImageView
android:id="@+id/control_imageview"
android:layout_width="65dp"
android:layout_height="65dp"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:src="@mipmap/duanlian" />
<TextView
android:id="@+id/control_singer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="40dp"
android:layout_marginTop="5dp"
android:layout_toRightOf="@+id/control_imageview"
android:text="歌手名"
android:textSize="15sp" />
/>
<TextView
android:id="@+id/control_song"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:layout_marginTop="5dp"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:layout_toRightOf="@+id/control_singer"
android:text="歌曲的名字是不是很长"
android:textSize="16sp" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_toRightOf="@+id/control_imageview">
<Button
android:id="@+id/playing_btn_previous"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginLeft="30dp"
android:background="@drawable/last_select"
android:onClick="control" />
<Button
android:id="@+id/playing_btn_pause"
android:layout_width="55dp"
android:layout_height="55dp"
android:layout_centerHorizontal="true"
android:background="@drawable/play_press"
android:onClick="control" />
<Button
android:id="@+id/playing_btn_next"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentRight="true"
android:layout_marginRight="30dp"
android:background="@drawable/next_select"
android:onClick="control" />
</RelativeLayout>
</RelativeLayout>
其中的
<com.duanlian.mymusicplayerdemo.view.CircleImageView android:id="@+id/control_imageview" android:layout_width="65dp" android:layout_height="65dp" android:layout_centerVertical="true" android:layout_marginLeft="10dp" android:src="@mipmap/duanlian" />
这个是自定义圆形图片,之前的博客已经说过了,具体可以去看,然后控制的这种效果是背景添加了一个shap
代码如下:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:radius="200.0dip" /> <solid android:color="#84C3D1" /> <stroke android:width="1.0dip" android:color="#ffff6000" /> </shape>
点击上一曲下一期的变化效果:
添加了一个点击的selector:
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_window_focused="false" android:drawable="@drawable/last_normal" /> <item android:state_focused="true" android:drawable="@drawable/last_normal" /> <item android:state_pressed="true" android:drawable="@drawable/last_press" /> </selector>
布局文件搞定,下面是代码中的实现
首先就是声明的控件和一些变量增加了 这几个:
private int playPosition;//当前播放歌曲的序号 private boolean IsPlay = false;//是否有歌曲在播放 private Button playPause;//暂停和播放按钮 private TextView song;//歌曲名 private TextView singer;//歌手名 private ImageView imageView;//控制台的图片 private Animation animation;//动画
点击ListView的一下改变:
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
//创建一个播放音频的方法,把点击到的地址传过去
//list.get(i).path这个就是歌曲的地址
play(list.get(i).path);
////播放暂停按钮图片变成播放状态
playPause.setBackgroundResource(R.drawable.pause_press);
//把当前点击的item的position拿到,知道当前播放歌曲的序号
playPosition = i;
//播放音乐的时候把是否在播放赋值为true
IsPlay = true;
//点击item让控制台显示出来
findViewById(R.id.main_control_rl).setVisibility(View.VISIBLE);
}
});
然后就是几个button的点击事件了:
/**
* 底部控制栏的点击事件
*
* @param view
*/
public void control(View view) {
switch (view.getId()) {
case R.id.playing_btn_previous://上一曲
//如果播放歌曲的序号小于或者等于0的话点击上一曲就提示已经是第一首了
if (playPosition <= 0) {
Toast.makeText(MainActivity.this, "已经是第一首歌了", Toast.LENGTH_SHORT).show();
} else {
//让歌曲的序号减一
playPosition--;
//播放
play(list.get(playPosition).path);
playPause.setBackgroundResource(R.drawable.pause_press);
}
break;
case R.id.playing_btn_pause://暂停和播放
if (IsPlay == false) {
//播放暂停按钮图片变成播放状态
playPause.setBackgroundResource(R.drawable.pause_press);
//继续播放
mediaPlayer.start();
imageView.startAnimation(animation);
IsPlay = true;//是否在播放赋值为true
animation.start();
Toast.makeText(MainActivity.this, "播放" + list.get(playPosition).song, Toast.LENGTH_SHORT).show();
} else {
//播放暂停按钮图片变成暂停状态
playPause.setBackgroundResource(R.drawable.play_press);
//暂停歌曲
mediaPlayer.pause();
imageView.clearAnimation();//停止动画
IsPlay = false;//是否在播放赋值为false
Toast.makeText(MainActivity.this, "暂停" + list.get(playPosition).song, Toast.LENGTH_SHORT).show();
}
break;
case R.id.playing_btn_next://下一曲
//歌曲序号大于或者等于歌曲列表的大小-1时,让歌曲序号为第一首
if (playPosition >= list.size() - 1) {
playPosition = 0;
} else {
//点击下一曲让歌曲的序号加一
playPosition++;
}
//播放
play(list.get(playPosition).path);
//播放暂停按钮图片变成播放状态
playPause.setBackgroundResource(R.drawable.pause_press);
break;
}
}
最后还有设置歌曲名和歌手名的:
/**
* 控制歌曲和歌手TextView的方法
*/
private void setText() {
song.setText(list.get(playPosition).song);
song.setSelected(true);//当歌曲名字太长是让其滚动
singer.setText(list.get(playPosition).singer);
}
就是这个简单
demo下载地址:音乐播放器
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Android
# 音乐播放器
# 控制台
# java音乐播放器编写源码
# java音乐播放器实现代码
# Java swing仿酷狗音乐播放器
# 教你轻松制作java视频播放器
# 教你轻松制作java音乐播放器
# 实例解析使用Java实现基本的音频播放器的编写要点
# 简单实现Android本地音乐播放器
# android多媒体音乐(MediaPlayer)播放器制作代码
# 利用java制作简单的音乐播放器
# 一曲
# 播放器
# 值为
# 播放歌曲
# 博客
# 第一首
# 跑马灯
# 图片处理
# 几个
# 我就
# 让他
# 下载地址
# 去看
# 自定义
# 很长
# 写到
# 这篇
# 上一篇
# 这几个
# 首歌
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
佛山企业网站制作公司有哪些,沟通100网上服务官网?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
Win11怎么开启自动HDR画质_Windows11显示设置HDR选项
Laravel如何实现多对多模型关联?(Eloquent教程)
Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤
个人网站制作流程图片大全,个人网站如何注销?
Claude怎样写结构化提示词_Claude结构化提示词写法【教程】
魔毅自助建站系统:模板定制与SEO优化一键生成指南
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
教学论文网站制作软件有哪些,写论文用什么软件
?
Swift中swift中的switch 语句
免费网站制作appp,免费制作app哪个平台好?
JavaScript如何操作视频_媒体API怎么控制播放
Laravel集合Collection怎么用_Laravel集合常用函数详解
使用Dockerfile构建java web环境
Android利用动画实现背景逐渐变暗
jQuery validate插件功能与用法详解
JavaScript如何实现路由_前端路由原理是什么
Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践
Laravel如何升级到最新版本?(升级指南和步骤)
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
如何快速搭建安全的FTP站点?
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
WEB开发之注册页面验证码倒计时代码的实现
Laravel API资源类怎么用_Laravel API Resource数据转换
Laravel如何实现密码重置功能_Laravel密码找回与重置流程
网站制作企业,网站的banner和导航栏是指什么?
如何用PHP工具快速搭建高效网站?
大学网站设计制作软件有哪些,如何将网站制作成自己app?
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
如何在阿里云虚拟服务器快速搭建网站?
如何构建满足综合性能需求的优质建站方案?
Laravel如何优化应用性能?(缓存和优化命令)
Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程
JavaScript数据类型有哪些_如何准确判断一个变量的类型
Laravel如何使用Collections进行数据处理?(实用方法示例)
LinuxShell函数封装方法_脚本复用设计思路【教程】
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
Laravel如何实现API速率限制?(Rate Limiting教程)
如何用免费手机建站系统零基础打造专业网站?
实例解析Array和String方法
微信小程序 input输入框控件详解及实例(多种示例)
Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区
Laravel Docker环境搭建教程_Laravel Sail使用指南

