前言
每过一段时间呀,我都会给大家带来一些从Github上收集的一些开源库,有的是炫酷动效,有的则是实用的工具和类库。以前没看过或者没有珍藏的同学,倡议先珍藏,以下是链接:
【Android收藏】举荐10个炫酷的开源库
)
【开源举荐】进阶实战,从一款音乐播放器开始
)
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|
| ------ | ------ |
|||
更多具体应用办法请看Github: https://github.com/Chrisvin/LiquidSwipe
No2. Flourish
Flourish
提供了一个炫酷的形式来显示或者暗藏一个布局,实现形式也很简略,就是对View或者布局进行了包装,通过构建者模式来提供api给下层调用。就像应用dialog一样,调用show
和dissmiss
办法来显示和暗藏。此外,通过这些类,咱们还能够自定义动画(失常,减速,反弹),或为布局方向设置咱们本人的终点(左上,右下等)。
2.1 如何应用?
在build.gradle 中增加如下依赖:
dependencies { implementation "com.github.skydoves:flourish:1.0.0"}
而后在代码中,构建布局:
Flourish flourish = new Flourish.Builder(parentLayout) // sets the flourish layout for showing and dismissing on the parent layout. .setFlourishLayout(R.layout.layout_flourish_main) // sets the flourishing animation for showing and dismissing. .setFlourishAnimation(FlourishAnimation.BOUNCE) // sets the orientation of the starting point. .setFlourishOrientation(FlourishOrientation.TOP_LEFT) // sets a flourishListener for listening changes. .setFlourishListener(flourishListener) // sets the flourish layout should be showed on start. .setIsShowedOnStart(false) // sets the duration of the flourishing. .setDuration(800L) .build();
还提供有更简介的DSL:
val myFlourish = createFlourish(parentLayout) { setFlourishLayout(R.layout.layout_flourish_main) setFlourishAnimation(FlourishAnimation.ACCELERATE) setFlourishOrientation(FlourishOrientation.TOP_RIGHT) setIsShowedOnStart(true) setFlourishListener { }}
2.2 效果图
| 成果1| 成果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 Theme AestheticDialog.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 Theme AestheticDialog.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 Theme AestheticDialog.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 Dialog | Connectify Dialog | Toaster Dialog |
---|---|---|
Emotion Dialog | Drake Dialog | Emoji 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 & wave app:revealAnimationDuration="2000" app:hideAnimationDuration="1500" > <!-- The views to be revealed/hidden go here --></com.jem.easyreveal.layouts.EasyRevealLinearLayout><!-- Similarly for com.jem.easyreveal.layouts.EasyRevealConstraintLayout & com.jem.easyreveal.layouts.EasyRevealFrameLayout -->
也能够在代码中增加:
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 Dialog | Drake Dialog | Emoji 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 效果图
更多具体应用信息请看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
文件:
<menu xmlns: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
// 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 效果图
| tab1| tab2|
| ------ | ------ |
|||
详情信息请看Github: https://github.com/Droppers/AnimatedBottomBar
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 效果图
更多详情请看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" // sets a target view. app:transformation_duration="450" // sets a duration of the transformation. 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> <!-- other views --></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种形式:
- 通过在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 效果图
更多应用形式请看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"/>
而后在代码中设置数据:
val dataset1 = DonutDataset( name = "dataset_1", color = Color.parseColor("#FB1D32"), amount = 1f)val dataset2 = DonutDataset( name = "dataset_2", color = Color.parseColor("#FFB98E"), amount = 1f)donut_view.cap = 5fdonut_view.submitData(listOf(dataset1, dataset2))
9.2 效果图
更多用法请看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( new CurveGraphConfig.Builder(this) .setAxisColor(R.color.Blue) // Set X and Y axis line color stroke. .setIntervalDisplayCount(7) // Set number of values to be displayed in X ax .setGuidelineCount(2) // Set number of background guidelines to be shown. .setGuidelineColor(R.color.GreenYellow) // Set color of the visible guidelines. .setNoDataMsg(" No Data ") // Message when no data is provided to the view. .setxAxisScaleTextColor(R.color.Black) // Set X axis scale text color. .setyAxisScaleTextColor(R.color.Black) // Set Y axis scale text color .build() ););
3、 提供数据集
PointMap pointMap = new PointMap(); pointMap.addPoint(0, 100); pointMap.addPoint(1, 500); pointMap.addPoint(5, 800); pointMap.addPoint(4, 600);
10.2 效果图
| 成果1| 成果2|
| ------ | ------ |
|||
|||
更多具体应用形式请看Github: https://github.com/swapnil1104/CurveGraphView
总结
以上就是本期的开源库举荐,别忘了增加到你的收藏夹哟!如果你感觉还不错,就三连反对一下吧!如果你还有一些有意思的,成果特地炫酷的库,也欢送评论区留言举荐,感激浏览,祝编码欢快!
每天都有干货文章继续更新,能够微信搜寻「 技术最TOP 」
第一工夫浏览,回复【思维导图】【面试】【简历】有我筹备一些Android进阶路线、面试领导和简历模板送给你