Skip to content

Commit 4a8394a

Browse files
committed
fix daynight mode
1 parent 0633c54 commit 4a8394a

File tree

12 files changed

+206
-510
lines changed

12 files changed

+206
-510
lines changed

app/src/main/java/com/brian/codeblog/activity/BlogContentActivity.java

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import android.content.Context;
66
import android.content.Intent;
77
import android.content.res.Configuration;
8+
import android.graphics.Color;
89
import android.os.Build;
910
import android.os.Bundle;
1011
import android.text.TextUtils;
@@ -25,14 +26,13 @@
2526
import android.widget.RelativeLayout;
2627

2728
import com.brian.codeblog.Env;
29+
import com.brian.codeblog.datacenter.DataManager;
2830
import com.brian.codeblog.datacenter.preference.CommonPreference;
2931
import com.brian.codeblog.datacenter.preference.SettingPreference;
3032
import com.brian.codeblog.manager.AdHelper;
3133
import com.brian.codeblog.manager.BlogManager;
3234
import com.brian.codeblog.manager.BlogerManager;
33-
import com.brian.codeblog.datacenter.DataManager;
3435
import com.brian.codeblog.manager.ShareManager;
35-
import com.brian.common.tools.ThreadManager;
3636
import com.brian.codeblog.manager.TypeManager;
3737
import com.brian.codeblog.manager.UsageStatsManager;
3838
import com.brian.codeblog.model.BlogInfo;
@@ -42,9 +42,12 @@
4242
import com.brian.codeblog.parser.IBlogHtmlParser;
4343
import com.brian.codeblog.proctocol.HttpGetBlogContentRequest;
4444
import com.brian.codeblog.proctocol.base.IResponseCallback;
45+
import com.brian.common.tools.DayNightHelper;
46+
import com.brian.common.tools.ThreadManager;
4547
import com.brian.common.utils.FileUtil;
4648
import com.brian.common.utils.LogUtil;
4749
import com.brian.common.utils.NetStatusUtil;
50+
import com.brian.common.utils.ResourceUtil;
4851
import com.brian.common.utils.ToastUtil;
4952
import com.brian.common.view.TitleBar;
5053
import com.brian.csdnblog.R;
@@ -311,6 +314,7 @@ private void initUI() {
311314
// 点击图片重新加载
312315
mWebView.setWebViewClient(new MyWebViewClient());
313316
mWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
317+
mWebView.setBackgroundColor(ResourceUtil.getColor(R.color.common_bg));
314318

315319
WebSettings webSettings = mWebView.getSettings();
316320
webSettings.setJavaScriptEnabled(true);
@@ -437,6 +441,10 @@ public boolean onKeyDown(int keyCode, KeyEvent event) {
437441
"text/html", "utf-8", null);
438442
return true;
439443
} else {
444+
mWebView.setWebViewClient(null);
445+
mWebView.setWebChromeClient(null);
446+
mWebView.loadData("<html></html>", "text/html", "utf-8");
447+
440448
this.finish();
441449
}
442450
}
@@ -474,12 +482,23 @@ public boolean shouldOverrideUrlLoading(WebView view, String url) {
474482

475483
@Override
476484
public void onPageFinished(WebView view, String url) {
485+
if (DayNightHelper.getInstance().isDayNightEnabled()) {
486+
String js = "document.body.style.backgroundColor=\"#333\";document.body.style.color=\"white\";";
487+
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
488+
mWebView.evaluateJavascript(js, null);
489+
} else {
490+
mWebView.loadUrl("javascript:" + js);
491+
}
492+
mWebView.setBackgroundColor(Color.TRANSPARENT);
493+
}
494+
477495
boolean isBlockImage = SettingPreference.getInstance().getLoadImgOnlyInWifiEnable();
478496

479497
boolean shouldLoadImg = NetStatusUtil.isWifiNet(Env.getContext()) || !isBlockImage;
480498
mWebView.getSettings().setBlockNetworkImage(!shouldLoadImg);
481499

482500
mWebView.getSettings().setLoadsImagesAutomatically(true);
501+
483502
super.onPageFinished(view, url);
484503
LogUtil.i(TAG, "onPageFinished");
485504
}
@@ -526,11 +545,11 @@ protected void onStop() {
526545
@Override
527546
protected void onDestroy() {
528547
CommonPreference.getInstance().addBlogReadTime(System.currentTimeMillis() - mStartTime);
529-
super.onDestroy();
530548

531549
mWebView.stopLoading();
532550
mWebView.onPause();
533551
mWebView.destroy();
552+
super.onDestroy();
534553
}
535554

536555
private void showErrorPage() {

app/src/main/java/com/brian/codeblog/activity/MainTabActivity.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.brian.codeblog.manager.ShareManager;
2222
import com.brian.codeblog.manager.UsageStatsManager;
2323
import com.brian.codeblog.update.UpdateManager;
24+
import com.brian.common.tools.DayNightHelper;
2425
import com.brian.common.utils.TimeUtil;
2526
import com.brian.common.utils.ToastUtil;
2627
import com.brian.common.view.DrawerArrowDrawable;
@@ -216,12 +217,14 @@ protected void onDestroy() {
216217
SpotManager.getInstance(this).onDestroy();
217218
super.onDestroy();
218219

219-
getUIHandler().postDelayed(new Runnable() {
220-
@Override
221-
public void run() {
222-
App.exit();
223-
}
224-
}, 500);
220+
if (DayNightHelper.getInstance().hasModeChanged()) {
221+
getUIHandler().postDelayed(new Runnable() {
222+
@Override
223+
public void run() {
224+
App.exit();
225+
}
226+
}, 500);
227+
}
225228
}
226229

227230
// 当启动模式为singletask,重新被启动时调用

app/src/main/java/com/brian/common/tools/DayNightHelper.java

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import com.brian.codeblog.activity.BaseActivity;
66
import com.brian.codeblog.datacenter.preference.SettingPreference;
7+
import com.brian.common.view.CommonDialogFragment;
78

89
/**
910
* 夜间模式辅助类
@@ -13,6 +14,7 @@
1314
public class DayNightHelper {
1415

1516
private boolean mIsDayNightEnabled = false;
17+
private boolean mIsModeChanged = false;
1618

1719
private static class SingletonHolder {
1820
private static final DayNightHelper INSTANCE = new DayNightHelper();
@@ -23,6 +25,10 @@ public static final DayNightHelper getInstance() {
2325
return SingletonHolder.INSTANCE;
2426
}
2527

28+
public boolean isDayNightEnabled() {
29+
return mIsDayNightEnabled;
30+
}
31+
2632
public void initDayNightMode() {
2733
mIsDayNightEnabled = SettingPreference.getInstance().getNightModeEnable();
2834
AppCompatDelegate.setDefaultNightMode(mIsDayNightEnabled ? AppCompatDelegate.MODE_NIGHT_YES : AppCompatDelegate.MODE_NIGHT_NO);
@@ -32,9 +38,18 @@ public void setDayNightMode(boolean enable) {
3238
if (mIsDayNightEnabled == enable) {
3339
return;
3440
}
41+
mIsModeChanged = true;
3542
mIsDayNightEnabled = enable;
36-
BaseActivity activity = BaseActivity.getTopActivity();
37-
activity.getDelegate().setLocalNightMode(enable ? AppCompatDelegate.MODE_NIGHT_YES : AppCompatDelegate.MODE_NIGHT_NO);
38-
activity.recreate();
43+
AppCompatDelegate.setDefaultNightMode(enable ? AppCompatDelegate.MODE_NIGHT_YES : AppCompatDelegate.MODE_NIGHT_NO);
44+
45+
final BaseActivity activity = BaseActivity.getTopActivity();
46+
CommonDialogFragment.create(activity.getSupportFragmentManager())
47+
.setContentText("主页面下次启动时才会生效")
48+
.setPositiveBtnText("确定")
49+
.show();
50+
}
51+
52+
public boolean hasModeChanged() {
53+
return mIsModeChanged;
3954
}
4055
}

app/src/main/java/com/brian/common/utils/PermissionUtil.java

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,11 @@
88
import android.net.Uri;
99
import android.os.Build;
1010
import android.support.v4.app.ActivityCompat;
11+
import android.support.v4.app.FragmentActivity;
1112
import android.support.v4.content.ContextCompat;
1213

13-
import com.brian.common.view.CommonDialog;
1414
import com.brian.codeblog.Env;
15+
import com.brian.common.view.CommonDialogFragment;
1516

1617
import pub.devrel.easypermissions.EasyPermissions;
1718

@@ -175,43 +176,42 @@ public static boolean checkInitPermission(Activity activity) {
175176
}
176177
}
177178

178-
public static void showPermissionDetail(Activity activity, int tipResID, boolean isToFinishActivityOnCancel) {
179+
public static void showPermissionDetail(FragmentActivity activity, int tipResID, boolean isToFinishActivityOnCancel) {
179180
showPermissionDetail(activity, ResourceUtil.getString(tipResID), isToFinishActivityOnCancel);
180181
}
181182

182183
/**
183184
* 显示请求权限对话框
184185
*/
185-
public static void showPermissionDetail(final Activity activity, String tipStr, final boolean isToFinishActivityOnCancel) {
186-
CommonDialog dialog = new CommonDialog(activity);
187-
dialog.setTitle("权限请求");
188-
dialog.setContent(tipStr);
189-
dialog.setLeftBtnText("取消");
190-
dialog.setRightBtnText("设置");
191-
dialog.setNegativeBtnListener(new DialogInterface.OnClickListener() {
192-
@Override
193-
public void onClick(DialogInterface dialog, int which) {
194-
if (isToFinishActivityOnCancel) {
195-
dialog.cancel();
196-
activity.finish();
197-
} else {
198-
dialog.cancel();
199-
}
200-
}
201-
});
202-
203-
dialog.setPositiveBtnListener(new DialogInterface.OnClickListener() {
204-
@Override
205-
public void onClick(DialogInterface dialog, int which) {
206-
Intent localIntent = new Intent();
207-
localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
208-
localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
209-
localIntent.setData(Uri.fromParts("package", activity.getPackageName(), null));
210-
activity.startActivity(localIntent);
211-
}
212-
});
213-
214-
dialog.show();
186+
public static void showPermissionDetail(final FragmentActivity activity, String tipStr, final boolean isToFinishActivityOnCancel) {
187+
CommonDialogFragment.create(activity.getSupportFragmentManager())
188+
.setTitleText("权限请求")
189+
.setContentText(tipStr)
190+
.setPositiveBtnText("设置")
191+
.setNegativeBtnText("取消")
192+
.setPositiveBtnListener(new DialogInterface.OnClickListener() {
193+
@Override
194+
public void onClick(DialogInterface dialog, int which) {
195+
Intent localIntent = new Intent();
196+
localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
197+
localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
198+
localIntent.setData(Uri.fromParts("package", activity.getPackageName(), null));
199+
activity.startActivity(localIntent);
200+
}
201+
})
202+
.setNegativeBtnListener(new DialogInterface.OnClickListener() {
203+
@Override
204+
public void onClick(DialogInterface dialog, int which) {
205+
if (isToFinishActivityOnCancel) {
206+
dialog.cancel();
207+
activity.finish();
208+
} else {
209+
dialog.cancel();
210+
}
211+
}
212+
})
213+
.show();
214+
215215
}
216216

217217
}

app/src/main/java/com/brian/common/view/BaseDialog.java

Lines changed: 0 additions & 80 deletions
This file was deleted.

0 commit comments

Comments
 (0)