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分割线
阅读全文
0 0
- Android常用类的抽取
- android findViewById(...)的抽取
- android 抽取basepager类
- Beautiful soup常用的抽取规则
- GoldenGate 抽取进程的常用添加方法
- Android屏幕页面的滑动切换和抽取父类
- Android之样式和基类的抽取
- jdbc工具类的抽取。
- ButterKnife的base类抽取
- jdbc 工具类的抽取
- Android Studio抽取代码的方法
- Android开发之标题栏的抽取
- Android知识总结--ListView的BaseAdapter抽取
- Android中公用属性的抽取
- Android——RecyclerAdapter的抽取封装
- 为什么gbk编码常用抽取正则表达式无法抽取"嘚瑟"的“嘚”字
- 直接拿来用,BaseActivity的常用功能的抽取
- (二十二)常用方法(工具方法)的抽取
- 数据结构&&图论板子
- 101. Spring Boot轻松理解动态注入,删除bean【从零开始学Spring Boot】
- 机器学习(25)之K-Means聚类算法详解
- Spring概念总结。分开IOC和DI。便于理解不混淆
- Mac下Mysql中文乱码解决方案
- Android常用类的抽取
- html5 canvas 图片压缩
- java set初始化
- 项目中网页显示本地图片
- android5.0协调布局CoordinatorLayout(第二篇CollapsingToolbarLayout效果实现原理讲解)原理
- espress02.1精华
- MySQL查询语句
- JS-设计模式之观察者模式
- Mac OS安装Scrapy