一个封装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就可以开始倒计时
这里写图片描述

  1. 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);
0 0
原创粉丝点击