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文件