package me.wcy.music.activity; import android.content.Context; import android.content.Intent; import android.graphics.Color; import android.media.AudioManager; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import me.wcy.music.R; import me.wcy.music.application.AppCache; import me.wcy.music.service.PlayService; import me.wcy.music.utils.binding.ViewBinder; import me.wcy.music.utils.permission.PermissionReq; /** * 基类<br> * 如果继承本类,需要在 layout 中添加 {@link Toolbar} ,并将 AppTheme 继承 Theme.AppCompat.NoActionBar 。 * Created by wcy on 2015/11/26. */ public abstract class BaseActivity extends AppCompatActivity { protected Handler mHandler = new Handler(Looper.getMainLooper()); @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setSystemBarTransparent(); setVolumeControlStream(AudioManager.STREAM_MUSIC); } @Override public void setContentView(int layoutResID) { super.setContentView(layoutResID); initView(); } @Override public void setContentView(View view) { super.setContentView(view); initView(); } @Override public void setContentView(View view, ViewGroup.LayoutParams params) { super.setContentView(view, params); initView(); } private void initView() { ViewBinder.bind(this); Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar); if (mToolbar == null) { throw new IllegalStateException("Layout is required to include a Toolbar with id 'toolbar'"); } setSupportActionBar(mToolbar); if (getSupportActionBar() != null) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); } } @Override protected void onStart() { super.onStart(); setListener(); } protected void setListener() { } public PlayService getPlayService() { PlayService playService = AppCache.getPlayService(); if (playService == null) { throw new NullPointerException("play service is null"); } return playService; } protected boolean checkServiceAlive() { if (AppCache.getPlayService() == null) { startActivity(new Intent(this, SplashActivity.class)); AppCache.clearStack(); return false; } return true; } private void setSystemBarTransparent() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { // LOLLIPOP解决方案 getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); getWindow().setStatusBarColor(Color.TRANSPARENT); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { // KITKAT解决方案 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); } } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { finish(); return true; } return super.onOptionsItemSelected(item); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); PermissionReq.onRequestPermissionsResult(requestCode, permissions, grantResults); } public void showSoftKeyboard(final EditText editText) { editText.setFocusable(true); editText.setFocusableInTouchMode(true); editText.requestFocus(); mHandler.postDelayed(new Runnable() { public void run() { InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.showSoftInput(editText, 0); } }, 200L); } public void hideSoftKeyboard() { if (getCurrentFocus() != null) { InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } } }