android 之 Baseactivity 和BaseFragment

  1. baseActivity
/**
 * @author 作者名 易皇星
 * @email 郵箱名 [email protected]
 * @time 2016-5-14 2016-05
 * @TODO 緣分是本書,翻得不經意會錯過,讀得太認真會流淚!
 */

public abstract class BaseActivity extends FragmentActivity implements OnClickListener{
    protected final SparseArray<View> mViews = new SparseArray<View>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(initLayout(savedInstanceState));

        /**
         * 加載視圖
         */
        initLayout(savedInstanceState);
        /**
         * 初始化控件
         */
        initView(savedInstanceState);
        /**
         * 
         * 初始化數據
         */
        initData(savedInstanceState);
        /**
         * 添加事件監聽對象
         */
        initListener(savedInstanceState);



    }

    /**
     * 再也不需要每次都findViewById
     * 
     * @param resId    控件的id
     * @return
     */
    protected <V extends View> V getView(int resId) {
        return bindView(resId);

    }

    private <V extends View> V bindView(int resId) {
        View view = mViews.get(resId);
        if (view == null) {
            view = findViewById(resId);
            mViews.put(resId, view);
        }
        return (V) view;

    }

    protected abstract int initLayout(Bundle savedInstanceState);

    protected abstract void initView(Bundle savedInstanceState);

    protected abstract void initData(Bundle savedInstanceState);

    protected abstract void initListener(Bundle savedInstanceState);
    /**
     * 
     * @param view 事件監聽
     */
    protected abstract void widgetClick(View view);


    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        if(fastClick()){
            widgetClick(v);
        }
    }

    private long lastClick =0;
    /**
     * 
     * @return 控制短時間內重複點擊事件----看個人愛好而定
     */
    private boolean fastClick(){
        if(System.currentTimeMillis()-lastClick<=500){
            return false;
        }

        lastClick=System.currentTimeMillis();
        return true;

    }
}

2.baseFragment

/** 
 * @author 作者名 易皇星
 * @email  郵箱名 [email protected]
 * @time   2016-5-14 2016-05
 * @TODO 緣分是本書,翻得不經意會錯過,讀得太認真會流淚!
 */

public abstract class BaseFragment extends Fragment implements OnClickListener{

    protected Context mcontext;

    private static final String tag = "BaseFragment";

    protected View mRootVie;

    protected final SparseArray<View> mViews = new SparseArray<View>();

     @Override
        public void onCreate( Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            mcontext=getActivity();


        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,  Bundle savedInstanceState) {
             if (mRootView == null) {
                    mRootView = inflater.inflate(getLayoutId(), container, false);
                    onViewInflated();

                    setListener();

                }
                return mRootView;
        }
/**
 * 
 *    用get代替findViewById();
 * @param resId
 * @return
 */

        protected <V extends View> V get(int resId){
            return bindView(resId);

        }

        private <V extends View > V bindView(int resId){
            View view = mViews.get(resId);
            if(view==null){
                 view = mRootView.findViewById(resId);
                    mViews.put(resId, view);
            }
            return (V) view;

        }

        /**
         *   加載佈局
         * @return
         */

        protected abstract int getLayoutId();

        /**
         * 初始化控件
         */


        protected abstract void onViewInflated();
        /**
         * 添加事件監聽對象
         */
        protected abstract void setListener();


        /**
         * 
         * @param view 事件監聽
         */
        protected abstract void widgetClick(View view);



    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        if (fastClick()) {
            widgetClick(v);
        }

    }

    private long lastClick = 0;

    /**
     * 
     * @return 控制短時間內重複點擊事件----看個人愛好而定
     */
    private boolean fastClick() {
        if (System.currentTimeMillis() - lastClick <= 500) {
            return false;
        }

        lastClick = System.currentTimeMillis();
        return true;

    }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章