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">