BaseActivity.java 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. package com.android.chmo.base;
  2. import android.content.Context;
  3. import android.content.Intent;
  4. import android.content.res.Configuration;
  5. import android.content.res.Resources;
  6. import android.os.Build;
  7. import android.os.Bundle;
  8. import android.support.annotation.Nullable;
  9. import android.support.v7.app.AppCompatActivity;
  10. import android.util.DisplayMetrics;
  11. import android.view.View;
  12. import android.widget.Toast;
  13. import com.android.chmo.R;
  14. import com.android.chmo.ui.dialog.LoadingDialog;
  15. import com.netease.nim.avchatkit.common.activity.ActivityManager;
  16. import com.netease.nim.uikit.common.util.StatusBarUtil;
  17. import butterknife.ButterKnife;
  18. /**
  19. * Created by Administrator on 2018/7/30.
  20. */
  21. public abstract class BaseActivity extends AppCompatActivity {
  22. public static final int STATUS_BAR_STYLE_DEFAULT = 1 << 1;
  23. public static final int STATUS_BAR_STYLE_LIGHT_CONTENT = 1 << 2;
  24. private Toast toast;
  25. private LoadingDialog loadingDialog;
  26. @Override
  27. protected void onCreate(@Nullable Bundle savedInstanceState) {
  28. super.onCreate(savedInstanceState);
  29. ActivityManager.getInstance().pushActivity(this);
  30. switch (getStatusBarStyle()) {
  31. case STATUS_BAR_STYLE_DEFAULT:
  32. StatusBarUtil.setTransparentStatusBar(this, false);
  33. break;
  34. case STATUS_BAR_STYLE_LIGHT_CONTENT:
  35. StatusBarUtil.setTransparentStatusBar(this, true);
  36. break;
  37. }
  38. if (hideNavigationBar() && android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
  39. View decorView = getWindow().getDecorView();
  40. int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
  41. | View.SYSTEM_UI_FLAG_FULLSCREEN;
  42. decorView.setSystemUiVisibility(uiOptions);
  43. }
  44. setContentView(getContentResId());
  45. ButterKnife.bind(this);
  46. initView();
  47. }
  48. /**
  49. * 布局资源文件
  50. */
  51. protected abstract int getContentResId();
  52. protected int getStatusBarStyle() {
  53. return STATUS_BAR_STYLE_DEFAULT;
  54. }
  55. protected boolean hideNavigationBar() {
  56. return false;
  57. }
  58. /**
  59. * 初始化控件
  60. */
  61. public abstract void initView();
  62. public Context getContext() {
  63. return this;
  64. }
  65. @Override
  66. public void finish() {
  67. super.finish();
  68. ActivityManager.getInstance().popActivity(this);
  69. }
  70. public void openPage(Class clazz) {
  71. openPage(new Intent(this, clazz));
  72. }
  73. public void openPage(Intent intent) {
  74. startActivity(intent);
  75. }
  76. public void openPageForResult(Intent intent, int requestCode) {
  77. startActivityForResult(intent, requestCode);
  78. }
  79. public void close() {
  80. finish();
  81. }
  82. public void showToast(String msg) {
  83. if (!isFinishing()) {
  84. if (toast == null) {
  85. toast = Toast.makeText(this, msg, Toast.LENGTH_SHORT);
  86. } else {
  87. toast.setText(msg);
  88. }
  89. toast.show();
  90. }
  91. }
  92. public void showToast(int res) {
  93. showToast(getString(res));
  94. }
  95. public void showLoading() {
  96. this.showLoading(null);
  97. }
  98. public void showLoading(String loading) {
  99. if (loadingDialog == null) {
  100. loadingDialog = new LoadingDialog(this);
  101. }
  102. loadingDialog.setLoading(loading);
  103. if (!loadingDialog.isShowing()) {
  104. loadingDialog.show();
  105. }
  106. }
  107. public void hideLoading() {
  108. if (loadingDialog != null && loadingDialog.isShowing()) {
  109. loadingDialog.dismiss();
  110. }
  111. }
  112. @Override
  113. public Resources getResources() {
  114. Resources resources = super.getResources();
  115. Configuration newConfig = resources.getConfiguration();
  116. DisplayMetrics displayMetrics = resources.getDisplayMetrics();
  117. if (resources != null && newConfig.fontScale != 1) {
  118. newConfig.fontScale = 1;
  119. if (Build.VERSION.SDK_INT >= 17) {
  120. Context configurationContext = createConfigurationContext(newConfig);
  121. resources = configurationContext.getResources();
  122. displayMetrics.scaledDensity = displayMetrics.density * newConfig.fontScale;
  123. } else {
  124. // resources.updateConfiguration(newConfig, displayMetrics);
  125. }
  126. }
  127. return resources;
  128. }
  129. }