前言

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

No1. LiquidSwipe

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

1.1如何使用呢?

导入以下Gradle依赖项:

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

复制代码

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

xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/viewpager"

android:layout_width="match_parent"

android:layout_height="match_parent"/>

复制代码

1.2 效果图

效果1

效果2

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

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

N4. EasyReveal

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

4.1 如何使用?

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

dependencies {

...

implementation 'com.github.Chrisvin:EasyReveal:1.2'

}

复制代码

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

...

app:clipPathProvider="star" // possible values: circular, linear, random_line, star, sweep & wave

app:revealAnimationDuration="2000"

app:hideAnimationDuration="1500" >

复制代码

也可以在代码中添加:

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()

复制代码

4.2效果图

Emotion Dialog

Drake Dialog

Emoji Dialog

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和自定义属性

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文件:

android:id="@+id/tab_home"

android:icon="@drawable/home"

android:title="@string/home" />

android:id="@+id/tab_alarm"

android:icon="@drawable/alarm"

android:title="@string/alarm" />

android:id="@+id/tab_bread"

android:icon="@drawable/bread"

android:title="@string/bread" />

android:id="@+id/tab_cart"

android:icon="@drawable/cart"

android:title="@string/cart" />

复制代码

最后,代码中添加tab

// 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)

复制代码

6.2 效果图

tab1

tab2

No7. RateBottomSheet

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

7.1 如何使用呢?

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

dependencies {

implementation 'com.mikhaellopez:ratebottomsheet:1.1.0'

}

复制代码

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

Like this App?

Do you like using this application?

Yes I do

Not really

Rate this app

Would you mind taking a moment to rate it? It won\'t take more than a minute. Thanks for your support!

Rate it now

Remind me later

No, thanks

复制代码

代码中使用:

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)

复制代码

7.2 效果图

No8. TransformationLayout

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

8.1 如何使用?

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

dependencies {

implementation "com.github.skydoves:transformationlayout:1.0.4"

}

复制代码

然后,需要将我们需要添加过渡动画的View包裹到 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

>

复制代码

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

android:id="@+id/transformationLayout"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

app:transformation_duration="550"

app:transformation_targetView="@+id/myCardView">

android:id="@+id/fab"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:backgroundTint="@color/colorPrimary"

android:src="@drawable/ic_write"/>

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 效果图

No9. Donut

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

9.1 如何使用?

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

dependencies {

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

}

复制代码

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

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 = 5f

donut_view.submitData(listOf(dataset1, dataset2))

复制代码

9.2 效果图

No10. CurveGraphView

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

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

10.1 如何使用?

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

dependencies {

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

}

复制代码

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

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

总结

以上就是本期的开源库推荐,别忘了添加到你的收藏夹哟!如果你觉得还不错,就三连支持一下吧!如果你还有一些有意思的,效果特别炫酷的库,也欢迎评论区留言推荐,感谢阅读,祝编码愉快!每天都有干货文章持续更新,可以微信搜索「 技术最TOP 」第一时间阅读,回复【思维导图】【面试】【简历】有我准备一些Android进阶路线、面试指导和简历模板送给你

android思维导图github,2020年GitHub 上那些优秀Android开源库,这里是Top10!相关推荐

  1. 所有的编程语言知识,都包含在这100张思维导图里了丨GitHub 13.1k星

    萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 编程里能用到的所有知识,都在这里了. 这个号称东半球最全最酷的编程学习项目,不仅容纳了30万字的算法图解题典.100张各种编程语言的思维导图 ...

  2. github 思维导图开元软件_Windows上有哪些很棒思维导图的软件

    以下软件都是我自己从大学到工作一直在用的Windows软件,良心推荐,希望能给正在使用Windows系统的小伙伴的工作生活带来便捷. Processon 在线作图工具 processon官网 正如Pr ...

  3. SpringBoot图文教程「概念+案例 思维导图」「基础篇上」

    有天上飞的概念,就要有落地的实现 概念+代码实现是本文的特点,教程将涵盖完整的图文教程,代码案例 每个知识点配套自测面试题,学完技术自我测试 本文初学向,所以希望文中所有的代码案例都能敲一遍 大哥大姐 ...

  4. 考研政治和数学的思维导图(2020)

    图片分辨率很大,请务必查看原图. 政治: 数学一: 数学二(高等数学) 数学二(线性代数) 长风破浪会有时,直挂云帆济沧海,祝各位同好们考研成功!

  5. 【软件工具篇01】如何用思维导图构建自己的知识体系

    如何用思维导图构建自己的知识体系 思维导图是什么 百度百科上说 思维导图,英文是The Mind Map,又叫心智导图,是表达发散性思维的有效图形思维工具 ,它简单却又很有效,是一种实用性的思维工具 ...

  6. 测试用例支持思维导图编辑模式,MeterSphere开源持续测试平台v1.8.0发布丨Release Notes

    3月25日,MeterSphere一站式开源持续测试平台正式发布v1.8.0版本.v1.8.0版本是2021年农历春节后的第一个版本,经过近两个月的迭代,我们为大家带来了众多的功能更新及优化. 测试用 ...

  7. 二建施工管理思维导图_备考二建不丢分?二建思维导图全程指导,知识点记忆快、不分散...

    关键字:二建 一建 建造师考试 建造师证书 建筑 工程 建筑项目 法规 管理 市政 公路 目前,距离2020年二级建造师考试的时间越来越近,很多准备参加二建考试的朋友也开始紧张起来了. 二建考试分为公 ...

  8. 关于主机的思维导图_关于开展思维导图培训的通知

    关于开展思维导图培训的通知 思维导图(Mind map)是一种有效使用大脑的发散性思考方法,它即是工具和方法.也是一种思维模式,目前全世界有3.5亿人在学习和使用思维导图,被广泛应用在商业.教育.科学 ...

  9. 思维导图工具之Mindmeister

    以前从来没有去主动学习过来提高自己学习效率,以及去提高自己思考能力的方面的知识学习,前几天在京东是买 <OpenGL ES 3.0编程指南> 的时候,看到有一本叫 <别说你懂思维导图 ...

最新文章

  1. 继续- 管理百人研发团队的烦恼(下)
  2. u32、u16、u8 数据类型
  3. 【推荐】SAP关闭正在执行的缓慢的程序
  4. JavaScript 学习笔记-- ES6学习(一)介绍以及Babel的使用
  5. Jenkins 插件管理与系统设置
  6. code标签无法渲染html,【菜鸟笔记】记一次django无法正常在ie和edge浏览器渲染html页面-站长资讯中心...
  7. linux下的awk程序执行
  8. Spring MVC实现文件下载
  9. java中的显示初始化和特定初始化
  10. 直方图匹配(histogram matching):使两幅影像的色调保持一致
  11. 静态代码块、非静态代码块和构造方法
  12. Spark算子---实战应用
  13. Swift - 19 - 字典的初始化
  14. 电脑下载python3.5.2教程_Win10系统如何搭建Python 3.5.2开发环境
  15. java程序设计精编教程第3版电子版课后答案_Java程序设计精编教程-(第3版)-微课版...
  16. #博学谷it学习技术支持# Java学习心得
  17. Spoon工具使用(kettle进行实时同步数据)
  18. c#IntPtr简例
  19. qt中使用日志系统,自定义日志彩色输出,qt日志写入文件,自定义qt日志格式,同时提供Qt日志重定向功能(将qDebug信息输出到界面控件)
  20. 商汤内推:2023届(AI先锋/校园招聘)

热门文章

  1. 体外反搏做_体外反搏治疗的原理
  2. LeetCode-106-Construct Binary Tree from Inorder and Postorder Traversal
  3. Redis 怎么实现保存Django 查询集
  4. 制作initrd(2):update-initramfs和mkinitramfs脚本分析
  5. Maven - Dynamic Web Module 3.0 requires Java 1.6 or newer.
  6. 活动目录(Active Directory)安装
  7. 启用关闭数据库归档(ARCHIVELOG)模式
  8. 开源软件与商业软件的选择
  9. 在三层交换机上配置DHCP
  10. Mono 把 .NET 应用程序移植到 Linux