Android MediaPlayer 音乐播放器扫描 本地音乐、上一曲、下一曲切歌、播放本地音乐

//状态栏

implementation ‘com.readystatesoftware.systembartint:systembartint:1.0.3’

在android闭包中加入

compileOptions {

sourceCompatibility = 1.8

targetCompatibility = 1.8

}

指定你的JDK版本,我的项目中用的是AndroidX,如果你没有用过的,建议你先去了解一下:

好了,下面看布局文件,这次是做的一个完成的项目,所以新建了一个工程,里面有一些样式和图片、图标,工程目录如下图,这里就不在做解释了:

在这里插入图片描述

布局文件只有两个,activity_main.xml和item_music_rv_list.xml,activity_main这个是项目创建的时候赠送的,item_music_rv_list是为了显示歌曲信息而创建的

activity_main.xml代码:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”

xmlns:app=“http://schemas.android.com/apk/res-auto”

xmlns:tools=“http://schemas.android.com/tools”

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:background=“@mipmap/img_main_bg_1”

android:fitsSystemWindows=“true”

android:orientation=“vertical”

tools:context=“.MainActivity”>

<androidx.appcompat.widget.Toolbar

android:id=“@+id/toolbar”

android:layout_width=“match_parent”

android:layout_height=“?attr/actionBarSize”

android:background=“?attr/colorPrimary”

app:contentInsetLeft=“@dimen/activity_horizontal_margin”

app:popupTheme=“@style/AppTheme.PopupOverlay”>

<TextView

android:id=“@+id/tv_title”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:layout_gravity=“center”

android:text=“聆听音乐”

android:textColor=“@color/common_black”

android:textSize=“18sp” />

<TextView

android:visibility=“gone”

android:id=“@+id/tv_clear_list”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:layout_gravity=“right”

android:foreground=“@drawable/bg_white”

android:layout_marginRight=“@dimen/dp_16”

android:padding=“@dimen/dp_15”

android:text=“清空”

android:textColor=“@color/common_black” />

</androidx.appcompat.widget.Toolbar>

<LinearLayout

android:id=“@+id/scan_lay”

android:background=“@color/white”

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:gravity=“center”

android:orientation=“vertical”>

<ImageView

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:src=“@mipmap/img_scan_logo” />

<Button

android:id=“@+id/btn_scan”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:layout_marginTop=“@dimen/dp_20”

android:background=“@drawable/selector_scan_btn”

android:text=“开始扫描”

android:textColor=“#FFF”

android:textSize=“22sp” />

<LinearLayout

android:orientation=“vertical”

android:layout_width=“match_parent”

android:layout_height=“match_parent”>

<LinearLayout

android:visibility=“gone”

android:id=“@+id/play_state_lay”

android:layout_marginTop=“@dimen/dp_1”

android:gravity=“center”

android:background=“@color/half_transparent”

android:layout_width=“match_parent”

android:layout_height=“wrap_content”>

<ImageView

android:id=“@+id/play_state_img”

android:background=“@mipmap/list_pause_state”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”/>

<TextView

android:gravity=“center”

android:text=“歌曲信息”

android:ellipsize=“marquee”

android:focusableInTouchMode=“true”

android:focusable=“true”

android:marqueeRepeatLimit=“marquee_forever”

android:singleLine=“true”

android:textColor=“@color/white”

android:id=“@+id/tv_play_song_info”

android:orientation=“vertical”

android:layout_width=“@dimen/dp_150”

android:layout_height=“wrap_content”/>

<androidx.recyclerview.widget.RecyclerView

android:id=“@+id/rv_music”

android:layout_width=“match_parent”

android:layout_height=“0dp”

android:layout_weight=“1”/>

<LinearLayout

android:layout_marginTop=“@dimen/dp_4”

android:orientation=“vertical”

android:background=“@color/half_transparent”

android:layout_width=“match_parent”

android:layout_height=“wrap_content”>

<LinearLayout

android:gravity=“center_vertical”

android:layout_alignParentBottom=“true”

android:orientation=“horizontal”

android:layout_width=“match_parent”

android:layout_height=“wrap_content”>

<TextView

android:id=“@+id/tv_play_time”

android:text=“00:00”

android:layout_marginLeft=“@dimen/dp_4”

android:textSize=“@dimen/sp_14”

android:textColor=“@color/white”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”/>

<SeekBar

android:layout_marginLeft=“@dimen/dp_10”

android:layout_marginRight=“@dimen/dp_10”

android:id=“@+id/time_seekBar”

android:layout_width=“0dp”

android:layout_weight=“1”

android:layout_height=“wrap_content”

android:max=“100”

android:maxHeight=“2dp”

android:minHeight=“2dp”

android:progress=“0”

android:progressDrawable=“@drawable/seekbar_style”

android:thumb=“@drawable/thumb” />

<TextView

android:id=“@+id/tv_total_time”

android:layout_marginRight=“@dimen/dp_4”

android:text=“00:00”

android:textSize=“@dimen/sp_14”

android:textColor=“@color/white”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”/>

<LinearLayout

android:padding=“@dimen/dp_10”

android:gravity=“center”

android:orientation=“horizontal”

android:layout_width=“match_parent”

android:layout_height=“wrap_content”>

<ImageView

android:id=“@+id/btn_previous”

android:background=“@mipmap/icon_previous”

android:layout_width=“@dimen/dp_40”

android:layout_height=“@dimen/dp_40” />

<ImageView

android:layout_marginLeft=“@dimen/dp_20”

android:layout_marginRight=“@dimen/dp_20”

android:id=“@+id/btn_play_or_pause”

android:background=“@mipmap/icon_pause”

android:layout_width=“@dimen/dp_44”

android:layout_height=“@dimen/dp_44” />

<ImageView

android:id=“@+id/btn_next”

android:background=“@mipmap/icon_next”

android:layout_width=“@dimen/dp_40”

android:layout_height=“@dimen/dp_40”/>

item_music_rv_list.xml

<?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=“wrap_content”

android:id=“@+id/item_music”

android:background=“@color/color_transparent_10”

android:foreground=“@drawable/bg_white”

android:orientation=“vertical”

android:layout_marginBottom=“@dimen/dp_1”

android:gravity=“center_vertical”>

<LinearLayout

android:gravity=“center_vertical”

android:orientation=“horizontal”

android:layout_width=“match_parent”

android:layout_height=“wrap_content”>

<LinearLayout

android:gravity=“center_vertical”

android:padding=“10dp”

android:layout_width=“match_parent”

android:layout_height=“wrap_content”>

<TextView

android:id=“@+id/tv_position”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:layout_margin=“2dp”

android:text=“1”

android:textColor=“@color/white”

android:textSize=“16sp” />

<LinearLayout

android:layout_marginLeft=“@dimen/dp_10”

android:orientation=“vertical”

android:layout_width=“match_parent”

android:layout_height=“wrap_content”>

<LinearLayout

android:gravity=“center_vertical”

android:layout_width=“match_parent”

android:layout_height=“wrap_content”>

<TextView

android:id=“@+id/tv_song_name”

android:layout_width=“match_parent”

android:layout_height=“wrap_content”

android:text=“歌曲名”

android:maxLines=“1”

android:textColor=“@color/white”

android:textSize=“@dimen/sp_18” />

<LinearLayout

android:layout_marginTop=“@dimen/dp_4”

android:layout_width=“match_parent”

android:layout_height=“wrap_content”>

<TextView

android:id=“@+id/tv_singer”

android:layout_width=“0dp”

android:layout_weight=“1”

android:text=“歌手”

android:ellipsize=“end”

android:maxLines=“1”

android:layout_height=“wrap_content”

android:textColor=“@color/white”

android:textSize=“14sp” />

<TextView

android:id=“@+id/tv_duration_time”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:layout_marginLeft=“12dp”

android:textColor=“@color/white”

android:text=“时间”

android:textSize=“14sp” />

布局其实没有什么好讲解的,就是显示和隐藏的控制。

样式文件:

rounded_corners.xml 水波纹效果的xml文件

<?xml version="1.0" encoding="utf-8"?>

在bg_white.xml中调用了rounded_corners.xml

bg_white.xml代码如下:

<?xml version="1.0" encoding="utf-8"?>

<ripple xmlns:android=“http://schemas.android.com/apk/res/android”

android:color=“#20000000”

android:drawable=“@drawable/rounded_corners”/>

扫描按钮的背景图

scan_finish_btn_bg_pressed.9

在这里插入图片描述

scan_finish_btn_bg_normal.9

在这里插入图片描述

selector_scan_btn.xml使用上面两个图片的按钮点击样式

<?xml version="1.0" encoding="utf-8"?>

<selector

xmlns:android=“http://schemas.android.com/apk/res/android”>

selector_scan_btn这个样式文件,在activity_main中用到

seekbar_style.xml 进度条样式

<?xml version="1.0" encoding="utf-8"?>

thumb.xml 进度条滑块样式

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android=“http://schemas.android.com/apk/res/android”

android:shape=“oval”>

<size

android:width=“10dp”

android:height=“10dp” />

<stroke

android:width=“1dp”

android:color=“#40DEF1” />

上面两个关于进度条的样式也在activity_main.xml中用到

然后是values下面的styles.xml文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值