Compare commits

...

2 Commits

Author SHA1 Message Date
5fe2d1fdfe Squashed commit of the following:
commit 230bcba860
Author: 如果当时 <zilinsoft@qq.com>
Date:   Thu Dec 15 22:28:53 2022 +0800

    ####  2022-12-15 V7.0.6
    - *.[新增]新增支持歌手头像从歌曲文件中获取。

# Conflicts:
#	CHANGELOG.md
#	app/src/main/java/com/zlm/hp/ui/MainActivity.java
#	gradle/wrapper/gradle-wrapper.properties
2022-12-15 22:52:04 +08:00
7a49dc638b 因为故障无法运行,先备份再处理。 2022-12-15 21:58:44 +08:00
52 changed files with 187 additions and 270 deletions

View File

@ -5,15 +5,15 @@
<option name="linkedExternalProjectsSettings"> <option name="linkedExternalProjectsSettings">
<GradleProjectSettings> <GradleProjectSettings>
<option name="testRunner" value="GRADLE" /> <option name="testRunner" value="GRADLE" />
<option name="distributionType" value="DEFAULT_WRAPPED" /> <option name="distributionType" value="LOCAL" />
<option name="externalProjectPath" value="$PROJECT_DIR$" /> <option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleJvm" value="JDK" />
<option name="modules"> <option name="modules">
<set> <set>
<option value="$PROJECT_DIR$" /> <option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/app" /> <option value="$PROJECT_DIR$/app" />
</set> </set>
</option> </option>
<option name="resolveModulePerSourceSet" value="false" />
</GradleProjectSettings> </GradleProjectSettings>
</option> </option>
</component> </component>

View File

@ -46,5 +46,10 @@
<option name="name" value="maven" /> <option name="name" value="maven" />
<option name="url" value="http://maven.aliyun.com/nexus/content/repositories/jcenter" /> <option name="url" value="http://maven.aliyun.com/nexus/content/repositories/jcenter" />
</remote-repository> </remote-repository>
<remote-repository>
<option name="id" value="MavenLocal" />
<option name="name" value="MavenLocal" />
<option name="url" value="file:/$USER_HOME$/.m2/repository/" />
</remote-repository>
</component> </component>
</project> </project>

View File

@ -1,5 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="DesignSurface">
<option name="filePathToZoomLevelMap">
<map>
<entry key="..\:/My Codes/Android Code/HappyPlayer5-happy_player6/app/src/main/res/drawable/ios_back_drawable.xml" value="0.1785" />
</map>
</option>
</component>
<component name="NullableNotNullManager"> <component name="NullableNotNullManager">
<option name="myDefaultNullable" value="android.support.annotation.Nullable" /> <option name="myDefaultNullable" value="android.support.annotation.Nullable" />
<option name="myDefaultNotNull" value="android.support.annotation.NonNull" /> <option name="myDefaultNotNull" value="android.support.annotation.NonNull" />

View File

@ -4,6 +4,9 @@
<modules> <modules>
<module fileurl="file://$PROJECT_DIR$/HappyPlayer5-happy_player6.iml" filepath="$PROJECT_DIR$/HappyPlayer5-happy_player6.iml" /> <module fileurl="file://$PROJECT_DIR$/HappyPlayer5-happy_player6.iml" filepath="$PROJECT_DIR$/HappyPlayer5-happy_player6.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/app/HappyPlayer5-happy_player6.app.iml" filepath="$PROJECT_DIR$/.idea/modules/app/HappyPlayer5-happy_player6.app.iml" /> <module fileurl="file://$PROJECT_DIR$/.idea/modules/app/HappyPlayer5-happy_player6.app.iml" filepath="$PROJECT_DIR$/.idea/modules/app/HappyPlayer5-happy_player6.app.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/app/HappyPlayer5-happy_player6.app.androidTest.iml" filepath="$PROJECT_DIR$/.idea/modules/app/HappyPlayer5-happy_player6.app.androidTest.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/app/HappyPlayer5-happy_player6.app.main.iml" filepath="$PROJECT_DIR$/.idea/modules/app/HappyPlayer5-happy_player6.app.main.iml" />
<module fileurl="file://$PROJECT_DIR$/.idea/modules/app/HappyPlayer5-happy_player6.app.unitTest.iml" filepath="$PROJECT_DIR$/.idea/modules/app/HappyPlayer5-happy_player6.app.unitTest.iml" />
</modules> </modules>
</component> </component>
</project> </project>

View File

@ -1,3 +1,7 @@
#### 2022-12-15 V7.0.6
- *.[新增]新增支持歌手头像从歌曲文件中获取。
#### 2022-02-13 V7.0.5 #### 2022-02-13 V7.0.5
- *.[改进]启动软件时自动播放歌曲。 - *.[改进]启动软件时自动播放歌曲。
@ -21,7 +25,6 @@
- *.[改进]本地音乐排序为按创建时间倒序。 - *.[改进]本地音乐排序为按创建时间倒序。
#### 2020-12-17 V7.0.1 #### 2020-12-17 V7.0.1
- *.[改进]暂停播放视频时,左上角的时间依旧在更新。 - *.[改进]暂停播放视频时,左上角的时间依旧在更新。
- *.[新增]音频歌曲歌词界面新增左上角时间显示。 - *.[新增]音频歌曲歌词界面新增左上角时间显示。
- *.[新增]打开歌词界面过几秒后,自动进入全屏写真模式显示。 - *.[新增]打开歌词界面过几秒后,自动进入全屏写真模式显示。

View File

@ -8,8 +8,8 @@ android {
applicationId "com.zlm.hp" applicationId "com.zlm.hp"
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 29 targetSdkVersion 29
versionCode 11 versionCode 12
versionName "V7.0.5" versionName "V7.0.6"
/**添加多 dex分包支持*/ /**添加多 dex分包支持*/
multiDexEnabled true multiDexEnabled true
useLibrary 'org.apache.http.legacy' useLibrary 'org.apache.http.legacy'
@ -131,4 +131,4 @@ dependencies {
*/ */
implementation 'com.github.zhangliangming:Subtitle:v1.2' implementation 'com.github.zhangliangming:Subtitle:v1.2'
} }

View File

@ -172,7 +172,7 @@ public static java.lang.String TABLENAME;
#implementation 'com.github.zhangliangming:Subtitle:v1.0' #implementation 'com.github.zhangliangming:Subtitle:v1.0'
-keep class com.zlm.subtitlelibrary.** { *; } -keep class com.zlm.subtitlelibrary.** { *; }
-keep class com.xuexiang.xui.widget.edittext.materialedittext.** { *; }
#6混淆项目代码 #6混淆项目代码
-keep class com.zlm.** -keep class com.zlm.**
-keepclassmembers class com.zlm.** { -keepclassmembers class com.zlm.** {

View File

@ -5,8 +5,6 @@ import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4; import android.support.test.runner.AndroidJUnit4;
import android.util.Log; import android.util.Log;
import androidx.test.runner.AndroidJUnit4;
import com.zlm.down.entity.DownloadTask; import com.zlm.down.entity.DownloadTask;
import com.zlm.down.interfaces.IDownloadTaskEvent; import com.zlm.down.interfaces.IDownloadTaskEvent;
import com.zlm.down.manager.DownloadTaskManager; import com.zlm.down.manager.DownloadTaskManager;

View File

@ -8,6 +8,7 @@
<!-- 存储权限 --> <!-- 存储权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 显示悬浮窗口权限 --> <!-- 显示悬浮窗口权限 -->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
@ -41,7 +42,7 @@
android:name="android.max_aspect" android:name="android.max_aspect"
android:value="2.1" /> android:value="2.1" />
<activity android:name=".SplashActivity"> <activity android:name=".SplashActivity" android:exported="true">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
@ -50,6 +51,7 @@
</activity> </activity>
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:exported="true"
android:configChanges="screenSize|keyboardHidden|orientation" /> android:configChanges="screenSize|keyboardHidden|orientation" />
<activity android:name=".SettingActivity" /> <activity android:name=".SettingActivity" />
<activity android:name=".AboutActivity" /> <activity android:name=".AboutActivity" />

View File

@ -1,4 +1,6 @@
package com.zlm.hp.adapter; package com.zlm.hp.adapter;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter; import androidx.fragment.app.FragmentPagerAdapter;

View File

@ -1,5 +1,6 @@
package com.zlm.hp.adapter; package com.zlm.hp.adapter;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter; import androidx.fragment.app.FragmentPagerAdapter;

View File

@ -88,10 +88,10 @@ public class HPApplication extends MultiDexApplication {
initLog(ResourceConstants.PATH_LOGCAT); initLog(ResourceConstants.PATH_LOGCAT);
//初始化bugly //初始化bugly
//initBugly(); initBugly();
//初始化LeakCanary //初始化LeakCanary
//initLeakCanary(); initLeakCanary();
// 获取当前进程名 // 获取当前进程名
String processName = getProcessName(android.os.Process.myPid()); String processName = getProcessName(android.os.Process.myPid());

View File

@ -251,6 +251,7 @@ public class AudioInfoDB {
*/ */
public static List<AudioInfo> getLocalAudios(Context context) { public static List<AudioInfo> getLocalAudios(Context context) {
try { try {
//按创建时间倒序
List<AudioInfo> audioInfos = DBHelper.getInstance(context).getDaoSession().getAudioInfoDao().queryBuilder().where(new WhereCondition.StringCondition(AudioInfoDao.Properties.Type.columnName + "=? or ( " + AudioInfoDao.Properties.Type.columnName + "=? and " + AudioInfoDao.Properties.Status.columnName + List<AudioInfo> audioInfos = DBHelper.getInstance(context).getDaoSession().getAudioInfoDao().queryBuilder().where(new WhereCondition.StringCondition(AudioInfoDao.Properties.Type.columnName + "=? or ( " + AudioInfoDao.Properties.Type.columnName + "=? and " + AudioInfoDao.Properties.Status.columnName +
"=? )", AudioInfo.TYPE_LOCAL + "", AudioInfo.TYPE_NET + "", AudioInfo.STATUS_FINISH + "")).orderDesc(AudioInfoDao.Properties.CreateTime).list(); "=? )", AudioInfo.TYPE_LOCAL + "", AudioInfo.TYPE_NET + "", AudioInfo.STATUS_FINISH + "")).orderDesc(AudioInfoDao.Properties.CreateTime).list();
return audioInfos; return audioInfos;

View File

@ -130,11 +130,6 @@ public class AudioInfo implements Parcelable {
* MV路径 * MV路径
*/ */
private String mvPath; private String mvPath;
/**
* 是否播放MV
*/
@Transient
private boolean IsPlayMV;
/** /**
* *
*/ */
@ -377,13 +372,7 @@ public class AudioInfo implements Parcelable {
public void setMvPath(String mvPath) { public void setMvPath(String mvPath) {
this.mvPath = mvPath; this.mvPath = mvPath;
} }
public boolean getIsPlayMV() {
return IsPlayMV;
}
public void setIsPlayMV(boolean isPlayMv) {
this.IsPlayMV = isPlayMv;
}
public int getPlayProgress() { public int getPlayProgress() {
return playProgress; return playProgress;
} }

View File

@ -7,11 +7,6 @@ import android.os.HandlerThread;
import android.os.Looper; import android.os.Looper;
import android.os.Message; import android.os.Message;
import android.os.Process; import android.os.Process;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -24,6 +19,10 @@ import android.widget.FrameLayout;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import com.zlm.hp.handler.WeakRefHandler; import com.zlm.hp.handler.WeakRefHandler;
import com.zlm.hp.ui.R; import com.zlm.hp.ui.R;
import com.zlm.hp.util.AppBarUtil; import com.zlm.hp.util.AppBarUtil;

View File

@ -41,15 +41,7 @@ public class ActivityManager {
public void removeActivity(Activity activity) { public void removeActivity(Activity activity) {
activityList.remove(activity); activityList.remove(activity);
} }
public boolean existActivity(Class<?> classinfo)
{
for (Activity item : activityList) {
if (!item.isFinishing() && item != null) {
if(item.getClass()==classinfo){return true;}
}
}
return false;
}
/** /**
* 退出 * 退出
*/ */

View File

@ -57,6 +57,7 @@ public class AudioBroadcastReceiver {
* 播放 * 播放
*/ */
public static final int ACTION_CODE_PLAYING = 3; public static final int ACTION_CODE_PLAYING = 3;
/** /**
* 播放本地歌曲 * 播放本地歌曲
*/ */
@ -242,14 +243,7 @@ public class AudioBroadcastReceiver {
* 播放网络视频 * 播放网络视频
*/ */
public static final int ACTION_CODE_PLAYNETVIDEO = 40; public static final int ACTION_CODE_PLAYNETVIDEO = 40;
/**
* 显示歌词界面
*/
public static final int ACTION_CODE_SHOWLRCVIEW = 42;
/**
* 关闭歌词窗体
*/
public static final int ACTION_LRC_CLOSE = 43;
private BroadcastReceiver mBroadcastReceiver; private BroadcastReceiver mBroadcastReceiver;
private IntentFilter mIntentFilter; private IntentFilter mIntentFilter;
private AudioReceiverListener mReceiverListener; private AudioReceiverListener mReceiverListener;
@ -406,22 +400,6 @@ public class AudioBroadcastReceiver {
public static void sendVideoCloserReceiver(Context context) { public static void sendVideoCloserReceiver(Context context) {
sendReceiver(context, ACTION_VIDEO_CLOSE, null, null); sendReceiver(context, ACTION_VIDEO_CLOSE, null, null);
} }
/**
* 显示歌词界面
*
* @param context
*/
public static void sendShowLrcViewReceiver(Context context) {
sendReceiver(context, ACTION_CODE_SHOWLRCVIEW, null, null);
}
/**
* 关闭歌词界面
*
* @param context
*/
public static void sendCloseLrcViewReceiver(Context context) {
sendReceiver(context, ACTION_LRC_CLOSE, null, null);
}
/** /**
* 在线歌曲下载完成 * 在线歌曲下载完成
* *

View File

@ -621,7 +621,6 @@ public class AudioPlayerService extends Service {
isPlayMV = true; isPlayMV = true;
} }
} }
audioInfo.setIsPlayMV(isPlayMV);
if ((isPlayMV && MvPath != null) || filePath == null || filePath.isEmpty()) { //如果会播放MV则进入下一步操作 if ((isPlayMV && MvPath != null) || filePath == null || filePath.isEmpty()) { //如果会播放MV则进入下一步操作
File MVFile = new File(MvPath); File MVFile = new File(MvPath);
@ -693,8 +692,9 @@ public class AudioPlayerService extends Service {
AudioBroadcastReceiver.sendPlayReceiver(mContext, audioInfo); AudioBroadcastReceiver.sendPlayReceiver(mContext, audioInfo);
mWorkerHandler.removeMessages(MESSAGE_WHAT_LOADPLAYPROGRESSDATA); mWorkerHandler.removeMessages(MESSAGE_WHAT_LOADPLAYPROGRESSDATA);
mWorkerHandler.sendEmptyMessage(MESSAGE_WHAT_LOADPLAYPROGRESSDATA); mWorkerHandler.sendEmptyMessage(MESSAGE_WHAT_LOADPLAYPROGRESSDATA);
mMediaPlayer.start(); mMediaPlayer.start();
AudioBroadcastReceiver.sendShowLrcViewReceiver(mContext);
} }
} }
}); });

View File

@ -7,11 +7,6 @@ import android.os.HandlerThread;
import android.os.Looper; import android.os.Looper;
import android.os.Message; import android.os.Message;
import android.os.Process; import android.os.Process;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.content.ContextCompat;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -20,6 +15,11 @@ import android.widget.FrameLayout;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.content.ContextCompat;
import com.zlm.hp.handler.WeakRefHandler; import com.zlm.hp.handler.WeakRefHandler;
import com.zlm.hp.manager.ActivityManager; import com.zlm.hp.manager.ActivityManager;
import com.zlm.hp.util.AppBarUtil; import com.zlm.hp.util.AppBarUtil;

View File

@ -329,7 +329,6 @@ public class LocalVideoActivity extends BaseActivity {
mUIHandler.sendEmptyMessage(MESSAGE_WHAT_TIMECHANGE); mUIHandler.sendEmptyMessage(MESSAGE_WHAT_TIMECHANGE);
//播放视频 //播放视频
playVideo(); playVideo();
AudioBroadcastReceiver.sendCloseLrcViewReceiver(mContext);
} }
/** /**

View File

@ -1946,9 +1946,6 @@ public class LrcActivity extends BaseActivity {
*/ */
private void handleAudioBroadcastReceiver(Intent intent, int code) { private void handleAudioBroadcastReceiver(Intent intent, int code) {
switch (code) { switch (code) {
case AudioBroadcastReceiver.ACTION_LRC_CLOSE:
this.finish();
break;
case AudioBroadcastReceiver.ACTION_CODE_NULL: case AudioBroadcastReceiver.ACTION_CODE_NULL:
//空数据 //空数据

View File

@ -6,15 +6,10 @@ import android.graphics.Bitmap;
import android.graphics.BitmapFactory; import android.graphics.BitmapFactory;
import android.graphics.Color; import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.BitmapDrawable;
import android.media.MediaMetadataRetriever;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Message; import android.os.Message;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager.widget.ViewPager;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.view.Display; import android.view.Display;
@ -33,6 +28,12 @@ import android.widget.RelativeLayout;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager.widget.ViewPager;
import com.dou361.dialogui.DialogUIUtils; import com.dou361.dialogui.DialogUIUtils;
import com.dou361.dialogui.listener.DialogUIListener; import com.dou361.dialogui.listener.DialogUIListener;
import com.suke.widget.SwitchButton; import com.suke.widget.SwitchButton;
@ -83,7 +84,6 @@ import com.zlm.libs.widget.MusicSeekBar;
import com.zlm.libs.widget.SlidingMenuLayout; import com.zlm.libs.widget.SlidingMenuLayout;
import java.io.File; import java.io.File;
import java.security.cert.CertPathValidatorException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -279,10 +279,10 @@ public class MainActivity extends BaseActivity {
protected int setContentLayoutResID() { protected int setContentLayoutResID() {
return R.layout.activity_main; return R.layout.activity_main;
} }
//是否第一次使用
private boolean isFirst=true;
@Override @Override
protected void initViews(Bundle savedInstanceState) { protected void initViews(Bundle savedInstanceState) {
initSlidingMenu(); initSlidingMenu();
initViewPage(); initViewPage();
initTitleViews(); initTitleViews();
@ -291,7 +291,6 @@ public class MainActivity extends BaseActivity {
initReceiver(); initReceiver();
initService(); initService();
loadData(); loadData();
AudioPlayerManager.newInstance(mContext).play(mMusicSeekBar.getProgress());
} }
@ -301,24 +300,7 @@ public class MainActivity extends BaseActivity {
private void initService() { private void initService() {
AudioPlayerService.startService(this); AudioPlayerService.startService(this);
} }
private void ShowLrcView()
{
if (mSlidingMenuLayout.isShowingMenu()) {
mSlidingMenuLayout.hideMenu();
return;
}
if (mIsShowPopPlayList) {
hidePopPlayListView();
return;
}
if(!ActivityManager.getInstance().existActivity(LrcActivity.class)) {
Intent intent = new Intent(MainActivity.this, LrcActivity.class);
startActivity(intent);
}
//去掉动画
overridePendingTransition(0, 0);
}
/** /**
* 初始化广播 * 初始化广播
@ -439,17 +421,30 @@ public class MainActivity extends BaseActivity {
mMusicSeekBar.setMax((int) initAudioInfo.getDuration()); mMusicSeekBar.setMax((int) initAudioInfo.getDuration());
mMusicSeekBar.setProgress((int) initAudioInfo.getPlayProgress()); mMusicSeekBar.setProgress((int) initAudioInfo.getPlayProgress());
mMusicSeekBar.setSecondaryProgress(0); mMusicSeekBar.setSecondaryProgress(0);
MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
//加载歌手头像 mediaMetadataRetriever.setDataSource(initAudioInfo.getFilePath());
ImageUtil.loadSingerImage(mContext, mArtistImageView, initAudioInfo.getSingerName(), mConfigInfo.isWifi(), 400, 400, new AsyncHandlerTask(mUIHandler, mWorkerHandler), new ImageUtil.ImageLoadCallBack() { byte[] cover = mediaMetadataRetriever.getEmbeddedPicture();
@Override Bitmap singer_bitmap = BitmapFactory.decodeByteArray(cover, 0, cover.length);
public void callback(Bitmap bitmap) { if(singer_bitmap!=null)
//if (bitmap != null) { {
AudioBroadcastReceiver.sendNotifiyImgLoadedReceiver(mContext, initAudioInfo); mArtistImageView.setImageDrawable(new BitmapDrawable(singer_bitmap));
// } mArtistImageView.setTag(initAudioInfo.getFilePath().hashCode() + "");
} if(cover!=null) {
}); Bitmap singer_bitmap = BitmapFactory.decodeByteArray(cover, 0, cover.length);
mArtistImageView.setImageDrawable(new BitmapDrawable(singer_bitmap));
mArtistImageView.setTag(initAudioInfo.getFilePath().hashCode()+"");
}
else {
//加载歌手头像
ImageUtil.loadSingerImage(mContext, mArtistImageView, initAudioInfo.getSingerName(), mConfigInfo.isWifi(), 400, 400, new AsyncHandlerTask(mUIHandler, mWorkerHandler), new ImageUtil.ImageLoadCallBack() {
@Override
public void callback(Bitmap bitmap) {
//if (bitmap != null) {
AudioBroadcastReceiver.sendNotifiyImgLoadedReceiver(mContext, initAudioInfo);
// }
}
});
}
//加载歌词 //加载歌词
String keyWords = initAudioInfo.getTitle(); String keyWords = initAudioInfo.getTitle();
LyricsManager.newInstance(mContext).loadLyrics(initAudioInfo.getFilePath(),keyWords, keyWords, initAudioInfo.getDuration() + "", initAudioInfo.getHash(), mConfigInfo.isWifi(), new AsyncHandlerTask(mUIHandler, mWorkerHandler), null); LyricsManager.newInstance(mContext).loadLyrics(initAudioInfo.getFilePath(),keyWords, keyWords, initAudioInfo.getDuration() + "", initAudioInfo.getHash(), mConfigInfo.isWifi(), new AsyncHandlerTask(mUIHandler, mWorkerHandler), null);
@ -470,8 +465,7 @@ public class MainActivity extends BaseActivity {
if (mAdapter != null) if (mAdapter != null)
mAdapter.reshViewHolder(null); mAdapter.reshViewHolder(null);
} }
//region 加载歌词界面
//endregion
break; break;
case AudioBroadcastReceiver.ACTION_CODE_PLAY: case AudioBroadcastReceiver.ACTION_CODE_PLAY:
if (mPauseImageView.getVisibility() != View.VISIBLE) if (mPauseImageView.getVisibility() != View.VISIBLE)
@ -479,9 +473,7 @@ public class MainActivity extends BaseActivity {
if (mPlayImageView.getVisibility() != View.INVISIBLE) if (mPlayImageView.getVisibility() != View.INVISIBLE)
mPlayImageView.setVisibility(View.INVISIBLE); mPlayImageView.setVisibility(View.INVISIBLE);
break;
case AudioBroadcastReceiver.ACTION_CODE_SHOWLRCVIEW:
ShowLrcView();
break; break;
case AudioBroadcastReceiver.ACTION_CODE_PLAYING: case AudioBroadcastReceiver.ACTION_CODE_PLAYING:
@ -798,7 +790,20 @@ public class MainActivity extends BaseActivity {
mPlayerBarLL.setOnClickListener(new View.OnClickListener() { mPlayerBarLL.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
ShowLrcView(); if (mSlidingMenuLayout.isShowingMenu()) {
mSlidingMenuLayout.hideMenu();
return;
}
if (mIsShowPopPlayList) {
hidePopPlayListView();
return;
}
Intent intent = new Intent(MainActivity.this, LrcActivity.class);
startActivity(intent);
//去掉动画
overridePendingTransition(0, 0);
} }
}); });
//mSlidingMenuLayout.addIgnoreHorizontalView(mPlayerBarLL); //mSlidingMenuLayout.addIgnoreHorizontalView(mPlayerBarLL);
@ -1028,17 +1033,6 @@ public class MainActivity extends BaseActivity {
if (!file.exists()) { if (!file.exists()) {
AudioInfoDB.deleteAudio(mContext, temp.getHash(), false); 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) { }catch (Exception e) {
e.printStackTrace(); e.printStackTrace();

View File

@ -8,7 +8,6 @@ import android.view.MotionEvent;
import android.view.View; import android.view.View;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.CompoundButton;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.Spinner; import android.widget.Spinner;
import android.widget.TextView; import android.widget.TextView;
@ -16,7 +15,6 @@ import android.widget.TextView;
import com.dou361.dialogui.DialogUIUtils; import com.dou361.dialogui.DialogUIUtils;
import com.dou361.dialogui.listener.DialogUIListener; import com.dou361.dialogui.listener.DialogUIListener;
import com.suke.widget.SwitchButton; import com.suke.widget.SwitchButton;
import com.xuexiang.xui.utils.WidgetUtils;
import com.zlm.hp.constants.ConfigInfo; import com.zlm.hp.constants.ConfigInfo;
import com.zlm.hp.constants.ResourceConstants; import com.zlm.hp.constants.ResourceConstants;
import com.zlm.hp.db.util.DownloadThreadInfoDB; import com.zlm.hp.db.util.DownloadThreadInfoDB;
@ -58,7 +56,7 @@ public class SettingActivity extends BaseActivity {
/** /**
* 歌手歌曲名居中显示开关 * 歌手歌曲名居中显示开关
*/ */
private com.xuexiang.xui.widget.button.switchbutton.SwitchButton mCenterSingerSongSwitchButton; private SwitchButton mCenterSingerSongSwitchButton;
/** /**
* MV播放模式 * MV播放模式
*/ */
@ -196,9 +194,9 @@ public class SettingActivity extends BaseActivity {
} }
}); });
mCenterSingerSongSwitchButton = findViewById(R.id.center_singersongname_switch); mCenterSingerSongSwitchButton = findViewById(R.id.center_singersongname_switch);
mCenterSingerSongSwitchButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { mCenterSingerSongSwitchButton.setOnCheckedChangeListener(new SwitchButton.OnCheckedChangeListener() {
@Override @Override
public void onCheckedChanged(CompoundButton view, boolean isChecked) { public void onCheckedChanged(SwitchButton view, boolean isChecked) {
if (mConfigInfo.isCenterSingerSongName() != isChecked) if (mConfigInfo.isCenterSingerSongName() != isChecked)
mConfigInfo.setIsCenterSingerSongName(isChecked).save(); mConfigInfo.setIsCenterSingerSongName(isChecked).save();
} }
@ -208,14 +206,13 @@ public class SettingActivity extends BaseActivity {
list.add("只播放MV"); list.add("只播放MV");
list.add("随机选择播放MV和歌曲"); list.add("随机选择播放MV和歌曲");
mMVPlayMode=findViewById(R.id.mvplaymode_spinner); mMVPlayMode=findViewById(R.id.mvplaymode_spinner);
WidgetUtils.initSpinnerStyle(mMVPlayMode);
//第二步为下拉列表定义一个适配器 //第二步为下拉列表定义一个适配器
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list); adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
//第三步设置下拉列表下拉时的菜单样式 //第三步设置下拉列表下拉时的菜单样式
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
adapter.notifyDataSetChanged();
//第四步将适配器添加到下拉列表上 //第四步将适配器添加到下拉列表上
mMVPlayMode.setAdapter(adapter); mMVPlayMode.setAdapter(adapter);
adapter.notifyDataSetChanged();
//第五步添加监听器为下拉列表设置事件的响应 //第五步添加监听器为下拉列表设置事件的响应
mMVPlayMode.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() { mMVPlayMode.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() {
@Override @Override

View File

@ -9,11 +9,12 @@ import android.graphics.Color;
import android.media.MediaPlayer; import android.media.MediaPlayer;
import android.os.Bundle; import android.os.Bundle;
import android.os.Message; import android.os.Message;
import androidx.core.app.ActivityCompat;
import androidx.core.content.PermissionChecker;
import android.view.animation.Animation; import android.view.animation.Animation;
import android.view.animation.AnimationUtils; import android.view.animation.AnimationUtils;
import androidx.core.app.ActivityCompat;
import androidx.core.content.PermissionChecker;
import com.dou361.dialogui.DialogUIUtils; import com.dou361.dialogui.DialogUIUtils;
import com.dou361.dialogui.listener.DialogUIListener; import com.dou361.dialogui.listener.DialogUIListener;
import com.zlm.hp.constants.ConfigInfo; import com.zlm.hp.constants.ConfigInfo;
@ -203,6 +204,7 @@ public class SplashActivity extends BaseActivity {
boolean isFrist = PreferencesUtil.getBoolean(getApplicationContext(), Constants.IS_FRIST_KEY, true); boolean isFrist = PreferencesUtil.getBoolean(getApplicationContext(), Constants.IS_FRIST_KEY, true);
if (isFrist) { if (isFrist) {
//1.扫描本地歌曲列表 //1.扫描本地歌曲列表
List<AudioInfo> audioInfos = MediaUtil.scanLocalMusic(getApplicationContext(), null); List<AudioInfo> audioInfos = MediaUtil.scanLocalMusic(getApplicationContext(), null);
if (audioInfos != null && audioInfos.size() > 0) { if (audioInfos != null && audioInfos.size() > 0) {
@ -235,11 +237,6 @@ public class SplashActivity extends BaseActivity {
mUIHandler.sendEmptyMessageDelayed(GOHOME, 5000); mUIHandler.sendEmptyMessageDelayed(GOHOME, 5000);
} }
} }
if (isFrist) {
configInfo.setWire(true);//支持线控
configInfo.setStatusBarShow(false);//不显示状态栏
configInfo.save();
}
} }
/** /**

View File

@ -37,7 +37,6 @@ import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Random;
/** /**
* @Description: * @Description:
@ -280,7 +279,7 @@ public class ImageUtil {
SingerInfo singerInfo = new SingerInfo(); SingerInfo singerInfo = new SingerInfo();
singerInfo.setImageUrl(temp.getAbsolutePath()); singerInfo.setImageUrl(temp.getAbsolutePath());
singerInfo.setSingerName(singerName); singerInfo.setSingerName(singerName);
listResult.add(RandomUtil.RandomInt(0,listResult.size()), singerInfo); listResult.add(singerInfo);
break; break;
} }
} }
@ -350,12 +349,30 @@ public class ImageUtil {
*/ */
private static void addAndSortData(List<SingerInfo> returnResult, List<List<SingerInfo>> tempReturnResult, List<String> singerNames) { private static void addAndSortData(List<SingerInfo> returnResult, List<List<SingerInfo>> tempReturnResult, List<String> singerNames) {
for (int i = 0; i < singerNames.size(); i++) { for (int i = 0; i < singerNames.size(); i++) {
List<SingerInfo> tempList = tempReturnResult.get(i); if (i == 0) {
while(tempList.size()>0){ returnResult.addAll(tempReturnResult.get(i));
int max=tempList.size()-1,min=0; } else {
int ran2 = (int) (Math.random()*(max-min)+min); String tag = singerNames.get(i - 1);
returnResult.add(tempList.get(ran2)); List<SingerInfo> tempList = tempReturnResult.get(i);
tempList.remove(ran2);
boolean flag = tempList.size() - returnResult.size() > 0 ? true : false;
int minSize = tempList.size() > returnResult.size() ? returnResult.size() : tempList.size();
int modSize = Math.abs(tempList.size() - returnResult.size());
int z = 0;
for (int j = 0; j < minSize; j++) {
for (; z < returnResult.size(); z++) {
SingerInfo temp = returnResult.get(z);
if (temp.getSingerName().equals(tag)) {
returnResult.add(++z, tempList.get(j));
break;
}
}
}
if (flag) {
for (int k = modSize; k < tempList.size(); k++) {
returnResult.add(tempList.get(k));
}
}
} }
} }
} }

View File

@ -34,10 +34,7 @@ public class RandomUtil {
} }
mLastNum = mSize - 1; mLastNum = mSize - 1;
} }
public static int RandomInt(int min,int max)
{
return (new Random()).nextInt((max - min) + 1) + min;
}
/** /**
* 生成随机数 * 生成随机数
* @return * @return

View File

@ -82,9 +82,8 @@ public class StorageUtil {
String path = (String) getPath.invoke(obj); String path = (String) getPath.invoke(obj);
info = new StorageInfo(path); info = new StorageInfo(path);
File file = new File(info.getPath()); File file = new File(info.getPath());
Boolean result= file.canWrite();
if ((file.exists()) && (file.isDirectory()) if ((file.exists()) && (file.isDirectory())
) { && (file.canWrite())) {
Method isRemovable = obj.getClass().getMethod( Method isRemovable = obj.getClass().getMethod(
"isRemovable"); "isRemovable");
String state = null; String state = null;

View File

@ -1,33 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:state_checked="true">
<shape>
<solid android:color="#b3ecbc"/>
<corners android:radius="99dp"/>
</shape>
</item>
<item android:state_enabled="false" android:state_checked="false">
<shape>
<solid android:color="#FEFEFE"/>
<corners android:radius="99dp"/>
<stroke
android:width="1.5dp"
android:color="#F0F0F0"/>
</shape>
</item>
<item android:state_checked="true">
<shape>
<solid android:color="@color/xui_config_color_main_theme"/>
<corners android:radius="99dp"/>
</shape>
</item>
<item>
<shape>
<solid android:color="#FEFEFE"/>
<corners android:radius="99dp"/>
<stroke
android:width="1.5dp"
android:color="#E6E6E6"/>
</shape>
</item>
</selector>

View File

@ -64,12 +64,12 @@
</RelativeLayout> </RelativeLayout>
<androidx.recyclerview.widget.RecyclerView <android.support.v7.widget.RecyclerView
android:id="@+id/file_recyclerView" android:id="@+id/file_recyclerView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_above="@+id/selectFile" android:layout_above="@+id/selectFile"
android:layout_below="@+id/op_heaad"></androidx.recyclerview.widget.RecyclerView> android:layout_below="@+id/op_heaad"></android.support.v7.widget.RecyclerView>
<Button <Button

View File

@ -21,6 +21,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent" />
<include layout="@layout/layout_lrc"></include> <include layout="@layout/layout_lrc"></include>
<ViewStub <ViewStub

View File

@ -203,11 +203,11 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<androidx.viewpager.widget.ViewPager <android.support.v4.view.ViewPager
android:id="@+id/viewpage" android:id="@+id/viewpage"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_margin="20dp"></androidx.viewpager.widget.ViewPager> android:layout_margin="20dp"></android.support.v4.view.ViewPager>
</RelativeLayout> </RelativeLayout>
</RelativeLayout> </RelativeLayout>

View File

@ -54,11 +54,11 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:visibility="gone"> android:visibility="gone">
<androidx.recyclerview.widget.RecyclerView <android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView" android:id="@+id/recyclerView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_above="@+id/bottomlayout"></androidx.recyclerview.widget.RecyclerView> android:layout_above="@+id/bottomlayout"></android.support.v7.widget.RecyclerView>
<LinearLayout <LinearLayout
android:id="@+id/bottomlayout" android:id="@+id/bottomlayout"

View File

@ -146,14 +146,14 @@
android:textSize="@dimen/title_size" /> android:textSize="@dimen/title_size" />
<com.xuexiang.xui.widget.button.switchbutton.SwitchButton <com.suke.widget.SwitchButton
android:id="@+id/center_singersongname_switch" android:id="@+id/center_singersongname_switch"
style="@style/SwitchButtonStyleMD"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentRight="true" android:layout_alignParentRight="true"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:layout_marginRight="5dp"/> android:layout_marginRight="5dp"
app:sb_checked_color="@color/defColor" />
</com.zlm.hp.widget.ListItemRelativeLayout> </com.zlm.hp.widget.ListItemRelativeLayout>
<com.zlm.hp.widget.DividerView <com.zlm.hp.widget.DividerView
@ -178,7 +178,6 @@
<Spinner <Spinner
android:id="@+id/mvplaymode_spinner" android:id="@+id/mvplaymode_spinner"
style="@style/SpinnerStyle"
android:layout_alignParentRight="true" android:layout_alignParentRight="true"
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:layout_marginRight="5dp" android:layout_marginRight="5dp"

View File

@ -4,10 +4,10 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"> android:orientation="vertical">
<androidx.recyclerview.widget.RecyclerView <android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView" android:id="@+id/recyclerView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="#fff" android:background="#fff"
android:paddingBottom="@dimen/bar_height"></androidx.recyclerview.widget.RecyclerView> android:paddingBottom="@dimen/bar_height"></android.support.v7.widget.RecyclerView>
</LinearLayout> </LinearLayout>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
@ -11,4 +11,4 @@
android:paddingBottom="@dimen/bar_height"></com.github.jdsjlzx.recyclerview.LRecyclerView> android:paddingBottom="@dimen/bar_height"></com.github.jdsjlzx.recyclerview.LRecyclerView>
</androidx.constraintlayout.widget.ConstraintLayout> </android.support.constraint.ConstraintLayout>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
@ -18,4 +18,4 @@
app:layout_constraintTop_toBottomOf="parent" /> app:layout_constraintTop_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </android.support.constraint.ConstraintLayout>

View File

@ -62,7 +62,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<RecyclerView <android.support.v7.widget.RecyclerView
android:id="@+id/listview" android:id="@+id/listview"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
@ -274,4 +274,4 @@
android:background="#f3f3f3"></View> android:background="#f3f3f3"></View>
</LinearLayout> </LinearLayout>
</ScrollView> </ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout> </android.support.constraint.ConstraintLayout>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/net_layout" android:id="@+id/net_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -30,4 +30,4 @@
app:layout_constraintBottom_toBottomOf="@+id/nonet_img" /> app:layout_constraintBottom_toBottomOf="@+id/nonet_img" />
</androidx.constraintlayout.widget.ConstraintLayout> </android.support.constraint.ConstraintLayout>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
@ -10,4 +10,4 @@
android:paddingBottom="@dimen/bar_height"></com.github.jdsjlzx.recyclerview.LRecyclerView> android:paddingBottom="@dimen/bar_height"></com.github.jdsjlzx.recyclerview.LRecyclerView>
</androidx.constraintlayout.widget.ConstraintLayout> </android.support.constraint.ConstraintLayout>

View File

@ -3,8 +3,16 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"> android:orientation="vertical">
<TextView
android:id="@+id/TimeStr"
android:layout_width="90dp"
android:layout_height="38dp"
android:layout_above="@id/title"
android:layout_marginTop="4dp"
android:layout_marginLeft="10dp"
android:textColor="@color/colorPrimary"
android:textSize="22sp"
android:text="乐MV" />
<com.github.jdsjlzx.recyclerview.LRecyclerView <com.github.jdsjlzx.recyclerview.LRecyclerView
android:id="@+id/recyclerView" android:id="@+id/recyclerView"
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
@ -10,4 +10,4 @@
android:paddingBottom="@dimen/bar_height"></com.github.jdsjlzx.recyclerview.LRecyclerView> android:paddingBottom="@dimen/bar_height"></com.github.jdsjlzx.recyclerview.LRecyclerView>
</androidx.constraintlayout.widget.ConstraintLayout> </android.support.constraint.ConstraintLayout>

View File

@ -63,7 +63,7 @@
android:layout_height="match_parent"> android:layout_height="match_parent">
<LinearLayoutRecyclerView <com.zlm.hp.widget.LinearLayoutRecyclerView
android:id="@+id/listview" android:id="@+id/listview"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"

View File

@ -15,7 +15,6 @@
android:textColor="@color/bg_white" android:textColor="@color/bg_white"
android:textSize="22sp" android:textSize="22sp"
android:text="乐MV" /> android:text="乐MV" />
<View <View
android:id="@+id/status_bar_view" android:id="@+id/status_bar_view"
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@ -51,10 +51,10 @@
android:layout_below="@+id/splline" android:layout_below="@+id/splline"
android:orientation="vertical"> android:orientation="vertical">
<RecyclerView <android.support.v7.widget.RecyclerView
android:id="@+id/singerlist_recyclerView" android:id="@+id/singerlist_recyclerView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"></RecyclerView> android:layout_height="match_parent"></android.support.v7.widget.RecyclerView>
</LinearLayout> </LinearLayout>

View File

@ -18,10 +18,10 @@
android:layout_height="@dimen/title_height"></include> android:layout_height="@dimen/title_height"></include>
<androidx.viewpager.widget.ViewPager <android.support.v4.view.ViewPager
android:id="@+id/viewpage" android:id="@+id/viewpage"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"></androidx.viewpager.widget.ViewPager> android:layout_height="match_parent"></android.support.v4.view.ViewPager>
</LinearLayout> </LinearLayout>

View File

@ -101,12 +101,12 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_below="@+id/line"> android:layout_below="@+id/line">
<RecyclerView <android.support.v7.widget.RecyclerView
android:id="@+id/curplaylist_recyclerView" android:id="@+id/curplaylist_recyclerView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_above="@+id/poplistcancel" android:layout_above="@+id/poplistcancel"
android:overScrollMode="never"></RecyclerView> android:overScrollMode="never"></android.support.v7.widget.RecyclerView>
<com.zlm.hp.widget.ListItemRelativeLayout <com.zlm.hp.widget.ListItemRelativeLayout

View File

@ -18,34 +18,7 @@
<item name="android:windowIsTranslucent">true</item> <item name="android:windowIsTranslucent">true</item>
</style> </style>
<style name="AppTheme2" parent="XUITheme.Tablet.Big">
<!-- 自定义自己的主题样式 -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<!--系统默认Spinner样式-->
<style name="SpinnerStyle" parent="@style/Widget.AppCompat.Spinner">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">?attr/ms_item_height_size</item>
<item name="android:spinnerMode">dropdown</item>
<item name="android:background">@drawable/xui_config_bg_spinner</item>
<item name="android:popupBackground">@drawable/ms_drop_down_bg_radius</item>
<item name="android:paddingEnd">@dimen/default_spinner_icon_padding_size</item>
</style>
<style name="SwitchButtonStyleMD" parent="SwitchButtonMD">
<item name="android:paddingStart">10dp</item>
<item name="android:paddingEnd">10dp</item>
<item name="android:paddingTop">4dp</item>
<item name="android:paddingBottom">4dp</item>
</style>
<!-- SwitchButton -->
<style name="SwitchButtonStyle">
<item name="android:paddingStart">?attr/xui_config_content_spacing_horizontal</item>
<item name="android:paddingEnd">?attr/xui_config_content_spacing_horizontal</item>
<item name="android:paddingTop">?attr/xui_config_content_spacing_vertical</item>
<item name="android:paddingBottom">?attr/xui_config_content_spacing_vertical</item>
</style>
<style name="MakeLrcTheme" parent="Base.Theme.AppCompat.Light"> <style name="MakeLrcTheme" parent="Base.Theme.AppCompat.Light">
<!-- Customize your theme here. --> <!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimary">@color/colorPrimary</item>

View File

@ -10,7 +10,7 @@ buildscript {
mavenCentral() mavenCentral()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:4.1.0-rc01' classpath 'com.android.tools.build:gradle:4.2.2'
classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0' classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0'
// NOTE: Do not place your application dependencies here; they belong // NOTE: Do not place your application dependencies here; they belong

View File

@ -1,19 +1,17 @@
# Project-wide Gradle settings. ## For more details on how to configure your build environment visit
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html # http://www.gradle.org/docs/current/userguide/build_environment.html
#
# Specifies the JVM arguments used for the daemon process. # Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings. # The setting is particularly useful for tweaking memory settings.
android.enableJetifier=true # Default value: -Xmx1024m -XX:MaxPermSize=256m
android.useAndroidX=true # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.jvmargs=-Xmx1536m #
# When configured, Gradle will run in incubating parallel mode. # When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit # This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true # org.gradle.parallel=true
#Sun Jan 03 23:45:32 CST 2021
org.gradle.jvmargs=-Xmx1536m
android.useAndroidX=true
android.enableJetifier=true
android.injected.testOnly=false

View File

@ -1,6 +1,6 @@
#Sat Sep 26 12:04:29 CST 2020 #Sat Sep 26 12:04:29 CST 2020
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionUrl=file:///E:/\u6211\u7684\u4EE3\u7801/android/gradle\u5305/gradle-6.6.1-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-6.6.1-bin.zip
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME

View File

@ -53,12 +53,7 @@ android5.0及以上
# 更新日志 # # 更新日志 #
## 2020-11-28 ##
- 基于6.0全新开发,更新日志请看更新日志文件。
## 2019-01-15 ## ## 2019-01-15 ##
- 引入Subtitle库 - 引入Subtitle库
## 2018-01-06 ## ## 2018-01-06 ##