Android常用类的抽取

来源:互联网 发布:上海淘宝平铺摄影师 编辑:程序博客网 时间:2024/05/21 17:01

提示等待的进度条的抽取

public class BaseProgressDialog extends Dialog{    //工厂模式    public static BaseProgressDialog newInstance(Context context){        return new BaseProgressDialog(context);    }    //三个构造器    public BaseProgressDialog(Context context) {        this(context,R.style.progress_dialog);        initUI();    }    public BaseProgressDialog(Context context, int themeResId) {        super(context, themeResId);        initUI();    }    protected BaseProgressDialog(Context context, boolean cancelable, OnCancelListener cancelListener) {        super(context, cancelable, cancelListener);        initUI();    }    //初始化ui    private void initUI(){        setContentView(new ProgressBar(getContext()));        getWindow().getAttributes().gravity = Gravity.CENTER;        setCanceledOnTouchOutside(false);    }}

BaseAcitivity

public interface BaseInterface {    public static final int NONE = -1;    public static final int REQUEST_CODE = 0X01;    public static final int RESULT_OK = Activity.RESULT_OK;    public static final int RESULT_CANCELED = Activity.RESULT_CANCELED;    public static final String KEY_ID = "key_id";    public static final String KEY_TITLE = "key_title";    public static final String KEY_URL = "key_url";    public static final String KEY_SERIALIZABLE = "key_serializable";    public static final String KEY_OBJECT = "key_object";    public static final String KEY_FRAGMENT = "key_fragment";    public abstract void initUI();    public abstract void initData();    public abstract void addListeners();}
public abstract class BaseActivity extends AppCompatActivity implements  BaseInterface{    //context    protected Context context = this;    //dialog一个progressdialog    private Dialog dialog;    private BaseProgressDialog progressDialog;    //是否stop的标志位    protected boolean isStop;    //一个保存当前页面的变量    protected int curPage;    //将oncreate细分为了initui initdata  addlisteners三个部分    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        curPage = 1;        initUI();        initData();        addListeners();    }    //生命周期相关    @Override    protected void onResume() {        super.onResume();        isStop = false;    }    @Override    protected void onStop() {        super.onStop();        isStop = true;        dismissProgressDialog();    }    @Override    protected void onDestroy() {        super.onDestroy();        dismissDialog();    }    //ContentView相关    public static View getContentView(Activity activity){        ViewGroup view = (ViewGroup)activity.getWindow().getDecorView();        FrameLayout content = (FrameLayout)view.findViewById(android.R.id.content);        return content.getChildAt(0);    }    protected View inflate(@LayoutRes int id){        return inflate(id,null);    }    protected View inflate(@LayoutRes int id, @Nullable ViewGroup root){       return LayoutInflater.from(context).inflate(id,root);    }    protected <T extends View> T findView(int resId){        return (T)findViewById(resId);    }    //设置某一个view的监听事件    protected void setOnClickListener(@IdRes int id,View.OnClickListener onClicklistener){        findViewById(id).setOnClickListener(onClicklistener);    }    //intent相关    protected Intent getIntent(Class<?> cls){        return new Intent(context,cls);    }    protected Intent getIntent(Class<?> cls,int flags){        Intent intent = getIntent(cls);        intent.setFlags(flags);        return intent;    }    //startAcitivity相关    protected void startActivity(Class<?> cls){        startActivity(getIntent(cls));    }    protected void startActivity(Class<?> cls,int flags){        startActivity(getIntent(cls,flags));    }    protected void startActivityFinish(Class<?> cls){        startActivity(cls);        finish();    }    protected void startActivityFinish(Class<?> cls,int flags){        startActivity(cls,flags);        finish();    }    //Fragment相关    public void replaceFragment(@IdRes int resId,Fragment fragment){        replaceFragment(resId,fragment,false);    }    public void replaceFragment(@IdRes int resId, Fragment fragment, boolean isBackStack) {        FragmentTransaction fragmentTransaction =  getSupportFragmentManager().beginTransaction();        fragmentTransaction.replace(resId, fragment);        if(isBackStack){            fragmentTransaction.addToBackStack(null);        }        fragmentTransaction.commit();    }    //吐司相关    protected void showToast(@StringRes  int resId){        if(resId != NONE)            ToastUtils.showToast(context,resId);    }    protected void showLongToast(@StringRes  int resId){        ToastUtils.showToast(context,resId, Toast.LENGTH_LONG);    }    protected void showToast(CharSequence text){        ToastUtils.showToast(context,text);    }    protected void showLongToast(CharSequence text){        ToastUtils.showToast(context,text, Toast.LENGTH_LONG);    }    //文本检查    public boolean checkInput(TextView tv){        return checkInput(tv,NONE);    }    public boolean checkInput(TextView tv,@StringRes int resId){        return checkInput(tv,resId,false);    }    public boolean checkInput(TextView tv,@StringRes int resId,boolean isShake){        if(StringUtils.isBlank(tv.getText())){            if(isShake)                startShake(tv,resId);            else                showToast(resId);            return false;        }        return true;    }    //动画相关    public void startShake(View v,@StringRes int resId){        startShake(v);        showToast(resId);    }    public void startShake(View view){        view.startAnimation(AnimationUtils.loadAnimation(context,R.anim.shake));    }    //软键盘相关    public void hideInputMethod(EditText v) {        SystemUtils.hideInputMethod(context,v);    }    public void showInputMethod(EditText v) {        SystemUtils.showInputMethod(context,v);    }    //progressDialog相关    public Dialog getProgressDialog() {        return progressDialog;    }    protected void showProgressDialog(){        showProgressDialog(new ProgressBar(context));    }    protected void showProgressDialog(@LayoutRes int resId){        showProgressDialog(LayoutInflater.from(context).inflate(resId,null));    }    protected void showProgressDialog(View v){        dismissProgressDialog();        progressDialog = BaseProgressDialog.newInstance(context);        progressDialog.setContentView(v);        progressDialog.show();    }    protected void dismissProgressDialog(){        dismissDialog(progressDialog);    }    //Dialog相关    public Dialog getDialog() {        return dialog;    }    protected void showDialog(View contentView){        showDialog(context,contentView);    }    protected void showDialog(Context context,View contentView){        dismissDialog();        dialog = new Dialog(context,R.style.dialog);        dialog.setContentView(contentView);        dialog.setCanceledOnTouchOutside(false);        getDialogWindow(dialog);        dialog.show();    }    protected void dismissDialog(){        dismissDialog(dialog);    }    protected void dismissDialog(Dialog dialog){        if(dialog != null && dialog.isShowing()){            dialog.dismiss();        }    }    protected void getDialogWindow(Dialog dialog){        Window window = dialog.getWindow();        WindowManager.LayoutParams lp = window.getAttributes();        lp.width = (int)(getWidthPixels()*0.9f);        lp.gravity= Gravity.CENTER;        window.setAttributes(lp);    }    //FragmentDialog相关    protected void dismissDialogFragment(DialogFragment dialogFragment){        if(dialogFragment != null){            dialogFragment.dismiss();        }    }    public void showDialogFragment(DialogFragment dialogFragment){        String tag = dialogFragment.getTag() !=null ? dialogFragment.getTag() : dialogFragment.getClass().getSimpleName();        showDialogFragment(dialogFragment,tag);    }    public void showDialogFragment(DialogFragment dialogFragment,String tag) {        dialogFragment.show(getSupportFragmentManager(),tag);    }    //开始一个异步任务    protected void asyncThread(Runnable runnable){        new Thread(runnable).start();    }    //获取屏幕信息    protected DisplayMetrics getDisplayMetrics(){        return getResources().getDisplayMetrics();    }    protected int getWidthPixels(){        return getDisplayMetrics().widthPixels;    }    protected int getHeightPixels(){        return getDisplayMetrics().heightPixels;    }}

ListViewAdapter

public abstract class AbstractAdapter<T> extends BaseAdapter{    //context mDatas LayoutInflater     private Context context;    private List<T> listData;    private LayoutInflater layoutInflater;    //adapter的通用操作    public AbstractAdapter(Context context,List<T> listData){        this.context = context;        this.listData = listData;        layoutInflater = LayoutInflater.from(context);    }    @Override    public int getCount() {        return listData==null ? 0:listData.size();    }    @Override    public Object getItem(int position) {        return listData==null ? null:listData.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    //datas相关    public List<T> getListData() {        return listData;    }    public void setListData(List<T> listData) {        this.listData = listData;    }    //context相关    public Context getContext(){        return context;    }    //Inflate相关    public LayoutInflater getLayoutInflater(){        return layoutInflater;    }    public View inflate(@LayoutRes int layoutId,ViewGroup parent,boolean attachToRoot){        return layoutInflater.inflate(layoutId,parent,attachToRoot);    }}
//进一步对getview进行抽取public abstract class HolderAdapter<T,H> extends AbstractAdapter<T>{    public HolderAdapter(Context context, List<T> listData) {        super(context, listData);    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        H holder = null;        T t = getListData().get(position);        if(convertView==null){            convertView = buildConvertView(getLayoutInflater(),t,position,parent);            holder = buildHolder(convertView,t,position);            convertView.setTag(holder);        }else{            holder = (H)convertView.getTag();        }        bindViewDatas(holder,t,position);        return convertView;    }    //创建ConvertView    public abstract View buildConvertView(LayoutInflater layoutInflater,T t,int position, ViewGroup parent);    //创建Hold对象    public abstract H buildHolder(View convertView,T t,int position);    //绑定数据    public abstract void bindViewDatas(H holder,T t,int position);}
//进一步对viewholder进行抽取public abstract class ViewHolderAdapter<T> extends HolderAdapter<T,ViewHolder> {    public ViewHolderAdapter(Context context, List<T> listData) {        super(context, listData);    }    @Override    public ViewHolder buildHolder(View convertView, T t, int position) {        return new ViewHolder(convertView);    }}   

RecyclerViewAdapter的抽取

public abstract class HolderRecyclerAdapter<T,H extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<H>{    //context datas layoutinflater    private Context context;    private List<T> listData;    private LayoutInflater layoutInflater;    //弥补Recyclerview的没有点击事件的缺点    private OnItemClicklistener mOnItemClicklistener;    //一些通用操作    public HolderRecyclerAdapter(Context context, List<T> listData){        super();        this.context = context;        this.listData = listData;        this.layoutInflater = LayoutInflater.from(context);    }    @Override    public int getItemCount() {        return listData==null ? 0:listData.size();    }    public List<T> getListData() {        return listData;    }    public void setListData(List<T> listData) {        this.listData = listData;    }    @Override    public H onCreateViewHolder(ViewGroup parent, int viewType) {        View itemView = buildConvertView(layoutInflater,parent,viewType);        return buildHolder(itemView,viewType);    }    @Override    public void onBindViewHolder(H holder, final int position) {        T t = position<listData.size() ? listData.get(position) : null;        bindViewDatas(holder,t,position);        if(this.mOnItemClicklistener!=null){            holder.itemView.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    mOnItemClicklistener.onItemClick(v,position);                }            });        }    }    //点击事件相关    public interface OnItemClicklistener{        public void onItemClick(View v, int position);    }    public void setOnItemClicklistener(OnItemClicklistener onItemClicklistener){        this.mOnItemClicklistener = onItemClicklistener;    }    //inflater相关    public LayoutInflater getLayoutInflater(){        return layoutInflater;    }    public View inflate(@LayoutRes int layoutId,ViewGroup parent,boolean attachToRoot){        return layoutInflater.inflate(layoutId,parent,attachToRoot);    }    //context相关    public Context getContext(){        return context;    }    public abstract View buildConvertView(LayoutInflater layoutInflater,ViewGroup parent,int viewType);    public abstract H buildHolder(View convertView,int viewType);    public abstract void bindViewDatas(H holder,T t,int position);}

Fragment的抽取

public abstract class BaseFragment extends Fragment implements BaseInterface {    //context    protected Context context;    //dialog 和progressdialog    private Dialog dialog;    private BaseProgressDialog progressDialog;    //Fragment的容器    protected ViewGroup container;    //Fragment的根布局    protected View rootView;    //当前页面 是否stop    protected int curPage;    protected boolean isStop;    //获取Fragment的父容器    public ViewGroup getContainer(){        return container;    }    public View getActivityRootView(){        //decorview中的content 还有一个title        return getActivity().findViewById(android.R.id.content);    }    @Nullable    @Override    //细分为initUI initData addListeners    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        context = getActivity();        this.container = container;        rootView = inflater.inflate(inflaterRootView(), container, false);        curPage = 1;        initUI();        initData();        addListeners();        if(rootView!=null)            return rootView;        return super.onCreateView(inflater, container, savedInstanceState);    }    //生命周期相关    @Override    public void onResume() {        super.onResume();        isStop = false;    }    @Override    public void onStop() {        super.onStop();        isStop = true;        dismissProgressDialog();    }    @Override    public void onDestroy() {        super.onDestroy();        dismissDialog();    }    //intent相关    protected Intent getIntent(){        return getActivity().getIntent();    }    protected Intent getIntent(Class<?> cls){        return new Intent(context,cls);    }    protected Intent getIntent(Class<?> cls,int flags){        Intent intent = getIntent(cls);        intent.setFlags(flags);        return intent;    }    //页面跳转相关    protected void startActivity(Class<?> cls){        startActivity(getIntent(cls));    }    protected void startActivity(Class<?> cls,int flags){        startActivity(getIntent(cls,flags));    }    protected void startActivityFinish(Class<?> cls){        startActivity(cls);        finish();    }    protected void startActivityFinish(Class<?> cls,int flags){        startActivity(cls,flags);        finish();    }    protected void finish(){        getActivity().finish();    }    protected void setResult(int resultCode){        setResult(resultCode,getIntent());    }    protected void setResult(int resultCode,Intent intent){        getActivity().setResult(resultCode,intent);    }    protected void setIntent(Intent newIntent){        getActivity().setIntent(newIntent);    }    //Inflate相关    @Override    public LayoutInflater getLayoutInflater(Bundle savedInstanceState) {        return super.getLayoutInflater(savedInstanceState);    }    protected View inflate(@LayoutRes int id){        return inflate(id,null);    }    protected View inflate(@LayoutRes int id, @Nullable ViewGroup root){        return LayoutInflater.from(context).inflate(id,root);    }    //设置某一个view的监听器    protected void setOnClickListener(@IdRes int id,View.OnClickListener onClicklistener){        findView(id).setOnClickListener(onClicklistener);    }    protected <T extends View> T findView(int resId){        return (T)rootView.findViewById(resId);    }    //Fragment替换相关    public void replaceChildFragment(@IdRes int resId, Fragment fragment) {        replaceFragment(getChildFragmentManager(),resId,fragment,false);    }    public void replaceFragment(@IdRes int resId, Fragment fragment){        replaceFragment(resId,fragment,false);    }    public void replaceFragment(@IdRes int resId, Fragment fragment, boolean isBackStack) {        replaceFragment(getFragmentManager(),resId,fragment,isBackStack);    }    public void replaceFragment(FragmentManager fragmentManager, @IdRes int resId, Fragment fragment, boolean isBackStack) {        FragmentTransaction fragmentTransaction =  fragmentManager.beginTransaction();        fragmentTransaction.replace(resId, fragment);        if(isBackStack){            fragmentTransaction.addToBackStack(null);        }        fragmentTransaction.commit();    }    //Toast相关    protected void showToast(@StringRes  int resId){        if(resId != NONE)            ToastUtils.showToast(context,resId);    }    protected void showLongToast(@StringRes  int resId){        if(resId != NONE)            ToastUtils.showToast(context,resId, Toast.LENGTH_LONG);    }    protected void showToast(CharSequence text){        ToastUtils.showToast(context,text);    }    protected void showLongToast(CharSequence text){        ToastUtils.showToast(context,text, Toast.LENGTH_LONG);    }    //检查输入相关    public boolean checkInput(TextView tv){        return checkInput(tv,NONE);    }    public boolean checkInput(TextView tv,@StringRes int resId){        return checkInput(tv,resId,false);    }    public boolean checkInput(TextView tv,@StringRes int resId,boolean isShake){        if(StringUtils.isBlank(tv.getText())){            if(isShake)                startShake(tv,resId);            else                showToast(resId);            return false;        }        return true;    }    public void startShake(View v,@StringRes int resId){        startShake(v);        showToast(resId);    }    public void startShake(View view){        view.startAnimation(AnimationUtils.loadAnimation(context,R.anim.shake));    }    //软键盘相关    public void hideInputMethod(final EditText v) {        InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);        imm.hideSoftInputFromWindow(v.getWindowToken(),0);    }    public void showInputMethod(final EditText v) {        v.requestFocus();        InputMethodManager imm = (InputMethodManager)context                .getSystemService(Context.INPUT_METHOD_SERVICE);        imm.showSoftInput(v,0);    }    //progressDialog相关    public Dialog getProgressDialog() {        return progressDialog;    }    protected void showProgressDialog(){        showProgressDialog(new ProgressBar(context));    }    protected void showProgressDialog(@LayoutRes int resId){        showProgressDialog(LayoutInflater.from(context).inflate(resId,null));    }    protected void showProgressDialog(View v){        dismissProgressDialog();        progressDialog =  BaseProgressDialog.newInstance(context);        progressDialog.setContentView(v);        progressDialog.show();    }    //FragmentDialog相关    public void showDialogFragment(DialogFragment dialogFragment){        String tag = dialogFragment.getTag() !=null ? dialogFragment.getTag() : dialogFragment.getClass().getSimpleName();        showDialogFragment(dialogFragment,tag);    }    public void showDialogFragment(DialogFragment dialogFragment,String tag) {        dialogFragment.show(getFragmentManager(),tag);    }    protected void dismissDialogFragment(DialogFragment dialogFragment){        if(dialogFragment != null){            dialogFragment.dismiss();        }    }    //dialog相关    protected void showDialog(View contentView){        showDialog(context,contentView);    }    protected void showDialog(Context context,View contentView){        dismissDialog();        dialog = new Dialog(context,R.style.dialog);        dialog.setContentView(contentView);        dialog.setCanceledOnTouchOutside(false);        getDialogWindow(dialog);        dialog.show();    }    protected void getDialogWindow(Dialog dialog){        Window window = dialog.getWindow();        WindowManager.LayoutParams lp = window.getAttributes();        lp.width = (int)(getWidthPixels()*0.9f);        window.setAttributes(lp);    }    public Dialog getDialog() {        return dialog;    }    protected void dismissProgressDialog(){        dismissDialog(progressDialog);    }    protected void dismissDialog(){        dismissDialog(dialog);    }    protected void dismissDialog(Dialog dialog){        if(dialog != null && dialog.isShowing()){            dialog.dismiss();        }    }    //开启一个异步任务    protected void asyncThread(Runnable runnable){        new Thread(runnable).start();    }    //屏幕信息相关    protected DisplayMetrics getDisplayMetrics(){        return getResources().getDisplayMetrics();    }    protected int getWidthPixels(){        return getDisplayMetrics().widthPixels;    }    protected int getHeightPixels(){        return getDisplayMetrics().heightPixels;    }    @LayoutRes    public abstract int inflaterRootView();}

FragmentPagerAdapter的抽取

public class ViewPagerFragmentAdapter extends FragmentPagerAdapter{    private List<Fragment> listData;    private List<CharSequence> listTitle;    //构造器相关    public ViewPagerFragmentAdapter(FragmentManager fm, List<Fragment> listData){        this(fm,listData,null);    }    public ViewPagerFragmentAdapter(FragmentManager fm, List<Fragment> listData, List<CharSequence> listTitle) {        super(fm);        this.listData = listData;        this.listTitle = listTitle;    }    //datas相关    public List<Fragment> getListData() {        return listData;    }    public void setListData(List<Fragment> listData) {        this.listData = listData;    }    //titles相关    public List<CharSequence> getListTitle() {        return listTitle;    }    public void setListTitle(List<CharSequence> listTitle) {        this.listTitle = listTitle;    }    //通用操作    @Override    public Fragment getItem(int position) {        return listData==null ? null : listData.get(position) ;    }    @Override    public int getCount() {        return listData == null ? 0 : listData.size();    }    @Override    public CharSequence getPageTitle(int position) {        if(listTitle!=null && listTitle.size()!=0){            return listTitle.get(position);        }        return super.getPageTitle(position);    }}

ViewPagerAdapter的抽取

public abstract class ViewPagerAdapter<T> extends PagerAdapter {    protected Context context;    private List<T> listData = null;    private List<CharSequence> listTitle = null;    public ViewPagerAdapter(Context context, List<T> listData) {        this.context = context;        this.listData = listData;    }    public ViewPagerAdapter(Context context,List<T> listData,List<CharSequence> listTitle) {        this.context = context;        this.listData = listData;        this.listTitle = listTitle;    }    @Override    public void destroyItem(ViewGroup container, int position, Object object) {        container.removeView((View)object);    }    @Override    public int getCount() {        return listData==null ? 0:listData.size();    }    @Override    public Object instantiateItem(ViewGroup container, int position) {        View view = getView(container,listData.get(position),position);        container.addView(view);        return view;    }    public abstract View getView(ViewGroup container,T t,int position);    @Override    public boolean isViewFromObject(View paramView, Object paramObject) {        return paramView == paramObject;    }    @Override    public CharSequence getPageTitle(int position) {        if(listTitle!=null && listTitle.size()!=0){            return listTitle.get(position);        }        return super.getPageTitle(position);    }}

RecyclerView分割线

原创粉丝点击