美文网首页Android菜鸟
android开发中的baseActivity

android开发中的baseActivity

作者: 上行彩虹人 | 来源:发表于2018-01-25 17:42 被阅读18次
BaseActivity的好处

1.处理共同操作
2.代码规范
3.可以提供常用变量方法

/**
 * Created by Administrator on 2018/1/25 0025.
 */
public abstract class BaseActicity extends FragmentActivity  implements View.OnClickListener
{
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(getLayoutresID());
        View viewRoot = findViewById(android.R.id.content);//找到根View
        setButtonOnClickListener(viewRoot);
        //Button btn =findView(R.id.btn_back);
        initView();
        initListener();
        initData();
    }


    /**
     * 使用泛型,每次findViewByID不用强转、
     * @param id
     * @param <T>
     * @return
     */
    public  <T> T findView(int id){
        T view = (T)findViewById(id);
        return view;
    }
    //为界面每一个按钮添加点击事件
    private void setButtonOnClickListener(View view) {
        if(view instanceof Button || view instanceof ImageButton){
            view.setOnClickListener(this);
        }else if( view instanceof ViewGroup){
            ViewGroup vg =(ViewGroup)view;
            for (int i=0 ;i<vg.getChildCount();i++){
                View v= vg.getChildAt(i);
                setButtonOnClickListener(v);
            }
        }
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btn_back:
                //单击得是返回按钮
                finish();
                break;
            default:
                //默认使用子类处理
                onClick(v,v.getId());
                break;
        }


    }

    /**
     * 打印吐司
     * @param text
     */
    public void showToast(String text){
        Toast toast = Toast.makeText(this, text, Toast.LENGTH_SHORT);
        //在容器中间显示
        toast.setGravity(Gravity.CENTER ,0,0);
        toast.show();
    }
    /**
     * @param v
     * @param id
     */
    protected abstract void onClick(View v, int id);
    protected abstract void initListener();
    protected abstract void initView();

    /**
     * 设置布局
     * @return layoutID
     */
    protected abstract int getLayoutresID();
    protected abstract void initData();
}

2.抽取出接口和Utils

UIoperation.java

public interface UIoperation extends View.OnClickListener {
     void initListener();
     void initView();
     int getLayoutresID();
    void initData();
    void onClick(View v, int id);
}

Utils.java

public class Utils  {
    //为界面每一个按钮添加点击事件
    public static void setButtonOnClickListener(View view , View.OnClickListener listener) {
        if(view instanceof Button || view instanceof ImageButton){
            view.setOnClickListener(listener);
        }else if( view instanceof ViewGroup){
            ViewGroup vg =(ViewGroup)view;
            for (int i=0 ;i<vg.getChildCount();i++){
                View v= vg.getChildAt(i);
                setButtonOnClickListener(v,listener);
            }
        }
    }
    public static void showToasts(Context context,String text){
        Toast toast = Toast.makeText(context, text, Toast.LENGTH_SHORT);
        //在容器中间显示
        toast.setGravity(Gravity.CENTER ,0,0);
        toast.show();
    }
}

BaseActivity.java

public abstract class BaseActicity extends FragmentActivity  implements UIoperation
{
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(getWindow().FEATURE_NO_TITLE);
        setContentView(getLayoutresID());
        View viewRoot = findViewById(android.R.id.content);//找到根View
        Utils.setButtonOnClickListener(viewRoot,this);
        //Button btn =findView(R.id.btn_back);
        initView();
        initListener();
        initData();
        System.out.println("AAAAAAAA");
    }


    /**
     * 使用泛型,每次findViewByID不用强转、
     * @param id
     * @param <T>
     * @return
     */
    public  <T> T findView(int id){
        T view = (T)findViewById(id);
        return view;
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btn_back:
                //单击得是返回按钮
                finish();
                break;
            default:
                //默认使用子类处理
                onClick(v,v.getId());
                break;
        }


    }

    /**
     * 打印吐司
     * @param text
     */
    public void showToast(String text){
       Utils.showToasts(this,text);
    }

}

相关文章

网友评论

    本文标题:android开发中的baseActivity

    本文链接:https://www.haomeiwen.com/subject/ictbaxtx.html