为了获得圆角,将TextView背景设置为drawable是否耗时?

时间:2013-07-01 05:27:16

标签: android android-drawable

我发现许多在线资源建议将9补丁文件作为TextView的背景,以便让TextView具有圆角。

但我认为拉伸图像文件非常耗时。

如果我们在TextView上方创建一个LinearLayout,并在左侧有一个小的左圆角可绘制的ImageView,右边的右圆角可绘制的ImageView。

然后放一个TextView。

然后使用类似的方法创建一个显示底部两个角的LinearLayout。

这个解决方案会好一点吗?

3 个答案:

答案 0 :(得分:1)

我主要使用xml drawable来创建我的ButtonTextView背景,只需添加带有属性的<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>

答案 1 :(得分:1)

用户界面没有固定的脚本,您可能会以不同的方式设计它。我可能会有不同的设计。

使用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背景

答案 2 :(得分:1)

只是为了咯咯笑,我把以下内容放在一起进行性能测试:

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分钟。

我不担心。 ;)

(*完全不是科学测试)