一个封装android开发常用控件的库
来源:互联网 发布:php小偷源码 编辑:程序博客网 时间:2024/06/11 18:49
这个库的使用只要在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 集成加载,加载错误,数据为空的界面 使用方法:
<android.support.v7.widget.RecyclerView android:id="@+id/rv_layout" android:layout_width="match_parent" android:layout_height="match_parent"></android.support.v7.widget.RecyclerView><com.betterda.mylibrary.LoadingPager android:id="@+id/loadpager_layout" android:layout_width="match_parent" android:layout_height="match_parent"></com.betterda.mylibrary.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 可以动态的设置宽高的布局
<com.betterda.xsnanosell.view.RatioLayout android:id="@+id/ratio_store" android:layout_width="match_parent" android:layout_height="match_paren" app:ratio="2"> <RelativeLayout android:id="@+id/relative_storedetail_picture" android:layout_width="match_parent" android:layout_height="match_parent"> </RelativeLayout> </com.betterda.xsnanosell.view.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);
- 一个封装android开发常用控件的库
- Android开发-02-自己常用的一个get和post方式提交类的封装
- 快速开发常用 工具控件封装
- android开发---7.常用控件的使用
- Android 一个改善的okHttp封装库
- Android 一个改善的okHttp封装库
- Android 一个改善的okHttp封装库
- Android 一个改善的okHttp封装库
- Android 一个改善的okHttp封装库
- Android 一个改善的okHttp封装库
- Android 一个改善的okHttp封装库
- Android 一个改善的okHttp封装库
- Android 一个改善的okHttp封装库
- Android 一个改善的okHttp封装库
- Android 一个改善的okHttp封装库
- Android 一个改善的okHttp封装库
- Android 一个改善的okHttp封装库
- Android 一个改善的okHttp封装库
- NVidia TensorRT 运行 Caffe 模型
- (36) 默认实参、内联函数和constexpr函数
- Spark mapPartitions()操作
- 平台立体监控nodejs+mongodb
- 单片机应用系统的基本组成
- 一个封装android开发常用控件的库
- Dubbo2.3.2的服务停止脚本stop.sh源码
- js原生代码实现数据双向绑定
- 堆和栈的区别(内存和数据结构)
- Leetcode 98. Validate Binary Search Tree (Medium) (cpp)
- 牛客网刷题之数据流中的中位数
- Java并发编程(Java Concurrency)(12)- Java 同步代码块(Java Synchronized Blocks)
- 在sklearn中使用DataFrame的一些问题(训练集与测试集列顺序问题)
- cmd下查看java字节码