From 31c16a6004fda7f6b922e83d1917d37580c5daab Mon Sep 17 00:00:00 2001
From: fengyuecanzhu <1021300691@qq.com>
Date: Sun, 30 Aug 2020 16:44:18 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=AE=BE=E7=BD=AE=E7=95=8C?=
=?UTF-8?q?=E9=9D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/caches/build_file_checksums.ser | Bin 537 -> 537 bytes
app/build.gradle | 11 +-
app/src/main/AndroidManifest.xml | 32 +-
app/src/main/assets/updatelog.fy | 8 +
.../myreader/application/MyApplication.java | 17 +-
.../fycz/myreader/application/SysManager.java | 18 +-
.../myreader/backup/BackupAndRestore.java | 10 +-
.../xyz/fycz/myreader/base/BaseActivity.java | 40 +-
.../xyz/fycz/myreader/base/BaseActivity2.java | 66 ++-
.../xyz/fycz/myreader/common/APPCONST.java | 16 +-
.../fycz/myreader/creator/APPDownloadTip.java | 111 +++--
.../fycz/myreader/creator/DialogCreator.java | 99 ++---
.../myreader/creator/MultiChoiceDialog.java | 74 ++++
.../xyz/fycz/myreader/entity/Setting.java | 74 +++-
.../fycz/myreader/greendao/entity/Book.java | 44 +-
.../myreader/greendao/entity/Chapter.java | 26 +-
.../greendao/service/BookMarkService.java | 2 +-
.../greendao/service/BookService.java | 248 +++++++++--
.../greendao/service/ChapterService.java | 36 ++
.../greendao/util/GreenDaoUpgrade.java | 164 -------
.../greendao/util/MySQLiteOpenHelper.java | 18 +-
.../myreader/ui/activity/AboutActivity.java | 2 +-
.../ui/activity/BookDetailedActivity.java | 164 +++++--
.../myreader/ui/activity/CatalogActivity.java | 2 +-
.../ui/activity/FileSystemActivity.java | 11 +-
.../myreader/ui/activity/FontsActivity.java | 2 +-
.../myreader/ui/activity/LoginActivity.java | 2 +-
.../myreader/ui/activity/MainActivity.java | 8 +-
.../ui/activity/MoreSettingActivity.java | 411 ++++++++++++++++++
.../myreader/ui/activity/ReadActivity.java | 10 +-
.../ui/activity/RegisterActivity.java | 2 +-
.../ui/activity/SearchBookActivity.java | 2 +-
.../myreader/ui/activity/SplashActivity.java | 5 +-
.../myreader/ui/adapter/BookMarkAdapter.java | 8 +-
.../ui/adapter/BookStoreBookTypeAdapter.java | 11 +-
.../myreader/ui/adapter/BookcaseAdapter.java | 9 +-
.../ui/adapter/BookcaseDetailedAdapter.java | 10 +-
.../ui/adapter/BookcaseDragAdapter.java | 164 ++++---
.../ui/adapter/ChapterTitleAdapter.java | 6 +-
.../myreader/ui/adapter/FontsAdapter.java | 150 +++----
.../ui/adapter/SearchBookAdapter.java | 18 +-
.../myreader/ui/presenter/AboutPresenter.java | 6 +-
.../ui/presenter/BookStorePresenter.java | 6 +-
.../ui/presenter/BookcasePresenter.java | 142 +++---
.../presenter/CatalogActivityPresenter.java | 4 +-
.../ui/presenter/CatalogPresenter.java | 11 +-
.../myreader/ui/presenter/FontsPresenter.java | 8 +-
.../myreader/ui/presenter/LoginPresenter.java | 10 +-
.../myreader/ui/presenter/MainPresenter.java | 10 +-
.../myreader/ui/presenter/ReadPresenter.java | 83 ++--
.../ui/presenter/RegisterPresenter.java | 8 +-
.../xyz/fycz/myreader/util/BadgeUtil.java | 187 --------
.../myreader/util/CacheFileNameHelper.java | 8 -
.../xyz/fycz/myreader/util/ChschtUtil.java | 31 --
.../myreader/util/DownloadMangerUtils.java | 6 +-
.../fycz/myreader/util/GreenDaoUpgrade.java | 150 -------
.../java/xyz/fycz/myreader/util/OSUtils.java | 121 ++++++
.../fycz/myreader/util/OpenFileHelper.java | 2 +-
.../fycz/myreader/util/PermissionHelper.java | 20 +-
.../fycz/myreader/util/StatusBarCompat.java | 71 ---
.../xyz/fycz/myreader/util/StatusBarUtil.java | 208 +++++++++
.../xyz/fycz/myreader/util/TelephonyUtil.java | 2 +-
.../xyz/fycz/myreader/util/TextHelper.java | 21 -
.../xyz/fycz/myreader/util/ToastUtils.java | 65 +++
.../fycz/myreader/util/utils/StringUtils.java | 151 +++++++
.../xyz/fycz/myreader/webapi/BaseApi.java | 4 +-
.../webapi/crawler/BiQuGeReadCrawler.java | 4 +-
.../webapi/crawler/TianLaiReadCrawler.java | 2 +-
.../fycz/myreader/widget/ProgressButton.java | 147 +++++++
.../fycz/myreader/widget/page/PageLoader.java | 81 +++-
app/src/main/res/drawable/ic_bookmark.xml | 2 +-
.../main/res/drawable/ic_change_source.xml | 9 +
app/src/main/res/drawable/ic_cry_face.xml | 7 +
app/src/main/res/drawable/ic_enable.xml | 9 +
app/src/main/res/drawable/ic_error.xml | 4 +
.../drawable/{ic_launch.xml => ic_link.xml} | 4 +-
app/src/main/res/drawable/ic_question.xml | 9 +
app/src/main/res/drawable/ic_refresh.xml | 9 +
app/src/main/res/drawable/ic_settings.xml | 14 +
app/src/main/res/drawable/ic_smile_face.xml | 9 +
.../main/res/drawable/ic_social_github.xml | 9 +
app/src/main/res/drawable/ic_success.xml | 4 +
.../main/res/layout/activity_more_setting.xml | 334 ++++++++++++++
.../res/layout/activity_read_more_setting.xml | 51 ---
.../main/res/layout/dialog_read_setting.xml | 17 +-
.../res/layout/dialog_read_setting_detail.xml | 9 +-
.../main/res/layout/layout_about_content.xml | 2 +-
.../res/layout/layout_book_detail_header.xml | 45 +-
.../main/res/layout/listview_font_item.xml | 31 +-
app/src/main/res/layout/toolbar.xml | 13 +
app/src/main/res/menu/menu_book.xml | 7 +
app/src/main/res/menu/menu_book_detail.xml | 33 +-
app/src/main/res/mipmap-xhdpi/ic_refresh.png | Bin 1215 -> 0 bytes
app/src/main/res/values/attrs.xml | 29 +-
app/src/main/res/values/colors.xml | 14 +-
app/src/main/res/values/strings.xml | 66 ++-
app/src/main/res/values/styles.xml | 4 +-
app/version_code.properties | 4 +-
98 files changed, 2994 insertions(+), 1434 deletions(-)
create mode 100644 app/src/main/java/xyz/fycz/myreader/creator/MultiChoiceDialog.java
delete mode 100644 app/src/main/java/xyz/fycz/myreader/greendao/util/GreenDaoUpgrade.java
create mode 100644 app/src/main/java/xyz/fycz/myreader/ui/activity/MoreSettingActivity.java
delete mode 100644 app/src/main/java/xyz/fycz/myreader/util/BadgeUtil.java
delete mode 100644 app/src/main/java/xyz/fycz/myreader/util/CacheFileNameHelper.java
delete mode 100644 app/src/main/java/xyz/fycz/myreader/util/ChschtUtil.java
delete mode 100644 app/src/main/java/xyz/fycz/myreader/util/GreenDaoUpgrade.java
create mode 100644 app/src/main/java/xyz/fycz/myreader/util/OSUtils.java
delete mode 100644 app/src/main/java/xyz/fycz/myreader/util/StatusBarCompat.java
create mode 100644 app/src/main/java/xyz/fycz/myreader/util/StatusBarUtil.java
delete mode 100644 app/src/main/java/xyz/fycz/myreader/util/TextHelper.java
create mode 100644 app/src/main/java/xyz/fycz/myreader/util/ToastUtils.java
create mode 100644 app/src/main/java/xyz/fycz/myreader/widget/ProgressButton.java
create mode 100644 app/src/main/res/drawable/ic_change_source.xml
create mode 100644 app/src/main/res/drawable/ic_cry_face.xml
create mode 100644 app/src/main/res/drawable/ic_enable.xml
create mode 100644 app/src/main/res/drawable/ic_error.xml
rename app/src/main/res/drawable/{ic_launch.xml => ic_link.xml} (89%)
create mode 100644 app/src/main/res/drawable/ic_question.xml
create mode 100644 app/src/main/res/drawable/ic_refresh.xml
create mode 100644 app/src/main/res/drawable/ic_settings.xml
create mode 100644 app/src/main/res/drawable/ic_smile_face.xml
create mode 100644 app/src/main/res/drawable/ic_social_github.xml
create mode 100644 app/src/main/res/drawable/ic_success.xml
create mode 100644 app/src/main/res/layout/activity_more_setting.xml
delete mode 100644 app/src/main/res/layout/activity_read_more_setting.xml
create mode 100644 app/src/main/res/layout/toolbar.xml
delete mode 100644 app/src/main/res/mipmap-xhdpi/ic_refresh.png
diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
index bf02cc24fa3ccefcac5930908068af7d36f71e5c..2ecfeb2ee8c3235385e281f216b395185c84bf12 100644
GIT binary patch
delta 36
ucmV+<0NekW1epYomj!e=r8MS|oOclRD3mC6ipzdfR|Nbndb>B1BLVgrau1vU
delta 36
scmbQqGLvP(bk^cuHTU=@&M6m=+L*B4{tTaNyG%fC_9CvP$;yo102T!fw*UYD
diff --git a/app/build.gradle b/app/build.gradle
index 55294e0..727332d 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -94,7 +94,8 @@ dependencies {
implementation 'com.journeyapps:zxing-android-embedded:3.5.0'
- implementation 'org.greenrobot:greendao:3.2.2'
+ implementation 'org.greenrobot:greendao:3.3.0'
+ implementation 'com.github.yuweiguocn:GreenDaoUpgradeHelper:v2.2.1'
implementation 'org.jsoup:jsoup:1.11.3'
@@ -117,10 +118,16 @@ dependencies {
implementation 'com.h6ah4i.android.widget.verticalseekbar:verticalseekbar:1.0.0'
//Scroller
implementation 'com.futuremind.recyclerfastscroll:fastscroll:0.2.5'
+
+ //Toasty
+ implementation 'com.github.GrenderG:Toasty:1.5.0'
+
+ //字符串比较
+ implementation 'net.ricecode:string-similarity:1.0.0'
}
greendao {
- schemaVersion 9
+ schemaVersion 11
daoPackage 'xyz.fycz.myreader.greendao.gen'
// targetGenDir 'src/main/java'
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3c0b836..1bb3d26 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -4,9 +4,11 @@
-
+
+
-
+
+
@@ -24,20 +26,28 @@
-
-
-
+
+
+
+
+
+
-
-
+
+
+
+
-
-
-
+
+
+
+
+
+
@@ -104,6 +114,8 @@
+
+
diff --git a/app/src/main/assets/updatelog.fy b/app/src/main/assets/updatelog.fy
index 74cc7ad..4d023b4 100644
--- a/app/src/main/assets/updatelog.fy
+++ b/app/src/main/assets/updatelog.fy
@@ -1,3 +1,11 @@
+2020.08.24
+风月读书v1.20.082422
+1、重做书籍详情界面
+2、新增书籍启用\关闭更新(此功能在书籍详情页右上角菜单)
+3、优化应用提示信息显示效果
+4、优化字体界面
+5、修复已知bug
+
2020.08.15
风月读书v1.20.081523
1、修复安卓10(Q)无法访问外部储存空间及其导致的一系列问题(如:无法下载字体、无法使用备份\恢复、无法添加本地书籍、无法同步书架等)
diff --git a/app/src/main/java/xyz/fycz/myreader/application/MyApplication.java b/app/src/main/java/xyz/fycz/myreader/application/MyApplication.java
index e1a1828..42a4c55 100644
--- a/app/src/main/java/xyz/fycz/myreader/application/MyApplication.java
+++ b/app/src/main/java/xyz/fycz/myreader/application/MyApplication.java
@@ -256,7 +256,7 @@ public class MyApplication extends Application {
doc = Jsoup.connect(url).get();
String content = doc.getElementsByClass("ql-editor").text();
if (StringHelper.isEmpty(content)) {
- TextHelper.showText("检查更新失败!");
+ ToastUtils.showError("检查更新失败!");
return;
}
String[] contents = content.split(";");
@@ -292,11 +292,11 @@ public class MyApplication extends Application {
mBookcaseFragment);
}
} else if (isManualCheck) {
- TextHelper.showText("已经是最新版本!");
+ ToastUtils.showSuccess("已经是最新版本!");
}
} catch (Exception e) {
e.printStackTrace();
- TextHelper.showText("无网络连接!");
+ ToastUtils.showError("检查更新失败!");
}
});
}
@@ -329,7 +329,7 @@ public class MyApplication extends Application {
}
}, (dialog, which) -> {
if (url == null || "".equals(url)) {
- TextHelper.showText("获取链接失败,请前往浏览器下载!");
+ ToastUtils.showError("获取链接失败,请前往浏览器下载!");
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse(URLCONST.APP_DIR_UR));
@@ -372,4 +372,13 @@ public class MyApplication extends Application {
}
}
+ /**
+ * 判断Activity是否Destroy
+ * @param mActivity
+ * @return
+ */
+ public static boolean isDestroy(Activity mActivity) {
+ return mActivity == null || mActivity.isFinishing() || mActivity.isDestroyed();
+ }
+
}
diff --git a/app/src/main/java/xyz/fycz/myreader/application/SysManager.java b/app/src/main/java/xyz/fycz/myreader/application/SysManager.java
index 8bcc1c1..40cf371 100644
--- a/app/src/main/java/xyz/fycz/myreader/application/SysManager.java
+++ b/app/src/main/java/xyz/fycz/myreader/application/SysManager.java
@@ -48,21 +48,24 @@ public class SysManager {
private static Setting getDefaultSetting(){
Setting setting = new Setting();
setting.setDayStyle(true);
- setting.setReadBgColor(R.color.sys_protect_eye_bg);
- setting.setReadStyle(ReadStyle.protectedEye);
+ setting.setReadStyle(ReadStyle.leather);
setting.setReadWordSize(25);
- setting.setReadWordColor(R.color.sys_protect_eye_word);
setting.setBrightProgress(50);
setting.setBrightFollowSystem(true);
setting.setLanguage(Language.simplified);
setting.setFont(Font.默认字体);
setting.setAutoScrollSpeed(300);
setting.setPageMode(PageMode.SIMULATION);
- setting.setVolumeTurnPage(false);
+ setting.setVolumeTurnPage(true);
+ setting.setResetScreen(3);
setting.setBookcaseStyle(BookcaseStyle.listMode);
setting.setNewestVersionCode(getVersionCode());
setting.setLocalFontName("");
setting.setAutoSyn(false);
+ setting.setMatchChapter(true);
+ setting.setMatchChapterSuitability(0.7f);
+ setting.setCatheGap(150);
+ setting.setRefreshWhenStart(false);
setting.setSettingVersion(APPCONST.SETTING_VERSION);
return setting;
}
@@ -73,6 +76,11 @@ public class SysManager {
*/
public static void resetSetting(){
- saveSetting(getDefaultSetting());
+ Setting setting = getSetting();
+ setting.setVolumeTurnPage(true);
+ setting.setMatchChapter(true);
+ setting.setResetScreen(3);
+ setting.setSettingVersion(APPCONST.SETTING_VERSION);
+ saveSetting(setting);
}
}
diff --git a/app/src/main/java/xyz/fycz/myreader/backup/BackupAndRestore.java b/app/src/main/java/xyz/fycz/myreader/backup/BackupAndRestore.java
index 9b96821..5e2ddb3 100644
--- a/app/src/main/java/xyz/fycz/myreader/backup/BackupAndRestore.java
+++ b/app/src/main/java/xyz/fycz/myreader/backup/BackupAndRestore.java
@@ -81,17 +81,25 @@ public class BackupAndRestore {
sBookFields[i] = sBookFields[i].substring(sBookFields[i].indexOf("'") + 1, sBookFields[i].lastIndexOf("'"));
}
String source = "null";
+ boolean isCloseUpdate = false;
+ boolean isDownloadAll = true;
if(!sBookFields[2].contains("novel.fycz.xyz")){
source = sBookFields[17];
}
if ("本地书籍".equals(sBookFields[4])){
sBookFields[15] = "0";
}
+ if (sBookFields.length >= 19){
+ isCloseUpdate = Boolean.parseBoolean(sBookFields[18]);
+ }
+ if (sBookFields.length >= 20){
+ isDownloadAll = Boolean.parseBoolean(sBookFields[19]);
+ }
Book book = new Book(sBookFields[0], sBookFields[1], sBookFields[2], sBookFields[3], sBookFields[4],
sBookFields[5], sBookFields[6], sBookFields[7], sBookFields[8], sBookFields[9], sBookFields[10],
sBookFields[11], Integer.parseInt(sBookFields[12]), Integer.parseInt(sBookFields[13]),
Integer.parseInt(sBookFields[14]), Integer.parseInt(sBookFields[15]), Integer.parseInt(sBookFields[16])
- , source);
+ , source, isCloseUpdate, isDownloadAll);
books.add(book);
}
mBookService.deleteAllBooks();
diff --git a/app/src/main/java/xyz/fycz/myreader/base/BaseActivity.java b/app/src/main/java/xyz/fycz/myreader/base/BaseActivity.java
index 8309c6c..4d04562 100644
--- a/app/src/main/java/xyz/fycz/myreader/base/BaseActivity.java
+++ b/app/src/main/java/xyz/fycz/myreader/base/BaseActivity.java
@@ -14,7 +14,7 @@ import android.view.inputmethod.InputMethodManager;
import androidx.appcompat.app.AppCompatActivity;
import xyz.fycz.myreader.ActivityManage;
import xyz.fycz.myreader.util.Anti_hijackingUtils;
-import xyz.fycz.myreader.util.SystemBarTintManager;
+import xyz.fycz.myreader.util.StatusBarUtil;
@@ -41,7 +41,7 @@ public class BaseActivity extends AppCompatActivity {
Log.d("ActivityName: ",getLocalClassName());
DisplayMetrics dm = new DisplayMetrics();
//获取屏幕宽高
- if(height == 0 || height == 0){
+ if(height == 0 || width == 0){
getWindowManager().getDefaultDisplay().getMetrics(dm);
width = dm.widthPixels;
height = dm.heightPixels;
@@ -90,18 +90,6 @@ public class BaseActivity extends AppCompatActivity {
return super.onKeyDown(keyCode, event);
}
- @TargetApi(19)
- protected void setTranslucentStatus(boolean on) {
- Window win = getWindow();
- WindowManager.LayoutParams winParams = win.getAttributes();
- final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
- if (on) {
- winParams.flags |= bits;
- } else {
- winParams.flags &= ~bits;
- }
- win.setAttributes(winParams);
- }
public void setDisallowAntiHijacking(boolean disallowAntiHijacking) {
this.disallowAntiHijacking = disallowAntiHijacking;
@@ -113,13 +101,25 @@ public class BaseActivity extends AppCompatActivity {
* 设置状态栏颜色
* @param colorId
*/
- public void setStatusBar(int colorId){
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
- setTranslucentStatus(true);
- SystemBarTintManager tintManager = new SystemBarTintManager(this);
- tintManager.setStatusBarTintEnabled(true);
- tintManager.setStatusBarTintResource(colorId);//通知栏所需颜色ID
+ public void setStatusBar(int colorId, boolean dark){
+ //沉浸式代码配置
+ //当FitsSystemWindows设置 true 时,会在屏幕最上方预留出状态栏高度的 padding
+ StatusBarUtil.setRootViewFitsSystemWindows(this, true);
+ //设置状态栏透明
+ StatusBarUtil.setTranslucentStatus(this);
+ if (colorId != 0) {
+ StatusBarUtil.setStatusBarColor(this, getResources().getColor(colorId));
}
+ //一般的手机的状态栏文字和图标都是白色的, 可如果你的应用也是纯白色的, 或导致状态栏文字看不清
+ //所以如果你是这种情况,请使用以下代码, 设置状态使用深色文字图标风格, 否则你可以选择性注释掉这个if内容
+ if (!dark) {
+ if (!StatusBarUtil.setStatusBarDarkTheme(this, true)) {
+ //如果不支持设置深色风格 为了兼容总不能让状态栏白白的看不清, 于是设置一个状态栏颜色为半透明,
+ //这样半透明+白=灰, 状态栏的文字能看得清
+ StatusBarUtil.setStatusBarColor(this, 0x55000000);
+ }
+ }
+
}
public InputMethodManager getmInputMethodManager() {
diff --git a/app/src/main/java/xyz/fycz/myreader/base/BaseActivity2.java b/app/src/main/java/xyz/fycz/myreader/base/BaseActivity2.java
index 21e2f3e..88fe9c1 100644
--- a/app/src/main/java/xyz/fycz/myreader/base/BaseActivity2.java
+++ b/app/src/main/java/xyz/fycz/myreader/base/BaseActivity2.java
@@ -1,21 +1,29 @@
package xyz.fycz.myreader.base;
+import android.annotation.SuppressLint;
import android.content.Intent;
+import android.graphics.PorterDuff;
+import android.graphics.drawable.Drawable;
import android.os.Bundle;
+import android.view.Menu;
+import android.view.MenuItem;
import androidx.annotation.LayoutRes;
import androidx.annotation.Nullable;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
-import androidx.core.content.ContextCompat;
import butterknife.ButterKnife;
import butterknife.Unbinder;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.disposables.Disposable;
+import xyz.fycz.myreader.ActivityManage;
import xyz.fycz.myreader.R;
-import xyz.fycz.myreader.util.StatusBarCompat;
+import xyz.fycz.myreader.util.StatusBarUtil;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
/**
* @author fengyue
@@ -73,6 +81,7 @@ public abstract class BaseActivity2 extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ ActivityManage.addActivity(this);
setContentView(getContentId());
initData(savedInstanceState);
unbinder = ButterKnife.bind(this);
@@ -95,6 +104,7 @@ public abstract class BaseActivity2 extends AppCompatActivity {
@Override
protected void onDestroy() {
super.onDestroy();
+ ActivityManage.removeActivity(this);
unbinder.unbind();
if (mDisposable != null){
mDisposable.dispose();
@@ -104,7 +114,7 @@ public abstract class BaseActivity2 extends AppCompatActivity {
/**************************used method area*******************************************/
protected void startActivity(Class extends AppCompatActivity> activity){
- Intent intent = new Intent(this,activity);
+ Intent intent = new Intent(this, activity);
startActivity(intent);
}
@@ -121,7 +131,53 @@ public abstract class BaseActivity2 extends AppCompatActivity {
return actionBar;
}
- protected void setStatusBarColor(int statusColor){
- StatusBarCompat.compat(this, ContextCompat.getColor(this, statusColor));
+ protected void setStatusBarColor(int statusColor, boolean dark){
+ //沉浸式代码配置
+ //当FitsSystemWindows设置 true 时,会在屏幕最上方预留出状态栏高度的 padding
+ StatusBarUtil.setRootViewFitsSystemWindows(this, true);
+ //设置状态栏透明
+ StatusBarUtil.setTranslucentStatus(this);
+ StatusBarUtil.setStatusBarColor(this, getResources().getColor(statusColor));
+
+ //一般的手机的状态栏文字和图标都是白色的, 可如果你的应用也是纯白色的, 或导致状态栏文字看不清
+ //所以如果你是这种情况,请使用以下代码, 设置状态使用深色文字图标风格, 否则你可以选择性注释掉这个if内容
+ if (!dark) {
+ if (!StatusBarUtil.setStatusBarDarkTheme(this, true)) {
+ //如果不支持设置深色风格 为了兼容总不能让状态栏白白的看不清, 于是设置一个状态栏颜色为半透明,
+ //这样半透明+白=灰, 状态栏的文字能看得清
+ StatusBarUtil.setStatusBarColor(this, 0x55000000);
+ }
+ }
+ }
+
+ @SuppressLint("PrivateApi")
+ @SuppressWarnings("unchecked")
+ @Override
+ public boolean onMenuOpened(int featureId, Menu menu) {
+ if (menu != null) {
+ //展开菜单显示图标
+ if (menu.getClass().getSimpleName().equalsIgnoreCase("MenuBuilder")) {
+ try {
+ Method method = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);
+ method.setAccessible(true);
+ method.invoke(menu, true);
+ method = menu.getClass().getDeclaredMethod("getNonActionItems");
+ ArrayList