写点什么

2020 年 GitHub 上那些优秀 Android 开源库,这里是 Top10!(1),android 设计模式 pdf

作者:嘟嘟侠客
  • 2021 年 11 月 27 日
  • 本文字数:5881 字

    阅读完需:约 19 分钟

setFlourishOrientation(FlourishOrientation.TOP_RIGHT)


setIsShowedOnStart(true)


setFlourishListener?{??}


}

2.2 效果图


更多详细使用请看 Github:github.com/skydoves/Fl…

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


《Android 学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享


///?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 效果如下



更多详情使用方法请看 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 效果图


更多详细使用信息请看 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文件:


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


详情信息请看 Github: github.com/Droppers/An…

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


<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



</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: github.com/skydoves/Tr…

No9. Donut

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

9.1 如何使用?

build.gradle 中添加如下依赖:


dependencies?{


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

最后

最后为了帮助大家深刻理解 Android 相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的 24 套腾讯、字节跳动、阿里、百度 2019-2021BAT 面试真题解析,我把大厂面试中常被问到的技术点整理成了视频和 PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节。


还有 高级架构技术进阶脑图 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。


Android 基础知识点


Java 基础知识点


Android 源码相关分析


常见的一些原理性问题



希望大家在今年一切顺利,进到自己想进的公司,共勉!


本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

用户头像

嘟嘟侠客

关注

还未添加个人签名 2021.03.19 加入

还未添加个人简介

评论

发布
暂无评论
2020年GitHub 上那些优秀Android开源库,这里是Top10!(1),android设计模式pdf