Flutter 学习资源汇总持续更新中.....
- 学习资源 玩安卓
常用的开源库
15、ZoomImageView 支持缩放图的ImageView类:https://github.com/chrisbanes/PhotoView
23、FastBlurUtil 类:我改良过的高斯模糊(毛玻璃)工具,效率非常高,使用很灵活。
github上的两种实现:
1、https://github.com/CameraKit/blurkit-android
2、https://github.com/wasabeef/Blurry
29、com.youth.banner.Banner 类:github 地址://https://github.com/youth5201314/banner 一个很优秀的实现自动滚动banner的库。
另外,里面有WeakHandler这个防止内存泄露的Handler类使用。还有各种的ViewPager Transformer可以使用。 。
30、AutoSizeImageView 类:按照Bitmap的宽高比,保持ImageView宽高比。需要在设置图片源之前调用setWidth(),setHeight()方法设置控件宽度,高度
32、EnglishCharFilter 类:限制中文字符算作两个字,英文字符算作一个字的工具类。用法:
editText.setFilters(new InputFilter[]{new EnglishCharFilter(MAX_COUNT)});
33、SimpleAnimatorListener 类:一个简单的动画监听类,目的是减少代码量。只监听了动画结束,因为动画结束是最常用的
34、ZoomImageView 类:一个支持手指缩放的ImageView ,支持在ViewPager中使用
36、LongImageView 类:自定义的用于显示长图的控件。基于WebView改造而来,性能卓越。
37、CenterDrawable 类:自定义的可以居中显示一个小图片的类。比如可以用于设置一个图片的未显示图片之前的默认图。
用法:imageView.setImageDrawable(new CenterDrawable(R.drawable.image_loadding_icon))
38、PolygonImageView 类:github 地址:https://github.com/AlbertGrobas/PolygonImageView
一个实现多边形的ImageView 类。四边形,五边形,六边形。另外还有星星,撕纸形状等,还可以自定义形状。
39、RoundedImageView 类:一个可以实现圆形图片、圆角图片的类。github 地址:https://github.com/vinc3m1/RoundedImageView
app:riv_corner_radius="30dp" 圆角的角度
app:riv_border_width="2dp" 图片边框的宽度
app:riv_border_color="#333333" 图片边框的颜色
app:riv_mutate_background="false" 是否需要显示控件的背景色,默认是显示
app:riv_oval="true" 是否展示为圆形,如果true ,那么riv_corner_radius 不生效
40、CornerLinearLayout && CornerRelativeLayout 类:自定义的可以显示圆角的View 。在布局中设置圆角用android:tag="20"
41、UpdateDialog 类:一套完善的检查更新的对话框,稍作改动就可以实现复杂的检查更新逻辑
42、AutoScrollRecyclerView 类:无限循环的自动滚动的RecyclerView类,可以实现跑马灯效果,或者各种自动滚动效果。配合TestAutoScrollAdapter使用
43、RippleView 类:涟漪效果,类似雷达扫描
44、ViewPagerLayoutManager 类:RecyclerView的LayoutManager,仿抖音首页效果-横向和竖向滑动的viewPager
ViewPagerLayoutManager.OnViewPagerListener 是滑动监听器
43、SubsamplingScaleImageView 类:一个可以显示长图的控件,和36不同的是,此类是自定义View实现的,推荐使用这个。
github地址:https://github.com/davemorrissey/subsampling-scale-image-cheerly.mybaseproject.view
44、TestFlexBoxActivity 类:一个用谷歌FlexBox实现流式布局的demo类。谷歌官方出品的FlexBox,实现了流式布局。
其中的FlexboxLayoutManager是为RecyclerView定制,可以实现流式布局。
github地址:https://github.com/google/flexbox-layout
45、com.github.zyyoona7:EasyPopup:1.1.1 :一款强大,美观,优雅的通用弹窗XPopup,支持随意位置显示。
github:https://github.com/zyyoona7/EasyPopup
46、支持断点续传的下载:1、https://github.com/AriaLyy/Aria 2、https://github.com/ixuea/AndroidDownloader
47、封装的易用数据库dbflow:https://github.com/agrosner/DBFlow 、 https://joyrun.github.io/2016/08/02/dbflow/
48、
48.1:沉浸式状态栏使用:https://github.com/Zackratos/UltimateBarX
48.2:设置状态栏颜色:https://github.com/msdx/status-bar-compat
48.3:判断刘海屏的工具类:NotchUtils.class
// 如果使用48.2,那么在Android6.0以下会存在页面被状态栏遮挡了的bug,需要加上这段代码:
// 注:viewLayout为当前Activity的根布局
viewLayout.post(new Runnable() {
@Override
public void run() {
int[] location = new int[2];
viewLayout.getLocationOnScreen(location);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
int barHeight = BaseUtils.getStatusBarHeight();
if (location[1] < barHeight) {
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) viewLayout.getLayoutParams();
params.topMargin = barHeight;
viewLayout.setLayoutParams(params);
}
}
}
});
49、检测是否为模拟器的工具类:EmulatorUtil.java
50、图片裁剪器:https://github.com/Yalantis/uCrop
51、一款轻量级的socket库(模拟器Launcher在使用):https://github.com/xuuhaoo/OkSocket
52、二维码扫描:https://github.com/devilsen/CZXing(底层库用的是:https://github.com/nu-book/zxing-cpp)
53、jackpal的Android-Terminal源码:https://github.com/jackpal/Android-Terminal-Emulator/
54、BottomDialogFragment:类似抖音评论列表--滑动关闭的dialog(使用的是BottomSheetDialogFragment或者BottomSheetDialog)
55、TestSnapNestViewPagerActivity:使用Android自带的UI实现的带头部的嵌套滚动的ViewPager
56、CommonFragmentViewPagerAdapter:通用的ViewPager的FragmentAdapter
57、TestGridViewWithHeaderActivity:利用NestedScrollView实现RecyclerView带上header
58、TestUserInfoViewModel:LiveData和ViewModel的使用示例
59、androidx.lifecycle.LifecycleObserver:可以让随便一个类具有Activity的生命周期
60、OnSingleClickListener:防止重复多次点击的类
60、js和android WebView通信:https://github.com/lzyzsd/JsBridge
61、集成各大push推送平台的库:https://github.com/xuexiangjys/XPush/wiki
62、手机和电脑屏幕共享的库,里面的TouchUtils可以实现转换触摸手势:https://github.com/android-notes/androidScreenShare
63、滑动表格库:ScrollablePanel:https://github.com/Kelin-Hong/ScrollablePanel
64、开源的视频播放器:https://github.com/CarGuo/GSYVideoPlayer
65、腾讯的多渠道打包:https://github.com/Tencent/VasDolly
66、直接获取TextView的LineCount的工具类,需要传入width:TextViewLinesUtils.getTextViewLines(TextView textView, int textViewWidth);
67、ConsecutiveScrollerLayout是Android下支持多个滑动布局:(RecyclerView、WebView、ScrollView等)和普通控件(TextView、ImageView、LinearLayou、自定义View等)持续连贯滑动的容器,它使所有的子View像一个整体一样连续顺畅滑动。并且支持布局吸顶功能:https://github.com/donkingliang/ConsecutiveScroller
68、一款时间选择器:https://github.com/loperSeven/DateTimePicker
69、GroupedRecyclerViewAdapter可以很方便的实现RecyclerView的分组显示,并且每个组都可以包含组头、组尾和子项;可以方便实现多种Type类型的列表,可以实现如QQ联系人的列表一样的列表展开收起功能,还可以实现头部悬浮吸顶功能等:https://github.com/donkingliang/GroupedRecyclerViewAdapter 具体见DEMO:TestConsecutiveNestScrollActivity
70、弹性动画实现:
70.1、谷歌的弹性动画:implementation 'androidx.dynamicanimation:dynamicanimation:1.0.0
示例:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2017/0330/7757.html
70.2、facebook的rebound:https://github.com/facebookarchive/rebound
view的万能动画:AndroidViewAnimations
71、输入法键盘切换平滑过渡:https://github.com/YummyLau/PanelSwitchHelper
72、FlowLayout.java:流式布局,来自腾讯团队的QMUIFloatLayout。 https://qmuiteam.com/android/documents/
73、VerticalTextView.java:来自腾讯团队的竖向排版的TextView
74、实现高斯模糊的库:https://github.com/woshidasusu/base-module/tree/master/blur
引入:implementation 'com.dasu.image:blur:0.0.6'
------------------------------------------------
用法:
//1、使用默认配置,最短调用链
Bitmap bitmap = DBlur.source(MainActivity.this).radius(5).sampling(8).build().doBlurSync();
//2、同步模糊,将imageView控制的视图进行模糊,完成后自动显示到 imageView1 控件上,以淡入动画方式
DBlur.source(imageView).intoTarget(imageView1).animAlpha().radius(5).sampling(8).build().doBlurSync();
//3、异步模糊,将drawable资源文件中的图片以 NATIVE 方式进行模糊,注册回调,完成时手动显示到 imageView1 控件上
DBlur.source(this, R.drawable.background).mode(BlurConfig.MODE_NATIVE).radius(5).sampling(8).build()
.doBlur(new OnBlurListener() {
@Override
public void onBlurSuccess(Bitmap bitmap) {
imageView1.setImageBitmap(bitmap);
}
banner
@Override
public void onBlurFailed() {
//do something
}});
75、lottie动画:https://github.com/airbnb/lottie-web
优秀开源项目
- Pokedex Pokedex
- JetpackMvvm JetpackMvvm
- MvvmHelper JetpackMvvm
- WanAndroid WanAndroid
- 短视频app Eyepetizer
其他开源库
- 自定义shape BackgroundLibrary
- BaseAdapter BaseRecyclerViewAdapterHelper
- RecyclerView 各种动画recyclerview-animators
- 微信开源项目,替代SP,MMKV
- 管理界面状态库:loadsir
- 动态权限申请 :XXPermissions
- 动态权限申请2 :PermissionX
- 动态权限申请3 :RxPermissions
- 动态权限申请3 :easypermissions
- 视频播放器:GSYVideoPlayer
- 视频播放器:YCVideoPlayer
- 视频播放器:yjPlay
- 视频播放器:DKVideoPlayer
图片选择:PictureSelector
新手引导:GuideView
二维码扫描:BGAQRCode-Android
日历控件:CalendarView
日历控件2:CalendarView
时间选择器:DateTimePicker
时间选择器:Android-PickerView
工具类集合:RxTool
自定义抽屉:MaterialDrawer
轮播容器banner:AppIntro
轮播容器banner2:banner
轮播容器banner3:MZBannerView
轮播容器banner4:ConvenientBanner
轮播容器banner5:BannerViewPager
轮播容器banner6:RecyclerBanner
跑马灯:TextBannerView
livedata 封装:LiveEventBus
livedata 封装2:UnPeek-LiveData
实现变换运动动画。TransformationLayout
Rainbow - 一种为 Android 应用渐变和着色的简单方法。
AndroidRibbon - 一种在 Android 上实现带有闪烁的漂亮功能区的简单方法。
ProgressView - 一个精致而灵活的 ProgressView,完全可自定义动画。
图表库:williamchart
图表库2:MPAndroidChart
图表库3:hellocharts
加载中的RecyclerView:ShimmerRecyclerView
Android 时间线视图库:Timeline-View
Android悬浮窗框架:EasyFloat
沉浸式状态栏使用:UltimateBarX
沉浸式状态栏使用:ImmersionBar
最万能的TabLayout:DslTabLayout
最万能的TabLayout:FlycoTabLayout
多渠道打包工具:VasDolly
万能工具类:AndroidUtilCode
加载反馈页管理框架:LoadSir
文件下载框架1:DownloadX
文件下载框架2:FileDownloader
文件下载框架3:okdownload
文件下载框架4:Aria
文件下载框架5:android-downloader
软键盘平滑过渡:soft-input-event
圆形Imageview CircleImageView
万能popWindow XPopup
反编译工具 jadx