您的位置:首页 > 其它

BaseActivity的封装

2018-03-22 17:28 183 查看
(一)BaseActivity类
public abstract class BaseActivity extends AppCompatActivity implements NetListenerReceiver.NetEvent {

private Unbinder mBind;//ButterKnife框架
protected CheckPermission mCheckPermission;//适配Android6.0检查权限类
protected CacheDataSqlite mCacheDataSqlite;//缓存数据的数据库

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int contentViewId;
boolean cacheData, usePermission;
if (getClass().isAnnotationPresent(ConfigView.class)) { //通过自定义注解获取子类的配置信息
ConfigView annotation = getClass().getAnnotation(ConfigView.class);
contentViewId = annotation.contentViewId();
cacheData = annotation.cacheData();
usePermission = annotation.usePermission();
} else {
throw new RuntimeException("Class must add annotations of ConfigView.class");
}
setContentView(contentViewId);
mBind = ButterKnife.bind(this); //使用ButterKnife框架
Constants.mNetEvent = this;
if (cacheData){ //是否使用数据库缓存
mCacheDataSqlite = new CacheDataSqlite(this);
}
if (usePermission) { //是否使用适配Android权限
mCheckPermission = new CheckPermission(this);
}
initView(savedInstanceState);
}

/**
* 初始化视图
* @param savedInstanceState
*/
protected abstract void initView(Bundle savedInstanceState);

/**
* 监听网络是否改变的状态
* @param netWork
*/
@Override
public void onNetChange(boolean netWork) {
}

//获取控件文本
public String getText(TextView textView){
return textView.getText().toString().trim();
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (mCheckPermission != null) {
mCheckPermission.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}

@Override
protected void onDestroy() {
mBind.unbind();
if (mCacheDataSqlite!=null){
mCacheDataSqlite.closeDB();
}
super.onDestroy();
}

}(二)ConfigView注解配置类
/**
* Created by 刘强lq
* <p>
* 对View配置的注解
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface ConfigView {

/**
* 引入的布局的id
*
* @return
*/
int contentViewId() default -1;

/**
* 是否做缓存数据操作 默认不使用
*
* @return
*/
boolean cacheData() default false;

/**
* 是否使用权限 默认不使用
*
* @return
*/
boolean usePermission() default false;
}
(三)实例TestActivity
//配置activity关联的视图以及此activity是否使用适配Android6.0的权限
@ConfigView(contentViewId = R.layout.activity_main,usePermission = true)
public class TestActivity extends BaseActivity {

private static final int CAMERA_CODE = 0x01; //照相的权限(随意写)

@Override
protected void initView(Bundle savedInstanceState) {
userCamera(); //假如用户使用拍照
}

private void userCamera() {
//申请权限 做操作
mCheckPermission.checkPermission(CAMERA_CODE, new CheckPermission.PListener() {
@Override
public void onHavaPermission(boolean havaPermission) {
if (havaPermission){
//用户授权了拍照权限....
}else {
//用户没有授权
}
}
}, Manifest.permission.CAMERA);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: