我正在参加「兔了个兔」创意投稿大赛,详情请看:「兔了个兔」创意投稿大赛
前言
2023年到来,今年过年分外早,没几天就要迎新年了,由于是兔年,所以我创立了一个Rabbit为主题的App,里面以兔子为主题而增加各种相关内容,现在仅有十条2023兔年祝福语,后边会增加其他功能,下面,咱们看看这个App的样子。
正篇
UI设计
首先,这个App由于这两天才创立的,所以仅仅UI上看起来和兔子相关,内容并不是很充实。主要是找了一张兔子的图片做App的logo,以及找了几张动态图作为app内部的装修UI,如下:
勉强符合此次“兔了个兔”的主题。
内容设计
内部我是利用LottieAnimation去展示动图(让UI繁忙的安卓Lottie动画烘托库(一) – () & 让UI繁忙的安卓Lottie动画烘托库(二) – ()),然后运用之前掘友引荐的刘强东写的列表神器BRV(liangjingkanji/BRV: [文档详细] Android上最好的RecyclerView框架, 比 BRVAH 更简略强大 (github.com)),琢磨了半响最终仍是没有成功运用库作者引荐的DataBinding方法,我运用RecyclerView中运用BRV去加载10条祝福语。
这是运用作者引荐方法后运转不起来的截图: 看文档上的解决方法顺次测验仍是没成功,所以仍是采用ViewBinding的方法了。
代码与效果展示
部分XML布局如下,我尽管启用了DataBinding但现在还不会用,所以我也同时启用了ViewBinding:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
...
...
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/rabbit_easter_egg_slider"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_gravity="center"
app:lottie_autoPlay="true"
app:lottie_fileName="lottie/rabbit_easter_egg_slider.json"
app:lottie_loop="true"
app:lottie_repeatMode="restart" />
<androidx.core.widget.NestedScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
tools:ignore="SpeakableTextPresentCheck">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
...
...
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/rabbit_2023"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_gravity="center"
app:lottie_autoPlay="true"
app:lottie_fileName="lottie/rabbit_2023.json"
app:lottie_loop="true"
app:lottie_repeatMode="restart" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/vMainList"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</androidx.recyclerview.widget.RecyclerView>
</LinearLayout>
</layout>
我的activity中部分代码如下,很笨拙地运用列表的方法存了10条祝福语,后边还会优化一下并加上复制按钮:
...
...
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private var text = arrayOf("兔年!...",
...
....,
....,
....")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
window.attributes.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN
binding.vMainList.linear().setup {
addType<SimpleModel>(R.layout.item_simple)
setAnimation(AnimationType.SLIDE_BOTTOM)
onBind {
val binding = getBinding<ItemSimpleBinding>() // 运用ViewBinding/DataBinding都能够运用本方法
binding.tvName.text = getModel<SimpleModel>().name
}
}.models = getData()
}
private fun getData(): MutableList<Any> {
// 在Model中也能够绑定数据
return mutableListOf<Any>().apply {
for (i in 1..10) {
val simpleModel = SimpleModel(
"$i、${text[i-1]}"
, i)
add(simpleModel)
// add(SimpleModel())
}
}
}
}
运转后现在只能够滑动查看列表:
项目代码
总之就是这个App现在还十分简陋,但是现已放到了GitHub上了,后续会逐渐增加优化一些功能和代码。
项目地址:ObliviateOnline/RabbitApp: 2023 rabbit app (github.com)
总结
原本是想做一个搜索类的App,成果发现做着做着就偏离了方向,但是原本就是为了新年添个彩头,又是自己弄着玩的,加之看起来仍是像那么回事,所以就这么直接发出来献丑了,希望大家喜爱!