• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

2020年GitHub-上那些优秀Android开源库这里是Top10

android 搞代码 3年前 (2022-03-02) 12次浏览 已收录 0个评论

前言

每过一段时间呀,我都会给大家带来一些从Github上收集的一些开源库,有的是炫酷动效,有的则是实用的工具和类库。以前没看过或者没有珍藏的同学,倡议先珍藏,以下是链接:

【Android收藏】举荐10个炫酷的开源库
)
【开源举荐】进阶实战,从一款音乐播放器开始
)
2020年有哪些优良的开源库呢?本期就为大家带精选的10个,排名不分先后。

No1. LiquidSwipe

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

1.1如何应用呢?

导入以下Gradle依赖项:

<code class="java">implementation 'com.github.Chrisvin:LiquidSwipe:1.3'</code>

而后将LiquidSwipeLayout增加为保留fragment布局的容器的根布局:

<code class="xml"><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></code>

1.2 效果图

| 成果1| 成果2|
| —— | —— |
|||

更多具体应用办法请看Github: https://github.com/Chrisvin/LiquidSwipe

No2. Flourish

Flourish提供了一个炫酷的形式来显示或者暗藏一个布局,实现形式也很简略,就是对View或者布局进行了包装,通过构建者模式来提供api给下层调用。就像应用dialog一样,调用showdissmiss办法来显示和暗藏。此外,通过这些类,咱们还能够自定义动画(失常,减速,反弹),或为布局方向设置咱们本人的终点(左上,右下等)。

2.1 如何应用?

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

<code class="java">dependencies {
    implementation "com.github.skydoves:flourish:1.0.0"
}</code>

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

<code class="kotlin">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();</code>

还提供有更简介的DSL:

<code class="kotlin">val myFlourish = createFlourish(parentLayout) {
  setFlourishLayout(R.layout.layout_flourish_main)
  setFlourishAnimation(FlourishAnimation.ACCELERATE)
  setFlourishOrientation(FlourishOrientation.TOP_RIGHT)
  setIsShowedOnStart(true)
  setFlourishListener {  }
}</code>

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 中增加如下依赖:

<code class="java">dependencies {
    ...
    implementation 'com.github.gabriel-TheCode:AestheticDialogs:1.1.0'
}</code>

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

Flash:

<code class="java">AestheticDialog.showFlashDialog(this, "Your dialog Title", "Your message", AestheticDialog.SUCCESS);
AestheticDialog.showFlashDialog(this, "Your dialog Title", "Your message", AestheticDialog.ERROR);</code>

Connectify:

<code class="java">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);</code>

Toaster:

<code class="java"> 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);</code>

Drake :

<code class="java"> AestheticDialog.showDrake(this, AestheticDialog.SUCCESS);
AestheticDialog.showDrake(this, AestheticDialog.ERROR);</code>

Emoji :

<code class="java"> 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);</code>

Emotion :

<code class="java"> AestheticDialog.showEmotion(this,"Your dialog Title", "Your message", AestheticDialog.SUCCESS);
AestheticDialog.showEmotion(this, "Your dialog Title", "Your message", AestheticDialog.ERROR);</code>

Rainbow :

<code class="java"> 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);</code>

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 中增加如下依赖:

<code class="java">dependencies {
    ...
    implementation 'com.github.Chrisvin:EasyReveal:1.2'
}</code>

而后,xml中,须要增加显示或者暗藏动画的View应该包裹在EasyRevealLinearLayout 中:

<code class="xml"><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 --></code>

也能够在代码中增加:

<code class="kotlin">val revealLayout = EasyRevealLinearLayout(this)
// Set the ClipPathProvider that is used to clip the view for reveal animation
revealLayout.clipPathProvider = StarClipPathProvider(numberOfPoints = 6)
// Set the duration taken for reveal animation
revealLayout.revealAnimationDuration = 1500
// Set the duration taken for hide animation
revealLayout.hideAnimationDuration = 2000
// Set listener to get updates during reveal/hide animation
revealLayout.onUpdateListener = object: RevealLayout.OnUpdateListener {
    override fun onUpdate(percent: Float) {
        Toast.makeText(this@MainActivity, "Revealed percent: $percent", Toast.LENGTH_SHORT).show()
    }
}
// Start reveal animation
revealLayout.reveal()
// Start hide animation
revealLayout.hide()</code>

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 中增加如下依赖:

<code class="java">dependencies {
    implementation 'me.jorgecastillo:androidcolorx:0.2.0'
}</code>

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

<code class="kotlin">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()</code>

5.2 效果图

更多具体应用信息请看Github:https://github.com/JorgeCastilloPrz/AndroidColorX

No6. AnimatedBottomBar

这是一个带动画的底部导航栏库。它使你能够以编程形式以及通过XML增加和删除选项卡。此外,咱们能够轻松地从BottomBar拦挡选项卡。限度拜访应用程序导航中的高级区域时,“拦挡”标签十分有用。晦涩的动画提供了许多自定义选项,从动画插值器到设置波纹成果。

6.1 如何应用?

build.gradle 中增加如下依赖:

<code class="java">dependencies {
  implementation 'nl.joery.animatedbottombar:library:1.0.8'
}</code>

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

<code class="xml"><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" /></code>

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

<code class="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></code>

最初,代码中增加tab

<code class="kotlin">// Creating a tab by passing values
val bottomBarTab1 = AnimatedBottomBar.createTab(drawable, "Tab 1")

// Creating a tab by passing resources
val bottomBarTab2 = AnimatedBottomBar.createTab(R.drawable.ic_home, R.string.tab_2, R.id.tab_home)</code>

6.2 效果图

| tab1| tab2|
| —— | —— |
|||

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

No7. RateBottomSheet

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

7.1 如何应用呢?

build.gradle 中增加如下依赖:

<code class="java">dependencies {
implementation 'com.mikhaellopez:ratebottomsheet:1.1.0'
}</code>

而后批改默认的string资源文件来扭转显示文案:

<code class="xml"><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></code>

代码中应用:

<code class="kotlin">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 Fragment
RateBottomSheet.showRateBottomSheetIfMeetsConditions(this)</code>

7.2 效果图

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

No8. TransformationLayout

这是一个用于Activity或者Fragment 以及View切换的过渡动画库,成果十分炫,它应用Material Design的静止零碎过渡模式来创立变形动画。该库提供了用于绑定指标视图,设置淡入淡出和门路静止方向以及许多其余自定义选项的属性。

8.1 如何应用?

build.gradle 中增加如下依赖:

<code class="java">dependencies {
    implementation "com.github.skydoves:transformationlayout:1.0.4"
}</code>

而后,须要将咱们须要增加过渡动画的View包裹到 TransformationLayout:

<code class="xml"><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></code>

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

<code class="xml"><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" /></code>

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

  • 通过在xml中指定属性:
<code class="xml">app:transformation_targetView="@+id/myCardView"</code>

  • 在代码中绑定
<code class="kotlin">transformationLayout.bindTargetView(myCardView)</code>

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

<code class="kotlin">// start transformation when touching the fab.
fab.setOnClickListener {
  transformationLayout.startTransform()
}

// finish transformation when touching the myCardView.
myCardView.setOnClickListener {
  transformationLayout.finishTransform()
}</code>

8.2 效果图

更多应用形式请看Github: https://github.com/skydoves/TransformationLayout

No9. Donut

这个一个能够展现多个数据集的圆弧形控件,具备精密的颗粒管制、间隙性能、动画选项以及按比例缩放其值的性能。能够用于我的项目中的一些数据统计。

9.1 如何应用?

build.gradle 中增加如下依赖:

<code class="java">dependencies {
    implementation("app.futured.donut:library:$version")
}</code>

而后在布局文件中增加View:

<code class="xml"><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"/></code>

而后在代码中设置数据:

<code class="kotlin">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 = 5f
donut_view.submitData(listOf(dataset1, dataset2))</code>

9.2 效果图

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

No10. CurveGraphView

CurveGraphView 是一个带有炫酷动画统计图表库,除了性能杰出并具备许多款式选项之外,该库还反对单个立体内的多个线图。

多个折线图对于比拟不同股票,独特基金,加密货币等的价格十分有用。

10.1 如何应用?

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

<code class="java">dependencies {
    implementation 'com.github.swapnil1104:CurveGraphView:{current_lib_ver}'
}</code>

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

<code class="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" /></code>

而后在代码中增加各种配置项

<code class="java">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()
        ););</code>

3、 提供数据集

<code class="java">PointMap pointMap = new PointMap();
        pointMap.addPoint(0, 100);
        pointMap.addPoint(1, 500);
        pointMap.addPoint(5, 800);
        pointMap.addPoint(4, 600);</code>

10.2 效果图

| 成果1| 成果2|
| —— | —— |
|||
|||

更多具体应用形式请看Github: https://github.com/swapnil1104/CurveGraphView


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:2020年GitHub-上那些优秀Android开源库这里是Top10

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址