//状态栏
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文件