【发布时间】:2018-12-22 23:22:35
【问题描述】:
我们在某些布局中需要圆角,我们想出了两种方法。尽管这两种方法都运行良好,但结果略有不同,我想在这里获得一些关于不同行为的见解。
第一种方法是使用XML。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="#e1d6a6" />
<corners android:radius="9dp" />
</shape>
这行得通。然而,XML 方法的问题在于颜色和半径是固定的,我们需要创建重复的可绘制对象来更改任何参数。所以我们提出了 Java 版本,它非常灵活,工作起来就像一个魅力,虽然结果略有不同。下面是java版本
void setRoundedCorners(View view, int color, float radius) {
GradientDrawable drawable = new GradientDrawable();
drawable.setColor(color);
drawable.setCornerRadius(radius);
view.setBackground(drawable);
}
虽然这两种方法都可以正常工作,但两者都需要不同的半径参数值才能获得相同的效果。例如,如果我在 XML 版本中使用 android:radius="9dp",我需要在 Java 中使用 setCornerRadius(30.0f) 才能获得几乎相同的效果。
所以我想了解使用 Java 方法的任何缺点,以及 xml 中的 9dp 如何转换为不同设备的 java 中的 setCornerRadius 参数。有什么见解吗?
谢谢
【问题讨论】:
标签: android xml rounded-corners