当前位置:网站首页>BaseActvity的抽取

BaseActvity的抽取

2022-08-11 05:31:00 lang_z

BaseActivity抽取

BaseActivty抽取的作用

  1. 进行代码的规范;
  2. 处理形同的逻辑;
  3. 简化代码;

代码的规范:主要吧activity经常做的动作抽取到各自的方法中,例如设置actvitiy的布局界面,初始化view,初始化监听,初始化数据。

处理相同的逻辑:比如每一个界面都有一个返回的按钮,可以吧这个操作放到BaseActvity中进行操作。

简化代码:这里面可以处理弹Toast和打log的操作;

废话不多说,明白的BaseActivity的作用,我们直接上代码:





import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;

public abstract class BaseActivity extends Activity implements OnClickListener{
	/**
	 * activity的基类
	 * 1.规范代码 
	 *      getLayoutResId();
	 *      initView();
	 *      initListener();
	 *      initData();
	 * 2.处理相同逻辑
	 *      视频播放界面,音频播放界面,都有返回按钮
	 * 3.简化代码
	 *      吐司
	 *      log
	 *      
	 */
	
	
	// 重新activity的方法;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// ---------------规范代码------------//
		// 设置界面的布局;
		setContentView(getLayoutResId());
		// 初始化view,一般做findViewById的操作;
		initView();
		// 初始化监听,
		initListener();
		// 初始化数据;
		initData();
		// ---------------窗处理相同的逻辑--------//
		// 处理相同逻辑
		dealCommon();

	}

	// ---------------规范代码------------//
	/**
	 * 进行界面的布局设定;
	 * 
	 * @return 界面的布局
	 */
	public abstract int getLayoutResId();

	/**
	 * 初始化view的操作;
	 */
	public abstract void initView();

	/**
	 * 初始化监听的操作
	 */
	public abstract void initListener();

	/**
	 * 初始化数据的操作
	 */
	public abstract void initData();

	// ---------------窗处理相同的逻辑--------//
	/**
	 * 处理相同的逻辑,主要处理的是返回按钮的方法;
	 */
	private void dealCommon() {
		// 处理相同的逻辑,返回按钮;要想处理返回按钮,就必须给每一个返回按钮定义相同的id;
		/*
		 * 预定义id可以在values文件夹下面新建一个ids.xml文件; 例: 
    
     
		 * 
		 * 
     
		 * 
		 * 
    
		 */
		View backView = findViewById(R.id.back);
		//之后给返回按钮设置监听;不是每一个界面都会有返回按钮,所以在设置监听的时候,要判断是否存在;
		if(backView!=null){
			//如果为空的话就设置监听,
			backView.setOnClickListener(this);
		}
	}
	
	//重写监听的方法;
	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		//判断是否是返回按钮;
		case R.id.back:
			finish();
			break;

		default:
			//如果不是返回按钮就调用这个方法;
			onInnerClick(v);
			break;
		}
	}
	
	/**
     * 内部的点击监听回调
     * 子类如果有非返回按钮
     * @param v
     */
    public void onInnerClick(View v) {
        
    }
    
    
    /**
     * 弹出吐司
     * @param msg : 吐司内容
     */
    public void showToast(String msg){
        Toast.makeText(getApplicationContext(), 
                msg, Toast.LENGTH_SHORT).show();
    }
    /**
     * log
     */
    public void logI(String msg){
        LogUtils.i(getClass().getSimpleName(), msg);
    }
	

}
另附一个log工具类:



import android.util.Log;

public class LogUtils {
	//定义一个开关,等项目上线之后就不会打log的操作了;把开关给成false
    private static final boolean ENABLE = true;
    /**
     * 根据自己定义的标记弹log
     * @param tag 标记
     * @param msg 信息
     */
    public static void i(String tag, String msg) {
        if (ENABLE) {
            Log.i(tag, msg);
        }
    }
    /**
     * 根据类名打log
     * @param cls 类名
     * @param msg 信息
     */
    public static void i(Class
     cls, String msg) {
        if (ENABLE) {
            Log.i("itcast_" + cls.getSimpleName(), msg);
        }
    }
}
基本的activity基类的抽取,有问题的小伙伴可以加我的qq:281788747,请标明技术人士,谢谢




原网站

版权声明
本文为[lang_z]所创,转载请带上原文链接,感谢
https://blog.csdn.net/lang_z/article/details/52117465