Android常用类的抽取

提示等待的进度条的抽取
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分割线
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值