diff --git a/CHANGELOG.md b/CHANGELOG.md
index d53177b..f060697 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+#### 2021-02-18 V7.0.4
+
+- *.[改进]修复部分布局控件未改成支持AndroidX的控件导致的闪退问题。
+- *.[改进]更新歌曲时,新增如果MV已删除,但歌曲还存在时的解决方案。
+- *.[改进]写真图片随机顺序展现。
+
#### 2021-02-18 V7.0.3
- *.[改进]项目改成基于AndroidX。
diff --git a/app/build.gradle b/app/build.gradle
index 3439e7d..fef9ee8 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -51,9 +51,12 @@ dependencies {
androidTestImplementation('androidx.test.espresso:espresso-core:3.1.0', {
exclude group: 'com.android.support', module: 'support-annotations'
})
- implementation 'androidx.appcompat:appcompat:1.0.0'
+ implementation 'com.github.xuexiangjys:XUI:1.1.6'
+ implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
- implementation 'androidx.recyclerview:recyclerview:1.0.0'
+ implementation 'androidx.recyclerview:recyclerview:1.1.0'
+ implementation 'com.google.android.material:material:1.1.0'
+ implementation 'com.github.bumptech.glide:glide:4.11.0'
testImplementation 'junit:junit:4.12'
implementation 'androidx.multidex:multidex:2.0.0'
//第三方bugly
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
index fd67dbd..79eca52 100644
--- a/app/proguard-rules.pro
+++ b/app/proguard-rules.pro
@@ -172,7 +172,7 @@ public static java.lang.String TABLENAME;
#implementation 'com.github.zhangliangming:Subtitle:v1.0'
-keep class com.zlm.subtitlelibrary.** { *; }
-
+-keep class com.xuexiang.xui.widget.edittext.materialedittext.** { *; }
#6混淆项目代码
-keep class com.zlm.**
-keepclassmembers class com.zlm.** {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d65a6c4..9b306be 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,7 +8,6 @@
-
diff --git a/app/src/main/java/com/zlm/hp/ui/CardActivity.java b/app/src/main/java/com/zlm/hp/ui/CardActivity.java
new file mode 100644
index 0000000..7a5390c
--- /dev/null
+++ b/app/src/main/java/com/zlm/hp/ui/CardActivity.java
@@ -0,0 +1,28 @@
+package com.zlm.hp.ui;
+
+import android.os.Bundle;
+import android.os.Message;
+
+import com.dou361.dialogui.DialogUIUtils;
+import com.zlm.hp.constants.ConfigInfo;
+import com.zlm.hp.constants.ResourceConstants;
+import com.zlm.hp.util.FileUtil;
+import com.zlm.hp.util.ResourceUtil;
+
+import java.io.File;
+
+public class CardActivity extends BaseActivity {
+ @Override
+ protected int setContentLayoutResID() {
+ return R.layout.activity_setting;
+ }
+ @Override
+ protected void initViews(Bundle savedInstanceState) {
+ }
+ @Override
+ protected void handleUIMessage(Message msg) {
+ }
+ @Override
+ protected void handleWorkerMessage(Message msg) {
+ }
+}
diff --git a/app/src/main/java/com/zlm/hp/ui/MainActivity.java b/app/src/main/java/com/zlm/hp/ui/MainActivity.java
index 730e03c..23563ac 100644
--- a/app/src/main/java/com/zlm/hp/ui/MainActivity.java
+++ b/app/src/main/java/com/zlm/hp/ui/MainActivity.java
@@ -1019,6 +1019,17 @@ public class MainActivity extends BaseActivity {
if (!file.exists()) {
AudioInfoDB.deleteAudio(mContext, temp.getHash(), false);
}
+ else
+ {
+ if(temp.getMvPath().length()>0) {
+ File file_mv = new File(temp.getMvPath());
+ if (!file_mv.exists()) { //如果歌曲存在,但MV不存在
+ temp.setMvHash("");
+ temp.setMvPath("");
+ AudioInfoDB.updateVideo(mContext, temp);
+ }
+ }
+ }
}
}catch (Exception e) {
e.printStackTrace();
diff --git a/app/src/main/java/com/zlm/hp/ui/SettingActivity.java b/app/src/main/java/com/zlm/hp/ui/SettingActivity.java
index 0324cb9..1aebac7 100644
--- a/app/src/main/java/com/zlm/hp/ui/SettingActivity.java
+++ b/app/src/main/java/com/zlm/hp/ui/SettingActivity.java
@@ -8,6 +8,7 @@ import android.view.MotionEvent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
+import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.TextView;
@@ -15,6 +16,7 @@ import android.widget.TextView;
import com.dou361.dialogui.DialogUIUtils;
import com.dou361.dialogui.listener.DialogUIListener;
import com.suke.widget.SwitchButton;
+import com.xuexiang.xui.utils.WidgetUtils;
import com.zlm.hp.constants.ConfigInfo;
import com.zlm.hp.constants.ResourceConstants;
import com.zlm.hp.db.util.DownloadThreadInfoDB;
@@ -56,7 +58,7 @@ public class SettingActivity extends BaseActivity {
/**
* 歌手歌曲名居中显示开关
*/
- private SwitchButton mCenterSingerSongSwitchButton;
+ private com.xuexiang.xui.widget.button.switchbutton.SwitchButton mCenterSingerSongSwitchButton;
/**
* MV播放模式
*/
@@ -194,9 +196,9 @@ public class SettingActivity extends BaseActivity {
}
});
mCenterSingerSongSwitchButton = findViewById(R.id.center_singersongname_switch);
- mCenterSingerSongSwitchButton.setOnCheckedChangeListener(new SwitchButton.OnCheckedChangeListener() {
+ mCenterSingerSongSwitchButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
- public void onCheckedChanged(SwitchButton view, boolean isChecked) {
+ public void onCheckedChanged(CompoundButton view, boolean isChecked) {
if (mConfigInfo.isCenterSingerSongName() != isChecked)
mConfigInfo.setIsCenterSingerSongName(isChecked).save();
}
@@ -206,13 +208,14 @@ public class SettingActivity extends BaseActivity {
list.add("只播放MV");
list.add("随机选择播放MV和歌曲");
mMVPlayMode=findViewById(R.id.mvplaymode_spinner);
+ WidgetUtils.initSpinnerStyle(mMVPlayMode);
//第二步:为下拉列表定义一个适配器
adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, list);
//第三步:设置下拉列表下拉时的菜单样式
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
- adapter.notifyDataSetChanged();
//第四步:将适配器添加到下拉列表上
mMVPlayMode.setAdapter(adapter);
+ adapter.notifyDataSetChanged();
//第五步:添加监听器,为下拉列表设置事件的响应
mMVPlayMode.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() {
@Override
diff --git a/app/src/main/java/com/zlm/hp/ui/SplashActivity.java b/app/src/main/java/com/zlm/hp/ui/SplashActivity.java
index 8ba41e9..3787e6b 100644
--- a/app/src/main/java/com/zlm/hp/ui/SplashActivity.java
+++ b/app/src/main/java/com/zlm/hp/ui/SplashActivity.java
@@ -203,7 +203,6 @@ public class SplashActivity extends BaseActivity {
boolean isFrist = PreferencesUtil.getBoolean(getApplicationContext(), Constants.IS_FRIST_KEY, true);
if (isFrist) {
-
//1.扫描本地歌曲列表
List audioInfos = MediaUtil.scanLocalMusic(getApplicationContext(), null);
if (audioInfos != null && audioInfos.size() > 0) {
@@ -236,6 +235,11 @@ public class SplashActivity extends BaseActivity {
mUIHandler.sendEmptyMessageDelayed(GOHOME, 5000);
}
}
+ if (isFrist) {
+ configInfo.setWire(true);//支持线控
+ configInfo.setStatusBarShow(false);//不显示状态栏
+ configInfo.save();
+ }
}
/**
diff --git a/app/src/main/java/com/zlm/hp/util/ImageUtil.java b/app/src/main/java/com/zlm/hp/util/ImageUtil.java
index 920a4a8..7490867 100644
--- a/app/src/main/java/com/zlm/hp/util/ImageUtil.java
+++ b/app/src/main/java/com/zlm/hp/util/ImageUtil.java
@@ -37,6 +37,7 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
+import java.util.Random;
/**
* @Description:
@@ -279,7 +280,7 @@ public class ImageUtil {
SingerInfo singerInfo = new SingerInfo();
singerInfo.setImageUrl(temp.getAbsolutePath());
singerInfo.setSingerName(singerName);
- listResult.add(singerInfo);
+ listResult.add(RandomUtil.RandomInt(0,listResult.size()), singerInfo);
break;
}
}
diff --git a/app/src/main/java/com/zlm/hp/util/RandomUtil.java b/app/src/main/java/com/zlm/hp/util/RandomUtil.java
index f8facf0..7992339 100644
--- a/app/src/main/java/com/zlm/hp/util/RandomUtil.java
+++ b/app/src/main/java/com/zlm/hp/util/RandomUtil.java
@@ -34,7 +34,10 @@ public class RandomUtil {
}
mLastNum = mSize - 1;
}
-
+ public static int RandomInt(int min,int max)
+ {
+ return (new Random()).nextInt((max - min) + 1) + min;
+ }
/**
* 生成随机数
* @return
diff --git a/app/src/main/java/com/zlm/hp/util/StorageUtil.java b/app/src/main/java/com/zlm/hp/util/StorageUtil.java
index 0ab014e..9f2596a 100644
--- a/app/src/main/java/com/zlm/hp/util/StorageUtil.java
+++ b/app/src/main/java/com/zlm/hp/util/StorageUtil.java
@@ -82,8 +82,9 @@ public class StorageUtil {
String path = (String) getPath.invoke(obj);
info = new StorageInfo(path);
File file = new File(info.getPath());
+ Boolean result= file.canWrite();
if ((file.exists()) && (file.isDirectory())
- && (file.canWrite())) {
+ ) {
Method isRemovable = obj.getClass().getMethod(
"isRemovable");
String state = null;
diff --git a/app/src/main/res/drawable/icon_ios_thumb.png b/app/src/main/res/drawable/icon_ios_thumb.png
new file mode 100644
index 0000000..a4194e8
Binary files /dev/null and b/app/src/main/res/drawable/icon_ios_thumb.png differ
diff --git a/app/src/main/res/drawable/icon_ios_thumb_disable.png b/app/src/main/res/drawable/icon_ios_thumb_disable.png
new file mode 100644
index 0000000..5fd8093
Binary files /dev/null and b/app/src/main/res/drawable/icon_ios_thumb_disable.png differ
diff --git a/app/src/main/res/drawable/ios_back_drawable.xml b/app/src/main/res/drawable/ios_back_drawable.xml
new file mode 100644
index 0000000..1b3859b
--- /dev/null
+++ b/app/src/main/res/drawable/ios_back_drawable.xml
@@ -0,0 +1,33 @@
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ios_thumb_selector.xml b/app/src/main/res/drawable/ios_thumb_selector.xml
new file mode 100644
index 0000000..6c2ac74
--- /dev/null
+++ b/app/src/main/res/drawable/ios_thumb_selector.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_file_manager.xml b/app/src/main/res/layout/activity_file_manager.xml
index cdb86b5..921fab8 100644
--- a/app/src/main/res/layout/activity_file_manager.xml
+++ b/app/src/main/res/layout/activity_file_manager.xml
@@ -64,12 +64,12 @@
-
+ android:layout_below="@+id/op_heaad">