推荐新闻
BaseActivity 里到底应该写哪些内容?
发布者:深蓝互联
发布时间:2019-07-19
点击:
 
  1. 修改BaseActiviy的继承为Fragment(可以实现dialogfragment)
  2. 增加isDebug和APP_NAME,在Application中声明,方便日志打印,区分测试版本和正式版本
  3. 添加快速点击导致的各种问题。
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;
	}
}

深蓝互联成立于2013年,是一家物联网硬件开发及软件应用服务商,获得多次获得国家高新技术企业资质的企业。深蓝互联专注软硬件技术开发的专业性技术公司。我们从事软硬件开发十年,擅长SaaS 平台开发、APP小程序开发、软硬件结合开发,在视觉识别处理、数据架构、云计算、多线程高并发和集群、数据安全加密和防护方便有很深的技术积累。

 

我们拥有专业优秀的设计和技术团队,以极具创意的 UI 设计、精湛卓越的开发技术,专业的网络策划团队。公司多年来投入打造物联网SaaS平台,集成了公司研发的多款智能物联网终端(智能鲜米机、生鲜售货机、自助洗车机、小区电瓶车充电系统等)。

 

公司一直坚持以研发为导向,打造软硬件结合的物联网平台系统。将一直坚持提高开发的技术实力更好的为我们的客户服务!

 

文章来自深蓝互联http://www.szdbi.com/webxt/249.html转载请注明出处!

关注深蓝互联公众号
Copyright © 2013-2024 深蓝互联 版权所有