我发现很多在线资源都建议将一个 9-patch 文件作为 TextView 的背景,以便让 TextView 有圆角。
但我认为拉伸图像文件非常耗时。
如果我们在 TextView 上方创建一个 LinearLayout,并在左侧有一个小的左圆角可绘制 ImageView,在右侧有一个右圆角可绘制 ImageView。
然后放一个TextView。
然后使用类似的方法创建一个显示底部两个角的 LinearLayout。
这个解决方案会好一点吗?
我发现很多在线资源都建议将一个 9-patch 文件作为 TextView 的背景,以便让 TextView 有圆角。
但我认为拉伸图像文件非常耗时。
如果我们在 TextView 上方创建一个 LinearLayout,并在左侧有一个小的左圆角可绘制 ImageView,在右侧有一个右圆角可绘制 ImageView。
然后放一个TextView。
然后使用类似的方法创建一个显示底部两个角的 LinearLayout。
这个解决方案会好一点吗?
我主要使用 xml drawables 来创建我的Button
和TextView
背景,您只需添加<corners
带有属性的标签即可为您的背景添加圆角。如果你准备好使用这种方法,你可以做这样的事情
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient android:startColor="#BBBBBB" android:endColor="#CCCCCC" android:angle="270" android:type="linear"/>
<corners android:radius="5dp"/> <!-- gives your background rounded corners -->
<stroke android:width="1dp" android:color="#60EEEEEE"/> <!-- creates a border around the image -->
</shape>
用户界面没有固定的脚本,你可以设计不同我可以设计不同。
使用 9-patch 图像需要时间,因为您需要先创建它们,但它们确实很有帮助,但我更喜欢创建一个可绘制的形状并将其用作 textview 背景
像这样
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFFFFFFF"/>
<corners android:radius="10px"/>
<padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp" />
</shape>
并使用这个drawable作为我的textviews背景
只是为了咯咯笑,我将以下内容放在一起进行性能测试:
public class OverNineThousandPatchActivity extends Activity {
boolean flag = false;
public void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Button button = new Button(this);
button.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
setContentView(button);
long startTime = SystemClock.uptimeMillis();
long iterations = 100000;
for (long i = 0; i < iterations; i++) {
button.setBackgroundResource(flag ? R.drawable.panel_shadow : R.drawable.progress_overlay);
flag = !flag;
}
long total = SystemClock.uptimeMillis() - startTime;
Log.d("OverNineThousand", "Total elapsed: " + total + " Individual: " + (total / iterations));
}
}
创建一个视图,然后连续 100,000 次将背景设置为两个交替的九个补丁图像。尝试了五次不同的运行:
Total Time | Time Per setBackgroundResource()
|
5,177 ms | .05177 ms
4,793 ms | .04793 ms
4,851 ms | .04851 ms
4,957 ms | .04957 ms
4,957 ms | .04957 ms
大约 1/20 毫秒。
我不会担心的。;)
(*完全不是科学测试)