android dialog动画_2020年GitHub 上那些优秀Android开源库,这里是Top10!
前言
每过一段时间呀,我都会给大家带来一些从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.LiquidSwipeViewPagerandroid: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 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" ><!-- 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 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 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 效果图
更多详细使用信息请看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.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="@string/cart" />
</menu>
最后,代码中添加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 效果图
tab1tab2
详情信息请看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 Fragment
RateBottomSheet.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.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
><!-- other views --></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 效果图
更多使用方式请看Github: https://github.com/skydoves/TransformationLayout
No9. Donut
这个一个可以展示多个数据集的圆弧形控件,具有精细的颗粒控制、间隙功能、动画选项以及按比例缩放其值的功能。可以用于项目中的一些数据统计。
9.1 如何使用?
在build.gradle
中添加如下依赖:
dependencies {implementation("app.futured.donut:library:$version")
}
然后在布局文件中添加View:
<app.futured.donut.DonutProgressViewandroid: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 效果图
更多用法请看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.CurveGraphViewandroid: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
总结
以上就是本期的开源库推荐,别忘了添加到你的收藏夹哟!如果你觉得还不错,就三连支持一下吧!如果你还有一些有意思的,效果特别炫酷的库,也欢迎评论区留言推荐,感谢阅读,祝编码愉快!
以上就是本文的全部内容,如有错误,欢迎评论区指出。原创不易,如果你喜欢本文,欢迎点赞、转发、收藏三连一下。
android dialog动画_2020年GitHub 上那些优秀Android开源库,这里是Top10!相关推荐
- android思维导图github,2020年GitHub 上那些优秀Android开源库,这里是Top10!
前言 每过一段时间呀,我都会给大家带来一些从Github上收集的一些开源库,有的是炫酷动效,有的则是实用的工具和类库.以前没看过或者没有收藏的同学,建议先收藏,以下是链接: No1. LiquidSw ...
- 2020 年 GitHub 上那些优秀 Android 开源库,这里是 Top10! | 原力计划
作者 | 依然饭特稀西 责编 | 郭芮 出品 | CSDN博客 每过一段时间呀,我都会给大家带来一些从Github上收集的一些开源库,有的是炫酷动效,有的则是实用的工具和类库.2020年有哪些优秀的开 ...
- 2020年GitHub 上那些优秀Android开源库,这里是Top10!
目录 前言 No1. LiquidSwipe 1.1如何使用呢? 1.2 效果图 No2. Flourish 2.1 如何使用? 2.2 效果图 No3. AestheticDialogs 3.1 如 ...
- 如何在GitHub上发现优秀的开源项目
如何在GitHub上发现优秀的开源项目 如果作为一名程序员,你连GitHub都没有听过或者用过的话,那真是太遗憾了.GitHub的使用可是程序员在职业生涯中的一项必备技能啊,最近在网上搜了一下,发现有 ...
- github上的优秀android开源项目 大全 真是太他妈的全了!!!!!!
酷炫不需要理由 http://blog.csdn.net/a774057695/article/details/49889437 https://github.com/XinRan5312/andro ...
- github上的优秀android开源项目
酷炫不需要理由 Skip to content Pull requests Issues Gist 6,696 Trinea/android-open-project Code Issues4 Pul ...
- 2021年GitHub上那些优秀Android开源库总结,附大厂真题面经
前言 就要到"金九银十"面试跳槽季了,需要找工作的小伙伴们该要着手开始复习了.特此将我今年收录的一些腾讯.阿里巴巴.字节跳动等等一线互联网巨头的面试真题体系的归类.整理了一下,拿来 ...
- 2021年GitHub上那些优秀Android开源库总结,全套教学资料
开头 今天在浏览技术新闻的时候,发现腾讯就在今天开源了一套 Android 原生的 UI 框架.你们有没有发现,腾讯特别喜欢干这种事,哪一种事呢?喜欢开源 UI 框架,小程序也是这样的. 我看到这个新 ...
- 移动开发!2021年GitHub上那些优秀Android开源库总结,完整PDF
前言 最近看到很多人都在找工作, 而且很多人都感觉今年找工作比去年难很多, 竞争力也增加不少, 因此激发我整理这份资料, 希望能帮到正在找或者准备找工作的童鞋们. 首先我们能否获得一个面试机会, 那肯 ...
最新文章
- 机器学习算法如何调参?这里有一份神经网络学习速率设置指南
- 如何熟悉一个系统?(内含知识大图)
- 第三次学JAVA再学不好就吃翔(part53)--StringBuffer类的构造方法
- logincontroller.java_ucenter整合java项目,注册问题
- Pygame 使用Djkstra广度搜索寻找迷宫(相对)最短路径
- (一)Windows环境下汇编编程读书笔记
- java-多线程-一道阿里面试题分析
- mvc mysql linq_MVC3+Linq to sql 显示数据库中数据表的数据
- Spring不使用XML的注解开发
- 打造IE6的position:fixed整理篇
- centos7.5部署mysql cluster NDB总结
- Linux下cacti+syslog-ng+snare
- flask的pin码攻击——新版本下pin码的生成方式
- 树形管理工具-美美哒
- 微信公众号两种匹配模式(全匹配和半匹配)的区别。
- iOS 开源图形库 Core Plot 使用教程
- 12113个岗位争夺AI人才!中国成为AI岗位空缺最多的国家
- 【Oracle】第1天 简单查询
- 嵌入式linux--电子相册
- linux 中了挖矿病毒
热门文章
- DockOne微信分享(七十七):用Harbor实现容器镜像仓库的管理和运维
- C#笔记16 多线程和同步
- 修改telnet提示并非_iPhone修改微信提示音,iOS12可用,无需越狱详细教程
- stderr 用法 linux,linux – 如何在使用“tee”时使用管道将stderr写入文件?
- 用GVIM/VIM写Verilog——VIM配置分享
- Vivado入门使用指南之----多路分频器(逻辑分析仪IP的使用以及前后仿真及ip的基本使用)
- 多年前写的一个ASP.NET网站管理系统,到现在有些公司在用
- 云南大学软件测试,软件测试大赛云南省省赛在软件学院如期举行
- pfx导入后仍然打不开加密文件_天正CAD图纸加密和解密方法
- 2022-04-11 查询PostGIS和pgRouting的版本号