在学习Android的时候,最初要写大量的xml,动画xml,颜色的xml,国际语言的xml,drawable 绘制的xml,布局的layout的xml等等。后面有了compose的UI 可以逐步混合使用,或者干脆用flutter等其他跨平台写写UI。不过有时候项目特殊情况并不是一定能用跨平台的框架,也不一定能compose 的UI 混合+xml一起的做法。不过其实没有关系。每次都可能重复地操作xml。下面我发现一个比较好方式处理这个问题。第一种获取开源的项目或者已有的项目先复制过来,第二种也是借助一些Ai工具来帮助我们生成这些常用的xml文件。那么参考谁?如参考Ant design,T design 等的常见的UI组件。之所以参考这些,其实方便我们写提示词。接下来使用的工具可以任意的AI工具。如我们使用的Trae 的IDE 给我们生成相应的xml。填写对应提示词,让IDE给我们创建常用的组件用到色彩和style。这个时候,你需要围绕Ant Design 几个设计。如主色,辅助色,中性色,背景色,边框色,透明度等常见的处理。这些主色是APP 主色基调,辅助色就是开发拼界面会用得大量的色彩,文本,就会有不同层次颜色,这些颜色就可以在上述的UI 框架获取。同理,在处理按钮,文本,背景界面 边框等还是离不开drawable里面大量的xml。这个情况就要整理好常见的xml方式,该填充的时候填充,该描边的时候描边,应对各种UI布局情况。style的处理方式,也是类似,AI能够帮助我们生成一部分常用对组件。如对话框,弹窗的小界面,交互的按钮,文本,checkbox等等会常见组件。只要使用上述工具可以帮助我们减轻每次新创建一个界面的时候,总是缺少对应xml文件处理。如下 <stylename="CustomDialogStyle"parent="Theme.AppCompat.Dialog"> <itemname="android:windowBackground">@android:color/transparent</item> <itemname="android:windowNoTitle">true</item> <itemname="android:windowIsFloating">true</item> <itemname="android:windowContentOverlay">@null</item> <itemname="android:windowAnimationStyle">@android:style/Animation.Dialog</item> <itemname="android:backgroundDimEnabled">true</item> <itemname="android:backgroundDimAmount">0.5</item> </style>
在日常练习过程,需要大量登录注册和弹窗,使用第三方开源组件可以减少一些拼界面压力。不过在开始的时候,总是会出现各种库,找啊找啊。这一点和ios 开发完全不一样。ios 的UI组件都会提供足够精美的UI。Android 更像是毛坯房一样。常用的组件选择库,签名库,Http 库,banner,glide,camaraX,相册的选择,图像处理,路由,主题还有二维码等会用到的库。这些库都是在书写会接触到,用到的时候需要按需要引入使用一下。 //组件库 implementation ("com.contrarywind:Android-PickerView:4.1.9") //签名库 implementation("com.github.gcacace:signature-pad:1.3.1") // Retrofit implementation("com.squareup.retrofit2:retrofit:2.9.0") implementation("com.squareup.retrofit2:converter-gson:2.9.0") // OkHttp implementation("com.squareup.okhttp3:okhttp:4.12.0") implementation("com.squareup.okhttp3:logging-interceptor:4.12.0") // 协程支持 implementation("com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2") // banner 库 + 图片加载 implementation("com.youth.banner:banner:2.1.0") implementation("com.github.bumptech.glide:glide:4.13.0")
以上是每次开局都会用到,鉴于手上的机器设备太老。android 一些新的特性无办法在真机测试。目前只有android 8 古老的测试机器。谷歌每年都会发布一个android 版本,如今即将到来android 17,想想离android 8已经差了很多版本了。Api 变化对于接触了又接触的时候,多少会感觉到Android 每一代都在变化。从xml 到compose 的两者出现,再到google play 强制兼容多屏幕的机器适配,删除竖屏的设置。这个真的每一个时刻都在删减API,多少让人觉得谷歌赶工的嫌疑。
当然随着版本的迭代,兼容和适配也成了很多麻烦的事情androidX 至少可以解决一部分兼容性问题。但是里面代码更多是防御性补丁防止高版本和低版本能尽可能覆盖多种机型使用。这一点 ios 升级的版本会相对更加好一些。就是不知道是否习惯写oc呢?
小结
以上就是最近写android 一些感受,借助一部分工具减轻书写的困扰。但是对于拼界面,无论写xml还是compose,个人觉得会一些UI色彩搭配和布局设计对拼界面还是有一些帮助。哪怕AI或者一些大厂内部有通过figma 还原UI的法宝。对于我们无办法接触大厂的工具,偶尔通过截图让大模型帮助我们简单拼一下界面也是可以。
有一点就是,大量这些界面会出现很难维护的情况。这一点实践过程会遇到。对于只是练习和测试,辅助拼拼界面也是可以的。而用的框架,有时候真的时刻都在变。
好了,今晚就记录到这里了。