不做过多的解释,直接上代码
这里先唠叨一句(初级的开发工程师,写代码一定要规范,注释要简洁,命名一定要规范,因为以后可能维护的项目不是你本人,你要对自己曾经写的代码负责,让继承者有一个舒适感,维护起来也很 easy)。
package com.hfga.myapplication.Base;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.support.annotation.LayoutRes;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Toast;
import com.hfga.myapplication.R;
import com.hfga.myapplication.activity.MainActivity;
import butterknife.ButterKnife;
import butterknife.OnClick;
/**
* Created by pengwei on 2018/8/3 14:04
* email:pw1305559621@163.com
*/
public abstract class BaseActivity extends AppCompatActivity {
/** 是否禁止旋转屏幕 **/
private boolean isAllowScreenRoate = true;
/** 当前Activity渲染的视图View **/
private View mContextView = null;
/***是否显示标题栏*/
private boolean isshowtitle = false;
/***是否隐藏状态栏*/
private boolean isshowstate = false;
/***封装toast对象**/
private static Toast toast;
/***获取TAG的activity名称**/
protected final String TAG = this.getClass().getSimpleName();
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "BaseActivity-->onCreate()");
Bundle bundle = getIntent().getExtras();
//
initParms(bundle);
View mView = bindView();
if (null == mView) {
mContextView = LayoutInflater.from(this)
.inflate(bindLayout(), null);
} else
mContextView = mView;
if(!isshowtitle){
requestWindowFeature(Window.FEATURE_NO_TITLE);
}
if(isshowstate){
getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN ,
WindowManager.LayoutParams. FLAG_FULLSCREEN);
}
//设置布局
setContentView(mContextView);
if (isAllowScreenRoate) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
//必须在 setContentView 之后调用
ButterKnife.bind(this);
//初始化控件
initView(mContextView);
// setListener();
//操作逻辑
doBusiness(this);
}
/**
* [初始化参数]
*
* @param parms
*/
public abstract void initParms(Bundle parms);
/**
* [绑定视图]
*
* @return
*/
public abstract View bindView();
/**
* [绑定布局]
*
* @return
*/
public abstract int bindLayout();
/**
* [初始化控件]
*
* @param view
*/
public abstract void initView(final View view);
/**
* [绑定控件]
*
* @param resId
*
* @return
*/
protected <T extends View> T $(int resId) {
return (T) super.findViewById(resId);
}
/**
* [设置监听]
*/
// public abstract void setListener();
/**
* [业务操作]
*
* @param mContext
*/
public abstract void doBusiness(Context mContext);
/**
* 是否设置标题栏
*
* @return
*/
public void setTitle(boolean ishow) {
isshowtitle = ishow;
}
/**
* 设置是否显示状态栏
* @param ishow
*/
public void setState(boolean ishow) {
isshowstate=ishow;
}
/**
* [页面跳转]
*
* @param clz
*/
public void startActivity(Class<?> clz) {
startActivity(new Intent(BaseActivity.this,clz));
}
/**
* [携带数据的页面跳转]
*
* @param clz
* @param bundle
*/
public void startActivity(Class<?> clz, Bundle bundle) {
Intent intent = new Intent();
intent.setClass(this, clz);
if (bundle != null) {
intent.putExtras(bundle);
}
startActivity(intent);
}
/**
* [含有Bundle通过Class打开编辑界面]
*
* @param cls
* @param bundle
* @param requestCode
*/
public void startActivityForResult(Class<?> cls, Bundle bundle,
int requestCode) {
Intent intent = new Intent();
intent.setClass(this, cls);
if (bundle != null) {
intent.putExtras(bundle);
}
startActivityForResult(intent, requestCode);
}
@Override
protected void onRestart() {
super.onRestart();
Log.d(TAG, "onRestart()");
}
@Override
protected void onStart() {
super.onStart();
Log.d(TAG, "onStart()");
}
@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "onResume()");
}
@Override
protected void onPause() {
super.onPause();
Log.d(TAG, "onPause()");
}
@Override
protected void onStop() {
super.onStop();
Log.d(TAG, "onStop()");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroy()");
}
/**
* 显示长toast
* @param msg
*/
public void toastLong(Context context , String msg){
if (null == toast) {
toast = Toast.makeText(context, "", Toast.LENGTH_LONG);
toast.setText(msg);
toast.show();
} else {
toast.setText(msg);
toast.show();
}
}
/**
* 显示短toast
* @param msg
*/
public void toastShort(Context context , String msg){
if (null == toast) {
toast = Toast.makeText(context, "", Toast.LENGTH_SHORT);
toast.setText(msg);
toast.show();
} else {
toast.setText(msg);
toast.show();
}
}
/**
* [是否允许屏幕旋转]
*
* @param isAllowScreenRoate
*/
public void setScreenRoate(boolean isAllowScreenRoate) {
this.isAllowScreenRoate = isAllowScreenRoate;
}
}
activity的用法
package com.hfga.myapplication.activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import com.hfga.myapplication.Base.BaseActivity;
import com.hfga.myapplication.R;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
public class MainActivity extends BaseActivity {
@BindView(R.id.tv_back)
TextView tvBack;
@BindView(R.id.tv_intos)
TextView tvIntos;
private TextView tv_backs;
private TextView tv_intoss;
@Override
public void initParms(Bundle parms) {
setState(true); //设置是否隐藏状态栏
setScreenRoate(true);
}
@Override
public View bindView() {
return null;
}
@Override
public int bindLayout() {
return R.layout.activity_main;
}
@Override
public void initView(View view) {
}
@Override
public void doBusiness(Context mContext) {
}
@Override
public void onPointerCaptureChanged(boolean hasCapture) {
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// TODO: add setContentView(...) invocation
ButterKnife.bind(this);
}
@OnClick({R.id.tv_back, R.id.tv_intos})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.tv_back:
toastLong(MainActivity.this,"退出舞台。");
finish();
break;
case R.id.tv_intos:
toastLong(MainActivity.this,"开始show。");
startActivity(DetialActivity.class);
break;
}
}
}