前言

每过一段时间呀,我都会给大家带来一些从Github上收集的一些开源库,有的是炫酷动效,有的则是实用的工具和类库。2020年有哪些优秀的开源库呢?本期就为大家带精选的10个,排名不分先后。

No1. LiquidSwipe

这是一个很棒的ViewPager库,它在浏览ViewPager的不同页面时,显示波浪的滑动动画,效果非常炫酷。该库的USP是触摸交互的。这意味着在视图中显示类似液体的显示过渡时,应考虑触摸事件。

1.1如何使用呢?

导入以下gradle依赖项:

implementation'com.github.Chrisvin:LiquidSwipe:1.3'

然后将LiquidSwipeLayout添加为保存fragment布局的容器的根布局:

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <com.jem.liquidswipe.LiquidSwipeViewPager android:id="@ id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent"/> </androidx.constraintlayout.widget.ConstraintLayout>

1.2 效果图

效果1效果2

Android开源(上那些优秀Android开源库)(1)

Android开源(上那些优秀Android开源库)(2)

更多详细使用方法请看Github: https://github.com/Chrisvin/LiquidSwipe

我的学习Android进阶之路

接下来,为大家介绍下我学习Android时用到的一些资料与视频,需要的伙伴可以

私信我【进阶】,我分享给你,也是感谢大家这么久以来对我的支持。

Android开源(上那些优秀Android开源库)(3)

B站Android进阶视频

Android开源(上那些优秀Android开源库)(4)

去B站搜索,B站账号:bili_84936792704 即可观看哦!

OK,废话不多说接下来继续看文章吧。

No2. Flourish

Flourish提供了一个炫酷的方式来显示或者隐藏一个布局,实现方式也很简单,就是对View或者布局进行了包装,通过构建者模式来提供api给上层调用。就像使用dialog一样,调用show和dissmiss方法来显示和隐藏。此外,通过这些类,我们还可以自定义动画(正常,加速,反弹),或为布局方向设置我们自己的起点(左上,右下等)。

2.1 如何使用?

在build.gradle 中添加如下依赖:

dependencies{ implementation"com.github.skydoves:flourish:1.0.0" }

然后在代码中,构建布局:

Flourishflourish=newFlourish.Builder(parentLayout) //setstheflourishlayoutforshowinganddismissingontheparentlayout. .setFlourishLayout(R.layout.layout_flourish_main) //setstheflourishinganimationforshowinganddismissing. .setFlourishAnimation(FlourishAnimation.BOUNCE) //setstheorientationofthestartingpoint. .setFlourishOrientation(FlourishOrientation.TOP_LEFT) //setsaflourishListenerforlisteningchanges. .setFlourishListener(flourishListener) //setstheflourishlayoutshouldbeshowedonstart. .setIsShowedOnStart(false) //setsthedurationoftheflourishing. .setDuration(800L) .build();

还提供有更简洁的DSL:

valmyFlourish=createFlourish(parentLayout){ setFlourishLayout(R.layout.layout_flourish_main) setFlourishAnimation(FlourishAnimation.ACCELERATE) setFlourishOrientation(FlourishOrientation.TOP_RIGHT) setIsShowedOnStart(true) setFlourishListener{} }

2.2 效果图

效果1效果2

Android开源(上那些优秀Android开源库)(5)

Android开源(上那些优秀Android开源库)(6)

更多详细使用请看Github:https://github.com/skydoves/Flourish

No3. AestheticDialogs

这是一个美观而时尚的AlterDialog库,目前可支持六种不同的对话框,如:

3.1 如何使用?

在build.gradle 中添加如下依赖:

dependencies{ ... implementation'com.github.gabriel-TheCode:AestheticDialogs:1.1.0' }

代码中,显示不同种类的对话框则调用对应的方法就好

Flash:

AestheticDialog.showFlashDialog(this,"YourdialogTitle","Yourmessage",AestheticDialog.SUCCESS); AestheticDialog.showFlashDialog(this,"YourdialogTitle","Yourmessage",AestheticDialog.ERROR);

Connectify:

AestheticDialog.showConnectify(this,"Yourmessage",AestheticDialog.SUCCESS); AestheticDialog.showConnectify(this,"Yourmessage",AestheticDialog.ERROR); ///DarkTheme AestheticDialog.showConnectifyDark(this,"Yourmessage",AestheticDialog.SUCCESS); AestheticDialog.showConnectifyDark(this,"Yourmessage",AestheticDialog.ERROR);

Toaster:

AestheticDialog.showToaster(this,"YourdialogTitle","Yourmessage",AestheticDialog.ERROR); AestheticDialog.showToaster(this,"YourdialogTitle","Yourmessage",AestheticDialog.SUCCESS); AestheticDialog.showToaster(this,"YourdialogTitle","Yourmessage",AestheticDialog.WARNING); AestheticDialog.showToaster(this,"YourdialogTitle","Yourmessage",AestheticDialog.INFO); ///DarkTheme AestheticDialog.showToasterDark(this,"YourdialogTitle","Yourmessage",AestheticDialog.ERROR); AestheticDialog.showToasterDark(this,"YourdialogTitle","Yourmessage",AestheticDialog.SUCCESS); AestheticDialog.showToasterDark(this,"YourdialogTitle","Yourmessage",AestheticDialog.WARNING); AestheticDialog.showToasterDark(this,"YourdialogTitle","Yourmessage",AestheticDialog.INFO);

Drake :

AestheticDialog.showDrake(this,AestheticDialog.SUCCESS); AestheticDialog.showDrake(this,AestheticDialog.ERROR);

Emoji :

AestheticDialog.showEmoji(this,"YourdialogTitle","Yourmessage",AestheticDialog.SUCCESS); AestheticDialog.showEmoji(this,"YourdialogTitle","Yourmessage",AestheticDialog.ERROR); ///DarkTheme AestheticDialog.showEmojiDark(this,"YourdialogTitle","Yourmessage",AestheticDialog.SUCCESS); AestheticDialog.showEmojiDark(this,"YourdialogTitle","Yourmessage",AestheticDialog.ERROR);

Emotion :

AestheticDialog.showEmotion(this,"YourdialogTitle","Yourmessage",AestheticDialog.SUCCESS); AestheticDialog.showEmotion(this,"YourdialogTitle","Yourmessage",AestheticDialog.ERROR);

Rainbow :

AestheticDialog.showRainbow(this,"YourdialogTitle","Yourmessage",AestheticDialog.SUCCESS); AestheticDialog.showRainbow(this,"YourdialogTitle","Yourmessage",AestheticDialog.ERROR); AestheticDialog.showRainbow(this,"YourdialogTitle","Yourmessage",AestheticDialog.WARNING); AestheticDialog.showRainbow(this,"YourdialogTitle","Yourmessage",AestheticDialog.INFO);

3.2 效果如下

Flash DialogConnectify DialogToaster Dialog

Android开源(上那些优秀Android开源库)(7)

Android开源(上那些优秀Android开源库)(8)

Android开源(上那些优秀Android开源库)(9)

Emotion DialogDrake DialogEmoji Dialog

Android开源(上那些优秀Android开源库)(10)

Android开源(上那些优秀Android开源库)(11)

Android开源(上那些优秀Android开源库)(12)

更多详情使用方法请看Github:https://github.com/gabriel-TheCode/AestheticDialogs

N4. EasyReveal

从名字就知道,这是一个提供reveal动画效果的库,它的厉害之处在于可以提供不同尺寸、不同形状的reveal动画,并且还可以在定义它在屏幕任意位置开始和结束动画。

4.1 如何使用?

在build.gradle 中添加如下依赖:

dependencies{ ... implementation'com.github.Chrisvin:EasyReveal:1.2' }

然后,xml中,需要添加显示或者隐藏动画的View应该包裹在EasyRevealLinearLayout中:

<com.jem.easyreveal.layouts.EasyRevealLinearLayout ... app:clipPathProvider="star"//possiblevalues:circular,linear,random_line,star,sweep&wave app:revealAnimationDuration="2000" app:hideAnimationDuration="1500"> <!--Theviewstoberevealed/hiddengohere--> </com.jem.easyreveal.layouts.EasyRevealLinearLayout> <!--Similarlyforcom.jem.easyreveal.layouts.EasyRevealConstraintLayout&com.jem.easyreveal.layouts.EasyRevealFrameLayout-->

也可以在代码中添加:

valrevealLayout=EasyRevealLinearLayout(this) //SettheClipPathProviderthatisusedtocliptheviewforrevealanimation revealLayout.clipPathProvider=StarClipPathProvider(numberOfPoints=6) //Setthedurationtakenforrevealanimation revealLayout.revealAnimationDuration=1500 //Setthedurationtakenforhideanimation revealLayout.hideAnimationDuration=2000 //Setlistenertogetupdatesduringreveal/hideanimation revealLayout.onUpdateListener=object:RevealLayout.OnUpdateListener{ overridefunonUpdate(percent:Float){ Toast.makeText(this@MainActivity,"Revealedpercent:$percent",Toast.LENGTH_SHORT).show() } } //Startrevealanimation revealLayout.reveal() //Starthideanimation revealLayout.hide()

4.2效果图

Emotion DialogDrake DialogEmoji Dialog

Android开源(上那些优秀Android开源库)(13)

Android开源(上那些优秀Android开源库)(14)

Android开源(上那些优秀Android开源库)(15)

Android开源(上那些优秀Android开源库)(16)

Android开源(上那些优秀Android开源库)(17)

Android开源(上那些优秀Android开源库)(18)

更多详细使用信息请看Github:https://github.com/Chrisvin/EasyReveal

No5. Android ColorX

Android ColorX 以Kotlin 扩展函数的形式提供了一些重要的获取颜色的方法。通过提供不同颜色格式(RGB,HSV,CYMK等)的转换功能,它使开发变得更加轻松。该库的USP具有以下功能:

5.1 如何使用?

在build.gradle 中添加如下依赖:

dependencies{ implementation'me.jorgecastillo:androidcolorx:0.2.0' }

在代码中,一系列的转换方法:

valcolor=Color.parseColor("#e91e63") valrgb=color.asRgb() valargb=color.asArgb() valhex=color.asHex() valhsl=color.asHsl() valhsla=color.asHsla() valhsv=color.asHsv() valcmyk=color.asCmyk() valcolorHsl=HSLColor(hue=210f,saturation=0.5f,lightness=0.5f) valcolorInt=colorHsl.asColorInt() valrgb=colorHsl.asRgb() valargb=colorHsl.asArgb() valhex=colorHsl.asHex() valcmyk=colorHsl.asCmyk() valhsla=colorHsl.asHsla() valhsv=colorHsl.asHsv()

5.2 效果图

Android开源(上那些优秀Android开源库)(19)

更多详细使用信息请看Github:https://github.com/JorgeCastilloPrz/AndroidColorX

No6. AnimatedBottomBar

这是一个带动画的底部导航栏库。它使你可以以编程方式以及通过XML添加和删除选项卡。此外,我们可以轻松地从BottomBar拦截选项卡。限制访问应用程序导航中的高级区域时,“拦截”标签非常有用。流畅的动画提供了许多自定义选项,从动画插值器到设置波纹效果。

6.1 如何使用?

在build.gradle 中添加如下依赖:

dependencies{ implementation'nl.joery.animatedbottombar:library:1.0.8' }

在xml文件中添加AnimatedBottomBar和自定义属性

<nl.joery.animatedbottombar.AnimatedBottomBar android:id="@ id/bottom_bar" android:background="#FFF" android:layout_width="match_parent" android:layout_height="wrap_content" app:abb_selectedTabType="text" app:abb_indicatorAppearance="round" app:abb_indicatorMargin="16dp" app:abb_indicatorHeight="4dp" app:abb_tabs="@menu/tabs" app:abb_selectedIndex="1"/>

在res/menu目录下定义tabs.xml文件:

<menuxmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@ id/tab_home" android:icon="@drawable/home" android:title="@string/home"/> <item android:id="@ id/tab_alarm" android:icon="@drawable/alarm" android:title="@string/alarm"/> <item android:id="@ id/tab_bread" android:icon="@drawable/bread" android:title="@string/bread"/> <item android:id="@ id/tab_cart" android:icon="@drawable/cart" android:title="@string/cart"/> </menu>

最后,代码中添加tab

//Creatingatabbypassingvalues valbottomBarTab1=AnimatedBottomBar.createTab(drawable,"Tab1") //Creatingatabbypassingresources valbottomBarTab2=AnimatedBottomBar.createTab(R.drawable.ic_home,R.string.tab_2,R.id.tab_home)

6.2 效果图

tab1tab2

Android开源(上那些优秀Android开源库)(20)

Android开源(上那些优秀Android开源库)(21)

详情信息请看Github: https://github.com/Droppers/AnimatedBottomBar

No7. RateBottomSheet

有时候,为了推广我们的应用,我们需要让用户跳转到应用商店为我们的APP打分,传统的对话框用户体验很不好,而本库则是用BottomSheet来进行提示,它位于底部缩略区域,用户体验很好。

7.1 如何使用呢?

在build.gradle 中添加如下依赖:

dependencies{ implementation'com.mikhaellopez:ratebottomsheet:1.1.0' }

然后修改默认的string资源文件来改变显示文案:

<resources> <stringname="rate_popup_ask_title">LikethisApp?</string> <stringname="rate_popup_ask_message">Doyoulikeusingthisapplication?</string> <stringname="rate_popup_ask_ok">YesIdo</string> <stringname="rate_popup_ask_no">Notreally</string> <stringname="rate_popup_title">Ratethisapp</string> <stringname="rate_popup_message">Wouldyoumindtakingamomenttorateit?Itwon\'ttakemorethanaminute.Thanksforyoursupport!</string> <stringname="rate_popup_ok">Rateitnow</string> <stringname="rate_popup_later">Remindmelater</string> <stringname="rate_popup_no">No,thanks</string> </resources>

代码中使用:

RateBottomSheetManager(this) .setInstallDays(1)//3bydefault .setLaunchTimes(2)//5bydefault .setRemindInterval(1)//2bydefault .setShowAskBottomSheet(false)//Truebydefault .setShowLaterButton(false)//Truebydefault .setShowCloseButtonIcon(false)//Truebydefault .monitor() //Showbottomsheetifmeetsconditions //WithAppCompatActivityorFragment RateBottomSheet.showRateBottomSheetIfMeetsConditions(this)

7.2 效果图

Android开源(上那些优秀Android开源库)(22)

更多详情请看Github:https://github.com/lopspower/RateBottomSheet

No8. TransformationLayout

这是一个用于Activity或者Fragment 以及View切换的过渡动画库,效果非常炫,它使用Material Design的运动系统过渡模式来创建变形动画。该库提供了用于绑定目标视图,设置淡入淡出和路径运动方向以及许多其他自定义选项的属性。

8.1 如何使用?

在build.gradle 中添加如下依赖:

dependencies{ implementation"com.github.skydoves:transformationlayout:1.0.4" }

然后,需要将我们需要添加过渡动画的View包裹到 TransformationLayout:

<com.skydoves.transformationlayout.TransformationLayout android:layout_width="wrap_content" android:layout_height="wrap_content" app:transformation_targetView="@ id/my_cardView"//setsatargetview. app:transformation_duration="450"//setsadurationofthetransformation. app:transformation_direction="auto"//auto,entering,returning app:transformation_fadeMode="in"//in,out,cross,through app:transformation_fitMode="auto"//auto,height,width app:transformation_pathMode="arc"//arc,linear > <!--otherviews--> </com.skydoves.transformationlayout.TransformationLayout>

比如我们要将一个fab 过渡到一个card卡片,布局如下:

<com.skydoves.transformationlayout.TransformationLayout android:id="@ id/transformationLayout" android:layout_width="wrap_content" android:layout_height="wrap_content" app:transformation_duration="550" app:transformation_targetView="@ id/myCardView"> <com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@ id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:backgroundTint="@color/colorPrimary" android:src="@drawable/ic_write"/> </com.skydoves.transformationlayout.TransformationLayout> <com.google.android.material.card.MaterialCardView android:id="@ id/myCardView" android:layout_width="240dp" android:layout_height="312dp" android:layout_marginLeft="30dp" android:layout_marginTop="30dp" app:cardBackgroundColor="@color/colorPrimary"/>

重点来了,绑定视图,将一个targetView绑定到TransformationLayout有2种方式:

app:transformation_targetView="@ id/myCardView"

transformationLayout.bindTargetView(myCardView)

当我们点击fab时,在监听器中调用startTransform()开始过渡动画,finishTransform()开始结束动画。

//starttransformationwhentouchingthefab. fab.setOnClickListener{ transformationLayout.startTransform() } //finishtransformationwhentouchingthemyCardView. myCardView.setOnClickListener{ transformationLayout.finishTransform() }

8.2 效果图

Android开源(上那些优秀Android开源库)(23)

更多使用方式请看Github: https://github.com/skydoves/TransformationLayout

No9. Donut

这个一个可以展示多个数据集的圆环形控件,具有精细的颗粒控制、间隙功能、动画选项以及按比例缩放其值的功能。可以用于项目中的一些数据统计。

9.1 如何使用?

在build.gradle 中添加如下依赖:

dependencies implementation("app.futured.donut:library:$version") }

然后在布局文件中添加View:

<app.futured.donut.DonutProgressView android:id="@ id/donut_view" android:layout_width="wrap_content" android:layout_height="wrap_content" app:donut_bgLineColor="@color/cloud" app:donut_gapWidth="20" app:donut_gapAngle="270" app:donut_strokeWidth="16dp"/>

然后在代码中设置数据:

valdataset1=DonutDataset( name="dataset_1", color=Color.parseColor("#FB1D32"), amount=1f ) valdataset2=DonutDataset( name="dataset_2", color=Color.parseColor("#FFB98E"), amount=1f ) donut_view.cap=5f donut_view.submitData(listOf(dataset1,dataset2))

9.2 效果图

Android开源(上那些优秀Android开源库)(24)

更多用法请看Github: https://github.com/futuredapp/donut

No10. CurveGraphView

CurveGraphView 是一个带有炫酷动画统计图表库,除了性能出色并具有许多样式选项之外,该库还支持单个平面内的多个线图。

多个折线图对于比较不同股票,共同基金,加密货币等的价格非常有用。

10.1 如何使用?

1、在build.gradle 中添加如下依赖:

dependencies{ implementation'com.github.swapnil1104:CurveGraphView:{current_lib_ver}' }

2、在xml文件中添加布局:

<com.broooapps.graphview.CurveGraphView android:id="@ id/cgv" android:layout_width="0dp" android:layout_height="250dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"/>

然后在代码中添加各种配置项

curveGraphView=findViewById(R.id.cgv); curveGraphView.configure( newCurveGraphConfig.Builder(this) .setAxisColor(R.color.Blue)//SetXandYaxislinecolorstroke. .setIntervalDisplayCount(7)//SetnumberofvaluestobedisplayedinXax .setGuidelineCount(2)//Setnumberofbackgroundguidelinestobeshown. .setGuidelineColor(R.color.GreenYellow)//Setcolorofthevisibleguidelines. .setNoDataMsg("NoData")//Messagewhennodataisprovidedtotheview. .setxAxisScaleTextColor(R.color.Black)//SetXaxisscaletextcolor. .setyAxisScaleTextColor(R.color.Black)//SetYaxisscaletextcolor .build() ););

3、 提供数据集

PointMappointMap=newPointMap(); pointMap.addPoint(0,100); pointMap.addPoint(1,500); pointMap.addPoint(5,800); pointMap.addPoint(4,600);

10.2 效果图

Android开源(上那些优秀Android开源库)(25)

效果1

Android开源(上那些优秀Android开源库)(26)

Android开源(上那些优秀Android开源库)(27)

效果2

Android开源(上那些优秀Android开源库)(28)

更多详细使用方式请看Github: https://github.com/swapnil1104/CurveGraphView

总结

以上就是本期的开源库推荐,别忘了添加到你的收藏夹哟!如果你觉得还不错,就三连支持一下吧!如果你还有一些有意思的,效果特别炫酷的库,也欢迎评论区留言推荐,感谢阅读,祝编码愉快!

---END---

,