这个库的使用只要在gradle中添加 compile ‘com.betterda:mylibrary:2.4.2’即可库的源码地址
这个是我自己在开发中整理的一些常用控件,方便在以后的项目中使用.
1.自定义的Toast主要是为了解决在5.0以上用户关闭了通知时无法显示Toast的问题.用法很简单只要在之前使用系统的Toast的地方换成我的包下的Toast就可以了 com.betterda.mylibrary.Utils.Toast.但是要在baseactivity的ondestry方法中调用Toast.reset方法防止内存泄漏
2.recycleview上拉加载的使用 首先使用HeaderAndFooterRecyclerViewAdapter来包装普通的适配器. 然后调用rvBalance.addOnScrollListener(new EndlessRecyclerOnScrollListener(getmActivity()) { //加载更多的方法 @Override public void onLoadNextPage(View view) { //滑到了最后,如果是正常状态才开始加载 if (LoadingFooter.State.Normal == RecyclerViewStateUtils.getFooterViewState(rvBalance)) { //设置为加载状态 只需要修改rvbanlance 为你自己的rv RecyclerViewStateUtils.setFooterViewState(this, rvBalance, LoadingFooter.State.Loading, null); //网络请求加载更多
}
}
//用来完成当数据没满一页时,不显示加载更多 @Override public void show(boolean isShow) { /** * listOrder表示rv的容器 * rvBalance 表示rv * size 表示你分页请求的数量 */
RecyclerViewStateUtils.show(isShow, listOrder, rvBalance, this,size);
}
});
3.LoadingPager 集成加载,加载错误,数据为空的界面 使用方法:
将loadpager覆盖在需要显示的控件上方
调用loadpager的setLoadVisable显示加载界面,调用setErrorVisable显示错误界面,调用setEmptyVisable显示数据为空的界面,调用hide方法可以将界面都隐藏.调用setonEmptyClickListener和setonErrorClickListener可以设置加载错误和数据为空时的点击事件
4.时间选择框
ChangeBirthDialog changeBirthDialog = new ChangeBirthDialog(getmActivity()); //设置初始时间 changeBirthDialog.setDate(UtilMethod.getYear(), UtilMethod.getMonth(), UtilMethod.getDay()); //设置监听 changeBirthDialog.setBirthdayListener(new ChangeBirthDialog.OnBirthListener() { @Override public void onClick(String s, String s1, String s2) {
//s表示年,s1表示月,s2表示日
}
});
//显示 changeBirthDialog.show();
5.城市三级联动 WheelDialog wheelDialog = new WheelDialog(this); wheelDialog.setOnAddressCListener(new WheelDialog.OnAddressCListener() { @Override public void onClick(String s, String s1, String s2) { //s表示省,s1表示市,s2表示区 } }); wheelDialog.show(); 6.城市选择控件 list = new ArrayList<>(); list.add(“广州”); list.add(“北京”); list.add(“上海”); list.add(“深圳”); //根据定位信息来设置定位城市 ccvCity.setLoacitonCity(“北京”); //设置热门城市数据 ccvCity.setHotCityList(list); //设置热门城市的点击事件 ccvCity.setOnCityItemClickListner(new ChooseCityView.onCityItemClickListner() { @Override public void click(int position) { Toast.makeText(getApplicationContext(), list.get(position), 0).show(); } });
//设置主要城市的点击事件
ccvCity.setOnSortItemClickListner(new ChooseCityView.onSortItemClickListner() {
@Override
public void click(String city) {
Toast.makeText(getApplicationContext(),city,0).show();
}
});
7.菊花加载对话框 ShapeLoadingDialog 调用UtilMethod的createDialog(Context mContext, String content)方法就可以创建一个对话框, content表示要显示的内容.然后再调用show显示,调用dismiss关闭
8.60秒倒计时控件
调用showCountDown就可以开始倒计时
RatioLayout 可以动态的设置宽高的布局
由ratio来决定宽高比,比如上面的ratio为2就表示宽和高的比例为2.这里的height只要设置一个固定值就好,其实是没有效果的,但不能为wrap_content.如上,宽为match_parent,ratio=2,那么高就是屏幕宽的一半.
10.recycleview的item拖动和向左滑动删除
同上拉加载一样用HeaderAndFooterRecyclerViewAdapter来包装适配器,然后调用setmItems(List list)方法设置数据关联.
然后在ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new SimpleItemTouchHelperCallback(adapter));
itemTouchHelper.attachToRecyclerView(rvBalance);
这样就将recycleview和itemTouchHelper关联起来了,就可以拖动或者滑动删除了
11.着色状态栏的使用
1.在setContentView之前使用StatusBarCompat.setStatusBar5(Activity activity,int color)就可以完成5.0以上的着色, color表示需要设置的颜色
2.还需要在setContentView之后调用StatusBarCompat.setStatusBar4(Activity activity,int color)这个方法,才可以在4.4到5.0之间也可以着色.
12.6.0动态权限的申请
1.调用如下方法请求权限
/**
* 请求拍照的权限
* 第二个参数表示一个view ,可以随便传入一个
* 第三个表示 请求的权限数组
* 第4个是请求码
* 第5个是回调接口
*/
private void requestPermiss() {
PermissionUtil.checkPermission(getmActivity(), linearAddbankcard2Bankcard, REQUEST_PERMISSIONS, REQUEST_PERMISSION_CODE_TAKE_PIC, new PermissionUtil.permissionInterface() {
@Override
public void success() {
UtilMethod.paizhao(getmActivity(), Constants.PHOTOHRAPH);
}
});
}
但是还得需要重写下面的方法来判断权限是否开启成功,并且做相应的处理
/**
* 检测权限的回调
*
* @param requestCode
* @param permissions
* @param grantResults
*/
public void onRequestPermissionsResult(int requestCode, final String[] permissions, int[] grantResults) {
if (requestCode == REQUEST_PERMISSION_CODE_TAKE_PIC) {
if (PermissionUtil.verifyPermissions(grantResults)) {//有权限
// TODO
} else {
//没有权限
if (!PermissionUtil.shouldShowPermissions(this,permissions)) {//这个返回false 表示勾选了不再提示
showSnackBar(linearAddbankcard2Bankcard, "请去设置界面设置权限","去设置");
} else {
//表示没有权限 ,但是没勾选不再提示
showSnackBar(linearAddbankcard2Bankcard, "请允许权限请求!");
}
}
} else {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
重写下面的方法为了判断, 用户去设置界面是否开启了权限
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//如果是从设置界面返回,就继续判断权限
if (requestCode == REQUEST_PERMISSION_SEETING) {
requestPermiss();
}
}
13.XRecyclview 自定义的一个recycleview实现上啦加载和下拉刷新
xml
<com.betterda.mylibrary.xrecycleview.XRecyclerView
android:id="@+id/rv_fragment_sort_name"
android:overScrollMode="never"
android:layout_width="match_parent"
android:layout_height="match_parent">
com.betterda.mylibrary.xrecycleview.XRecyclerView>
java
mRvSortName.setLayoutManager(gridLayoutManager);
//开启上拉加载
mRvSortName.setLoadingMoreEnabled(true);
mRvSortName.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
//设置刷新完成
mRvSortName.refreshComplete();
}
@Override
public void onLoadMore() {
}
});
mRvSortName.setAdapter(adapter);