BaseActivity和BaseFragment 的封装
来源:互联网 发布:虚拟机优化显卡性能 编辑:程序博客网 时间:2024/05/22 02:13
- 修改BaseActiviy的继承为Fragment(可以实现dialogfragment)
- 增加isDebug和APP_NAME,在Application中声明,方便日志打印,区分测试版本和正式版本
- 添加快速点击导致的各种问题。
public abstract class BaseActivity extends FragmentActivity implementsOnClickListener {/** 是否沉浸状态栏 **/private boolean isSetStatusBar = true;/** 是否允许全屏 **/private boolean mAllowFullScreen = true;/** 是否禁止旋转屏幕 **/private boolean isAllowScreenRoate = false;/** 当前Activity渲染的视图View **/private View mContextView = null;/** 是否输出日志信息 **/private boolean isDebug;private String APP_NAME;protected final String TAG = this.getClass().getSimpleName();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);isDebug = MApplication.isDebug;APP_NAME = MApplication.APP_NAME;$Log(TAG + "-->onCreate()");try {Bundle bundle = getIntent().getExtras();initParms(bundle);mContextView = LayoutInflater.from(this).inflate(bindLayout(), null);if (mAllowFullScreen) {this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);requestWindowFeature(Window.FEATURE_NO_TITLE);}if (isSetStatusBar) {steepStatusBar();}setContentView(mContextView);if (!isAllowScreenRoate) {setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);} else {setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);}initView(mContextView);doBusiness(this);} catch (Exception e) {e.printStackTrace();}}/** * [沉浸状态栏] */private void steepStatusBar() {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {// 透明状态栏getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);// 透明导航栏getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);}}/** * [初始化Bundle参数] * * @param parms */public abstract void initParms(Bundle parms);/** * [绑定布局] * * @return */public abstract int bindLayout();/** * [重写: 1.是否沉浸状态栏 2.是否全屏 3.是否禁止旋转屏幕] */// public abstract void setActivityPre();/** * [初始化控件] * * @param view */public abstract void initView(final View view);/** * [业务操作] * * @param mContext */public abstract void doBusiness(Context mContext);/** View点击 **/public abstract void widgetClick(View v);@Overridepublic void onClick(View v) {if (fastClick())widgetClick(v);}/** * [页面跳转] * * @param clz */public void startActivity(Class<?> clz) {startActivity(clz, null);}/** * [携带数据的页面跳转] * * @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);}@SuppressWarnings("unchecked")public <T extends View> T $(int resId) {return (T) super.findViewById(resId);}/** * [含有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);}@Overrideprotected void onResume() {super.onResume();$Log(TAG + "--->onResume()");}@Overrideprotected void onDestroy() {super.onDestroy();$Log(TAG + "--->onDestroy()");}/** * [是否允许全屏] * * @param allowFullScreen */public void setAllowFullScreen(boolean allowFullScreen) {this.mAllowFullScreen = allowFullScreen;}/** * [是否设置沉浸状态栏] * * @param allowFullScreen */public void setSteepStatusBar(boolean isSetStatusBar) {this.isSetStatusBar = isSetStatusBar;}/** * [是否允许屏幕旋转] * * @param isAllowScreenRoate */public void setScreenRoate(boolean isAllowScreenRoate) {this.isAllowScreenRoate = isAllowScreenRoate;}/** * [日志输出] * * @param msg */protected void $Log(String msg) {if (isDebug) {Log.d(APP_NAME, msg);}}/** * [防止快速点击] * * @return */private boolean fastClick() {long lastClick = 0;if (System.currentTimeMillis() - lastClick <= 1000) {return false;}lastClick = System.currentTimeMillis();return true;}}
public abstract class BaseFragment extends Fragment implements OnClickListener {private boolean isDebug;private String APP_NAME;protected final String TAG = this.getClass().getSimpleName();private View mContextView = null;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);isDebug = MApplication.isDebug;APP_NAME = MApplication.APP_NAME;}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {mContextView = inflater.inflate(bindLayout(), container, false);initView(mContextView);doBusiness(getActivity());return mContextView;}/** * [绑定布局] * * @return */public abstract int bindLayout();/** * [初始化控件] * * @param view */public abstract void initView(final View view);/** * [业务操作] * * @param mContext */public abstract void doBusiness(Context mContext);/** View点击 **/public abstract void widgetClick(View v);@Overridepublic void onClick(View v) {if (fastClick())widgetClick(v);}@SuppressWarnings("unchecked")public <T extends View> T $(View view, int resId) {return (T) view.findViewById(resId);}/** * [日志输出] * * @param msg */protected void $Log(String msg) {if (isDebug) {Log.d(APP_NAME, msg);}}/** * [防止快速点击] * * @return */private boolean fastClick() {long lastClick = 0;if (System.currentTimeMillis() - lastClick <= 1000) {return false;}lastClick = System.currentTimeMillis();return true;}
0 1
- BaseActivity和BaseFragment 的封装
- BaseActivity和BaseFragment封装
- BaseActivity与BaseFragment的封装
- BaseActivity与BaseFragment的封装
- 从BaseActivity与BaseFragment的封装谈起
- 从BaseActivity与BaseFragment的封装谈起
- 从BaseActivity与BaseFragment的封装谈起
- 从BaseActivity与BaseFragment的封装谈
- 从BaseActivity与BaseFragment的封装谈起
- 从BaseActivity与BaseFragment的封装谈起
- 从BaseActivity与BaseFragment的封装谈起
- 从BaseActivity与BaseFragment的封装谈起
- BaseActivity与BaseFragment的简单封装
- android BaseActivity与BaseFragment的封装
- Android谈谈封装那些事--BaseActivity和BaseFragment(一)
- Android谈谈封装那些事--BaseActivity和BaseFragment(二)
- 从BaseActivity与BaseFragment的封装谈起 不错的文章
- android 之 Baseactivity 和BaseFragment
- QT设置按钮的折叠和展开"
- [RK3288][Android6.0] 输入法框架开机初始化部分小结
- log4j配置概览
- Xcode8 如何解决 Missing file 报“xxx”is missing from working copy 警告的的问题
- node.js chrome v8简介
- BaseActivity和BaseFragment 的封装
- Mosquitto简介及搭建
- Spring Boot干货系列:(七)默认日志框架配置
- HDFS encryption 实战之背景和架构介绍
- JVM深入浅出(二)--了解JVM内存溢出
- RabbitMQ实战
- WINDOWS编程--32程序操作系统的注册表项的方法
- 将c++封装成dll库及vs调用dll
- PAT_乙级_1010_筱筱