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);
}
}
}