- 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;
}
}