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:github.com/gabriel-The…
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” >
</com.jem.easyreveal.layouts.EasyRevealLinearLayout>
也可以在代码中添加:
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 |
---|---|---|
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
更多详细使用信息请看Github: github.com/Chrisvin/Ea…
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:github.com/JorgeCastil…
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
文件:
最后,代码中添加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 |
---|---|
![]() | ![]() |
详情信息请看Github: github.com/Droppers/An…
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 reallyRate 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 效果图
更多详情请看Github:github.com/lopspower/R…
No8. TransformationLayout
这是一个用于Activity或者Fragment 以及View切换的过渡动画库,效果非常炫,它使用Material Design的运动系统过渡模式来创建变形动画。该库提供了用于绑定目标视图,设置淡入淡出和路径运动方向以及许多其他自定义选项的属性。
8.1 如何使用?
在build.gradle
中添加如下依赖:
dependencies {
implementation “com.github.skydoves:transformationlayout:1.0.4”
}
然后,需要将我们需要添加过渡动画的View包裹到 TransformationLayout
:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
资源分享
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
2020年虽然路途坎坷,都在说Android要没落,但是,不要慌,做自己的计划,学自己的习,竞争无处不在,每个行业都是如此。相信自己,没有做不到的,只有想不到的。祝大家2021年万事大吉。
存中…(img-XI1Xy3d5-1711718799393)]
资源分享
[外链图片转存中…(img-abwCbWEZ-1711718799394)]
[外链图片转存中…(img-ztmVUmWn-1711718799394)]
[外链图片转存中…(img-vsDqTp5J-1711718799395)]
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
2020年虽然路途坎坷,都在说Android要没落,但是,不要慌,做自己的计划,学自己的习,竞争无处不在,每个行业都是如此。相信自己,没有做不到的,只有想不到的。祝大家2021年万事大吉。