BaseActivity和BaseFragment 的封装
2017-04-12 14:03
323 查看
修改BaseActiviy的继承为Fragment(可以实现dialogfragment)
增加isDebug和APP_NAME,在Application中声明,方便日志打印,区分测试版本和正式版本
添加快速点击导致的各种问题。
增加isDebug和APP_NAME,在Application中声明,方便日志打印,区分测试版本和正式版本
添加快速点击导致的各种问题。
public abstract class BaseActivity extends FragmentActivity implements OnClickListener { /** 是否沉浸状态栏 **/ 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(); @Override protected 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); @Override public 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); } @Override protected void onResume() { super.onResume(); $Log(TAG + "--->onResume()"); } @Override protected 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; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); isDebug = MApplication.isDebug; APP_NAME = MApplication.APP_NAME; } @Override public 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); @Override public 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; }
相关文章推荐
- ConnectivityManager类网络状态判断设置+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的封装谈起
- 从BaseActivity与BaseFragment的封装谈起
- 从BaseActivity与BaseFragment的封装谈起
- BaseActivity与BaseFragment的封装
- 《一个Android工程的从零开始》-6、base(五) BaseFragment封装
- Android 谈谈封装那些事 --BaseActivity 和 BaseFragment(二)
- 4、Basefragment的封装使用
- 如何在BaseFragment中直接调用BaseActivity中相关属性代码的问题
- Android探索之旅(第二十八篇)BaseActivity,BaseFragment封装必要点