package com.gh.base; import android.annotation.TargetApi; import android.content.Context; import android.graphics.Color; import android.os.Build; import android.os.Bundle; import android.view.*; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.widget.*; import butterknife.ButterKnife; import com.gh.common.constant.Config; import com.gh.common.util.*; import com.gh.download.DownloadManager; import com.gh.gamecenter.R; import com.gh.gamecenter.eventbus.EBShowDialog; import com.gh.gamecenter.listener.OnCallBackListener; import com.readystatesoftware.systembartint.SystemBarTintManager; import com.readystatesoftware.systembartint.SystemBarTintManager.SystemBarConfig; import de.greenrobot.event.EventBus; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.ArrayList; import static com.gh.common.util.EntranceUtils.KEY_DATA; import static com.gh.common.util.EntranceUtils.KEY_ENTRANCE; public abstract class BaseActivity extends BaseAppCompatToolBarActivity implements OnCallBackListener { @Override protected boolean onNavigationIconClicked() { return false; } protected String entrance; private SystemBarTintManager mTintManager; private boolean isPause; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); init(mContentView); AppManager.getInstance().addActivity(this); EventBus.getDefault().register(this); entrance = getIntent().getStringExtra(KEY_ENTRANCE); if (getIntent().getBundleExtra(KEY_DATA) != null) { entrance = getIntent().getBundleExtra(KEY_DATA).getString(KEY_ENTRANCE); } } protected void init(String title) { TextView actionbar_tv_title = (TextView) findViewById(R.id.actionbar_tv_title); actionbar_tv_title.setText(title); } private void init(View contentView) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { // setTheme(R.style.AppTheme); setTranslucentStatus(true); mTintManager = new SystemBarTintManager(this); mTintManager.setStatusBarTintEnabled(true); // mTintManager.setNavigationBarTintEnabled(true); if (Build.MANUFACTURER.equals("Meizu") || Build.MANUFACTURER.equals("Xiaomi")) { mTintManager.setStatusBarTintColor(Color.WHITE); } else { mTintManager.setStatusBarTintColor(Color.BLACK); } SystemBarConfig config = mTintManager.getConfig(); contentView.setPadding(0, config.getPixelInsetTop(false), 0, config.getPixelInsetBottom()); switch (Build.MANUFACTURER) { case "Meizu": try { Window window = getWindow(); if (window != null) { WindowManager.LayoutParams lp = window.getAttributes(); Field darkFlag = WindowManager.LayoutParams.class.getDeclaredField("MEIZU_FLAG_DARK_STATUS_BAR_ICON"); Field meizuFlags = WindowManager.LayoutParams.class.getDeclaredField("meizuFlags"); darkFlag.setAccessible(true); meizuFlags.setAccessible(true); int bit = darkFlag.getInt(null); int value = meizuFlags.getInt(lp); value |= bit; meizuFlags.setInt(lp, value); window.setAttributes(lp); } } catch (Exception e) { e.printStackTrace(); } break; case "Xiaomi": try { Window window = getWindow(); if (window != null) { Class clazz = window.getClass(); Class layoutParams = Class.forName("android.view.MiuiWindowManager$LayoutParams"); Field field = layoutParams.getField("EXTRA_FLAG_STATUS_BAR_DARK_MODE"); int darkModeFlag = field.getInt(layoutParams); Method extraFlagField = clazz.getMethod("setExtraFlags", int.class, int.class); extraFlagField.invoke(window, darkModeFlag, darkModeFlag); } } catch (Exception e) { e.printStackTrace(); } break; default: break; } } setContentView(contentView); ButterKnife.bind(this); View reuse_actionbar = findViewById(R.id.reuse_actionbar); if (reuse_actionbar != null) { int actionbar_height = getSharedPreferences(Config.PREFERENCE, Context.MODE_PRIVATE) .getInt("actionbar_height", DisplayUtils.dip2px(getApplicationContext(), 55)); LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, actionbar_height); reuse_actionbar.setLayoutParams(lparams); findViewById(R.id.actionbar_rl_back).setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { finish(); } }); } } protected SystemBarTintManager getTintManager() { return mTintManager; } public void toast(String msg) { Toast.makeText(this, msg, Toast.LENGTH_SHORT).show(); } public void toast(int msg) { Toast.makeText(this, msg, Toast.LENGTH_SHORT).show(); } @TargetApi(19) protected void setTranslucentStatus(boolean status) { Window window = getWindow(); WindowManager.LayoutParams winParams = window.getAttributes(); final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS; if (status) { winParams.flags |= bits; } else { winParams.flags &= ~bits; } window.setAttributes(winParams); } //如果是游戏分享,newsTitle默认为空 public void showShare(String url, String gameName, String icon, String newsTitle, ArrayList tag) { //判断是否是官方版 boolean isPlugin = false; if (tag != null) { for (String s : tag) { if (!"官方版".equals(s)) { isPlugin = true; } } } ShareUtils.getInstance(this).showShareWindows(getWindow().getDecorView(), url, gameName, icon, newsTitle, isPlugin, true); if (newsTitle == null) { DataUtils.onEvent(this, "内容分享", gameName); } else { DataUtils.onEvent(this, "内容分享", newsTitle); } } public void onEventMainThread(final EBShowDialog showDialog) { if (!isPause && this.getClass().getName().equals(RunningUtils.getTopActivity(this))) { if ("hijack".equals(showDialog.getType())) { DialogUtils.showQqSessionDialog(this, null);// 建议用户联系客服 } else if ("plugin".equals(showDialog.getType())) { DialogUtils.showPluginDialog(this, new DialogUtils.ConfirmListener() { @Override public void onConfirm() { if (FileUtils.isEmptyFile(showDialog.getPath())) { Toast.makeText(BaseActivity.this, "解析包出错(可能被误删了),请重新下载", Toast.LENGTH_SHORT).show(); } else { startActivity(PackageUtils.getUninstallIntent(BaseActivity.this, showDialog.getPath())); } } }); } } } @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); AppManager.getInstance().finishActivity(this); } @Override protected void onPause() { super.onPause(); DataUtils.onPause(this); isPause = true; } @Override protected void onResume() { super.onResume(); DataUtils.onResume(this); isPause = false; DownloadManager.getInstance(this).initGameMap(); } @Override public void loadDone() { } @Override public void loadDone(Object obj) { } @Override public void loadError() { } @Override public void loadEmpty() { } }