在onDraw中设置渐变作为背景 - android

时间:2013-11-15 08:44:36

标签: android

我有一个扩展View的课程。我想将渐变设置为background color

    @Override
    public void onDraw(Canvas canvas)
    {

        GradientDrawable gradient1 = new GradientDrawable(Orientation.BOTTOM_TOP, new int[]  
                {Color.parseColor("#B1FCA9"),Color.parseColor("#29C413")});
        gradient1.setShape(GradientDrawable.RECTANGLE);
        gradient1.setCornerRadius(10.f);


        GradientDrawable gradient2 = new GradientDrawable(Orientation.BOTTOM_TOP, new int[]  
                {Color.parseColor("#29C413"),Color.parseColor("#B1FCA9")});
        gradient2.setShape(GradientDrawable.RECTANGLE);
        gradient2.setCornerRadius(10.f);


        if(!Const.currentLevel.isBonusLevel())
            canvas.drawBitmap(Const.backgroundBitmap, 1, 1, null);
        else if(this.bonusPicFrame == 0)
            gradient1.draw(canvas);
        else
            gradient2.draw(canvas);
}

gradient1应出现在我的屏幕上,但屏幕为白色。

有什么问题?

2 个答案:

答案 0 :(得分:1)

您始终可以使用drawable这样的资源文件

background.xml是资源文件的名称

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient android:startColor="#B1FCA9" android:endColor="#29C413" android:angle="270" android:type="linear"/>
    <corners radius="10dp"/>
</shape>

并使用setBackgroundResource(R.drawable.background);

将其设置为您的视图

答案 1 :(得分:0)

你必须将setBounds设置为gradient1和gradient2