常用组件整理
前言
整理一些Android常用的框架。文章整理时间为2020年9月份。
我这文章这段时间有点儿guy,必须关注才能查阅。是因为这文章本来不适宜传递到网上,所以我就想通过这样的方式减少他人的阅读兴趣。
整理角度
轮播
动态权限申请
图表
刷新控件
对话框
数据库
§
使用组件 com.youth.banner
。位于GitHub榜首,且再无敌手。度娘7成的文章都是使用的这个组件。参考GitHub地址
效果预览
-
默认
-
画廊
-
魅族
-
头条
-
文字标题
-
数字指示器
-
外部指示器
-
仿淘宝
原理简析
封装ViewPager2,融入指示器、标题和切换动画等效果
选型原因
- 使用了ViewPager2为基础控件 [ViewPager2介绍]
- 支持了androidx兼容包
- 方便了UI、Indicator自定义
- 支持画廊效果、魅族效果
- 兼容了水平和垂直轮播,也可以实现类似淘宝头条的效果
- 依赖包目前只需要导入了ViewPager2
- 内置了多种PageTransformer效果(切换的动画效果)
适用场景
在固定区域轮换的切换文本、图片、音视频等
demo实现
public class BannerActivity extends AppCompatActivity {
public void useBanner() {
//--------------------------简单使用-------------------------------
banner.addBannerLifecycleObserver(this)//添加生命周期观察者
.setAdapter(new BannerExampleAdapter(DataBean.getTestData()))
.setIndicator(new CircleIndicator(this));
//—————————————————————————如果你想偷懒,而又只是图片轮播————————————————————————
banner.setAdapter(new BannerImageAdapter<DataBean>(DataBean.getTestData3()) {
@Override
public void onBindView(BannerImageHolder holder, DataBean data,
int position, int size) {
//图片加载自己实现
Glide.with(holder.itemView)
.load(data.imageUrl)
.apply(RequestOptions.bitmapTransform(new RoundedCorners(30)))
.into(holder.imageView);
}
})
.addBannerLifecycleObserver(this)//添加生命周期观察者
.setIndicator(new CircleIndicator(this));
//更多使用方法仔细阅读文档,或者查看demo
}
}
动态权限申请 §
动态权限申请的框架很多,感觉也各有用途。截止2020年9月16日,在GitHub上查询到一些受欢迎的框架:PermissionsDispatcher
星数超过10K,RxPermissions
接近10K,AndPermission
超过6K,easypermissions
超过8.7K,PermissionX
(郭霖2020年推出的一个框架)星数暂时不及1K。另外还有我们之前用过的Blankj/AndroidUtilCode
当中也有权限申请的功能。
在这里我简单展示一些权限申请框架,并说明用法。
市面上这些权限申请框架基本都是通过一个隐形的Activity或者是Fragment来展示权限申请框。通过源码可以看到一些痕迹。
选型一:RxPermissions
特点
基于RxJava
打造的一个申请框架,能够配合其他Rx库使用。参考GitHub地址
示例
- 申请多个权限
rxPermissions
.request(Manifest.permission.CAMERA,
Manifest.permission.READ_PHONE_STATE)
.subscribe(granted -> {
if (granted) {
// All requested permissions are granted
} else {
// At least one permission is denied
}
});
- 单独处理每个结果
rxPermissions
.requestEach(Manifest.