xml 可绘制还是以编程方式制作可绘制?

xml drawable or programmatically made drawable?

所以,我刚刚发现我们可以通过编程方式制作可绘制对象。这让我想知道哪一个在性能和尺寸方面更好。

这就是我以编程方式制作可绘制对象的方式:

val badge = GradientDrawable()
    badge.shape = GradientDrawable.RECTANGLE
    badge.setColor(Color.parseColor("#E46868"))
    badge.cornerRadius = 100f

这是 xml 版本:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="50dp" />
    <solid android:color="#E46868" />
</shape>

两者产生相同的结果。那么我应该使用哪一个?

首先,性能上没有太大区别

两种方法的优点如下:

xml

的优点
  1. 易于重用视图或从不同的布局中引入和写入。
  2. 视图与逻辑分离,便于管理长运行。
  3. 预览让我们预览它们代表的视图。

代码绘图的优势

  1. 视图可以根据逻辑状态灵活调整
  2. 无需创建单独的资源文件。