2020 年 GitHub- 上那些优秀 Android 开源库,这里是 Top10!建议收藏
val?myFlourish?=?createFlourish(parentLayout)?{setFlourishLayout(R.layout.layout_flourish_main)setFlourishAnimation(FlourishAnimation.ACCELERATE)setFlourishOrientation(FlourishOrientation.TOP_RIGHT)setIsShowedOnStart(true)setFlourishListener?{??}}
2.2 效果图
更多详细使用请看 Github:https://github.com/skydoves/Flourish
No3. AestheticDialogs
这是一个美观而时尚的 AlterDialog 库,目前可支持六种不同的对话框,如:
Flash Dialog
Connectify Dialog
Toaster Dialog
Emotion Dialog
Drake Dialog
Emoji Dialog 并且啊,还提供了暗黑模式的适配。
3.1 如何使用?
在 build.gradle 中添加如下依赖:
dependencies?{...implementation?'com.github.gabriel-TheCode:AestheticDialogs:1.1.0'}
代码中,显示不同种类的对话框则调用对应的方法就好
Flash:
AestheticDialog.showFlashDialog(this,?"Your?dialog?Title",?"Your?message",?AestheticDialog.SUCCESS);AestheticDialog.showFlashDialog(this,?"Your?dialog?Title",?"Your?message",?AestheticDialog.ERROR);
Connectify:
AestheticDialog.showConnectify(this,"Your?message",?AestheticDialog.SUCCESS);AestheticDialog.showConnectify(this,?"Your?message",?AestheticDialog.ERROR);
///?Dark?ThemeAestheticDialog.showConnectifyDark(this,"Your?message",AestheticDialog.SUCCESS);AestheticDialog.showConnectifyDark(this,?"Your?message",?AestheticDialog.ERROR);
Toaster:
AestheticDialog.showToaster(this,?"Your?dialog?Title",?"Your?message",?AestheticDialog.ERROR);AestheticDialog.showToaster(this,?"Your?dialog?Title",?"Your?message",?AestheticDialog.SUCCESS);AestheticDialog.showToaster(this,?"Your?dialog?Title",?"Your?message",?AestheticDialog.WARNING);AestheticDialog.showToaster(this,?"Your?dialog?Title",?"Your?message",?AestheticDialog.INFO);
///?Dark?ThemeAestheticDialog.showToasterDark(this,?"Your?dialog?Title",?"Your?message",?AestheticDialog.ERROR);AestheticDialog.showToasterDark(this,?"Your?dialog?Title",?"Your?message",?AestheticDialog.SUCCESS);AestheticDialog.showToasterDark(this,?"Your?dialog?Title",?"Your?message",?AestheticDialog.WARNING);AestheticDialog.showToasterDark(this,?"Your?dialog?Title",?"Your?message",?AestheticDialog.INFO);
Drake :
AestheticDialog.showDrake(this,?AestheticDialog.SUCCESS);AestheticDialog.showDrake(this,?AestheticDialog.ERROR);
Emoji :
AestheticDialog.showEmoji(this,"Your?dialog?Title",?"Your?message",?AestheticDialog.SUCCESS);AestheticDialog.showEmoji(this,?"Your?dialog?Title",?"Your?message",?AestheticDialog.ERROR);
///?Dark?ThemeAestheticDialog.showEmojiDark(this,"Your?dialog?Title",?"Your?message",?AestheticDialog.SUCCESS);AestheticDialog.showEmojiDark(this,?"Your?dialog?Title",?"Your?message",?AestheticDialog.ERROR);
Emotion :
AestheticDialog.showEmotion(this,"Your?dialog?Title",?"Your?message",?AestheticDialog.SUCCESS);AestheticDialog.showEmotion(this,?"Your?dialog?Title",?"Your?message",?AestheticDialog.ERROR);
Rainbow :
AestheticDialog.showRainbow(this,"Your?dialog?Title",?"Your?message",?AestheticDialog.SUCCESS);AestheticDialog.showRainbow(this,"Your?dialog?Title",?"Your?message",?AestheticDialog.ERROR);AestheticDialog.showRainbow(this,"Your?dialog?Title",?"Your?message",?AestheticDialog.WARNING);AestheticDialog.showRainbow(this,"Your?dialog?Title",?"Your?message",?AestheticDialog.INFO);
3.2 效果如下
Flash DialogConnectify DialogToaster Dialog
Emotion DialogDrake DialogEmoji Dialog
更多详情使用方法请看 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"?//?possible?values:?circular,?linear,?random_line,?star,?sweep?&?waveapp:revealAnimationDuration="2000"app:hideAnimationDuration="1500"?>
也可以在代码中添加:
val?revealLayout?=?EasyRevealLinearLayout(this)//?Set?the?ClipPathProvider?that?is?used?to?clip?the?view?for?reveal?animationrevealLayout.clipPathProvider?=?StarClipPathProvider(numberOfPoints?=?6)//?Set?the?duration?taken?for?reveal?animationrevealLayout.revealAnimationDuration?=?1500//?Set?the?duration?taken?for?hide?animationrevealLayout.hideAnimationDuration?=?2000//?Set?listener?to?get?updates?during?reveal/hide?animationrevealLayout.onUpdateListener?=?object:?RevealLayout.OnUpdateListener?{override?fun?onUpdate(percent:?Float)?{Toast.makeText(this@MainActivity,?"Revealed?percent:?$percent",?Toast.LENGTH_SHORT).show()}}//?Start?reveal?animationrevealLayout.reveal()//?Start?hide?animationrevealLayout.hide()
4.2 效果图
Emotion DialogDrake DialogEmoji Dialog
更多详细使用信息请看 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'}
在代码中,一系列的转换方法:
val?color?=?Color.parseColor("#e91e63")
val?rgb?=?color.asRgb()val?argb?=?color.asArgb()val?hex?=?color.asHex()val?hsl?=?color.asHsl()val?hsla?=?color.asHsla()val?hsv?=?color.asHsv()val?cmyk?=?color.asCmyk()
val?colorHsl?=?HSLColor(hue?=?210f,?saturation?=?0.5f,?lightness?=?0.5f)
val?colorInt?=?colorHsl.asColorInt()val?rgb?=?colorHsl.asRgb()val?argb?=?colorHsl.asArgb()val?hex?=?colorHsl.asHex()val?cmyk?=?colorHsl.asCmyk()val?hsla?=?colorHsl.asHsla()val?hsv?=?colorHsl.asHsv()
5.2 效果图
No6. AnimatedBottomBar
这是一个带动画的底部导航栏库。它使你可以以编程方式以及通过 XML 添加和删除选项卡。此外,我们可以轻松地从 BottomBar 拦截选项卡。限制访问应用程序导航中的高级区域时,“拦截”标签非常有用。流畅的动画提供了许多自定义选项,从动画插值器到设置波纹效果。
6.1 如何使用?
在 build.gradle 中添加如下依赖:
dependencies?{implementation?'nl.joery.animatedbottombar:library:1.0.8'}
在 xml 文件中添加 AnimatedBottomBar 和自定义属性
<nl.joery.animatedbottombar.AnimatedBottomBarandroid: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 文件:
<menu?xmlns:android="http://schemas.android.com/apk/res/android"><itemandroid:id="@+id/tab_home"android:icon="@drawable/home"android:title="@string/home"?/><itemandroid:id="@+id/tab_alarm"android:icon="@drawable/alarm"android:title="@string/alarm"?/><itemandroid:id="@+id/tab_bread"android:icon="@drawable/bread"android:title="@string/bread"?/><itemandroid:id="@+id/tab_cart"android:icon="@drawable/cart"android:title="@strin
g/cart"?/></menu>
最后,代码中添加 tab
//?Creating?a?tab?by?passing?valuesval?bottomBarTab1?=?AnimatedBottomBar.createTab(drawable,?"Tab?1")
//?Creating?a?tab?by?passing?resourcesval?bottomBarTab2?=?AnimatedBottomBar.createTab(R.drawable.ic_home,?R.string.tab_2,?R.id.tab_home)
6.2 效果图
tab1tab2
No7. RateBottomSheet
有时候,为了推广我们的应用,我们需要让用户跳转到应用商店为我们的 APP 打分,传统的对话框用户体验很不好,而本库则是用 BottomSheet 来进行提示,它位于底部缩略区域,用户体验很好。
7.1 如何使用呢?
在 build.gradle 中添加如下依赖:
dependencies?{implementation?'com.mikhaellopez:ratebottomsheet:1.1.0'}
然后修改默认的 string 资源文件来改变显示文案:
<resources><string?name="rate_popup_ask_title">Like?this?App?</string><string?name="rate_popup_ask_message">Do?you?like?using?this?application?</string><string?name="rate_popup_ask_ok">Yes?I?do</string><string?name="rate_popup_ask_no">Not?really</string>
<string?name="rate_popup_title">Rate?this?app</string><string?name="rate_popup_message">Would?you?mind?taking?a?moment?to?rate?it??It?won't?take?more?than?a?minute.?Thanks?for?your?support!</string><string?name="rate_popup_ok">Rate?it?now</string><string?name="rate_popup_later">Remind?me?later</string><string?name="rate_popup_no">No,?thanks</string></resources>
代码中使用:
RateBottomSheetManager(this).setInstallDays(1)?//?3?by?default.setLaunchTimes(2)?//?5?by?default.setRemindInterval(1)?//?2?by?default.setShowAskBottomSheet(false)?//?True?by?default.setShowLaterButton(false)?//?True?by?default.setShowCloseButtonIcon(false)?//?True?by?default.monitor()
//?Show?bottom?sheet?if?meets?conditions//?With?AppCompatActivity?or?FragmentRateBottomSheet.showRateBottomSheetIfMeetsConditions(this)
7.2 效果图
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.TransformationLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"app:transformation_targetView="@+id/my_cardView"?//?sets?a?target?view.app:transformation_duration="450"?//?sets?a?duration?of?the?transformation.app:transformation_direction="auto"?//?auto,?entering,?returningapp:transformation_fadeMode="in"?//?in,?out,?cross,?throughapp:transformation_fitMode="auto"?//?auto,?height,?widthapp:transformation_pathMode="arc"?//?arc,?linear
</com.skydoves.transformationlayout.TransformationLayout>
比如我们要将一个 fab 过渡到一个 card 卡片,布局如下:
<com.skydoves.transformationlayout.TransformationLayoutandroid: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.FloatingActionButtonandroid: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.MaterialCardViewandroid: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 种方式:
通过在 xml 中指定属性:
app:transformation_targetView="@+id/myCardView"
在代码中绑定
transformationLayout.bindTargetView(myCardView)
当我们点击 fab 时,在监听器中调用 startTransform()开始过渡动画,finishTransform()开始结束动画。
//?start?transformation?when?touching?the?fab.fab.setOnClickListener?{transformationLayout.startTransform()}
//?finish?transformation?when?touching?the?myCardView.myCardView.setOnClickListener?{transformationLayout.finishTransform()}
8.2 效果图
No9. Donut
这个一个可以展示多个数据集的圆环形控件,具有精细的颗粒控制、间隙功能、动画选项以及按比例缩放其值的功能。可以用于项目中的一些数据统计。
9.1 如何使用?
在 build.gradle 中添加如下依赖:
dependencies?implementation("app.futured.donut:library:$version")
}
然后在布局文件中添加 View:
评论