提示等待的进度条的抽取
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();
}
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{
protected Context context = this;
private Dialog dialog;
private BaseProgressDialog progressDialog;
protected boolean isStop;
protected int curPage;
@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();
}
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);
}
protected void setOnClickListener(@IdRes int id,View.OnClickListener onClicklistener){
findViewById(id).setOnClickListener(onClicklistener);
}
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();
}
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);
}
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);
}
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);
}
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{
private Context context;
private List<T> listData;
private LayoutInflater layoutInflater;
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;
}
public List<T> getListData() {
return listData;
}
public void setListData(List<T> listData) {
this.listData = listData;
}
public Context getContext(){
return context;
}
public LayoutInflater getLayoutInflater(){
return layoutInflater;
}
public View inflate(@LayoutRes int layoutId,ViewGroup parent,boolean attachToRoot){
return layoutInflater.inflate(layoutId,parent,attachToRoot);
}
}
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;
}
public abstract View buildConvertView(LayoutInflater layoutInflater,T t,int position, ViewGroup parent);
public abstract H buildHolder(View convertView,T t,int position);
public abstract void bindViewDatas(H holder,T t,int position);
}
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>{
private Context context;
private List<T> listData;
private LayoutInflater layoutInflater;
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;
}
public LayoutInflater getLayoutInflater(){
return layoutInflater;
}
public View inflate(@LayoutRes int layoutId,ViewGroup parent,boolean attachToRoot){
return layoutInflater.inflate(layoutId,parent,attachToRoot);
}
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 {
protected Context context;
private Dialog dialog;
private BaseProgressDialog progressDialog;
protected ViewGroup container;
protected View rootView;
protected int curPage;
protected boolean isStop;
public ViewGroup getContainer(){
return container;
}
public View getActivityRootView(){
return getActivity().findViewById(android.R.id.content);
}
@Nullable
@Override
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();
}
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);
}
@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);
}
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);
}
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();
}
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);
}
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();
}
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();
}
}
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();
}
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;
}
public List<Fragment> getListData() {
return listData;
}
public void setListData(List<Fragment> listData) {
this.listData = listData;
}
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);
}
}
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分割线