1

我尝试在布局中绘制 LinearGradient,但渐变不适合我的视图。

我只看到一种颜色,而不是渐变。

我认为这是因为我没有给出正确的视图维度

这是我的代码:

backGroundColorView = (LinearLayout) findViewById(R.id.backGroundColorView);

int[] tempColors = data.getAppBackgroundColor();

        LinearGradient test = new LinearGradient(0.f, 0.f, backGroundColorView.getWidth(), backGroundColorView.getHeight(), tempColors, null, TileMode.CLAMP);

        ShapeDrawable shape = new ShapeDrawable(new RectShape());
        shape.getPaint().setShader(test);

        backGroundColorView.setBackgroundDrawable(shape);

感谢您的帮助

4

4 回答 4

1

只需使用 GradientDrawable 作为背景http://developer.android.com/reference/android/graphics/drawable/GradientDrawable.html

于 2013-09-12T08:55:22.833 回答
1

您可以使用站点创建所需的渐变,然后在其中添加一个文件res/drawable并将代码放入其中。

之后,您所要做的就是将布局的背景设置为您刚刚创建的可绘制文件。

如果你有问题,就问吧 ;)

编辑: 将您的代码更改为:

 GradientDrawable gd = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM,tempColors);
 gd.setCornerRadius(0f);

 backGroundColorView.setBackgroundDrawable(gd);
于 2013-09-12T08:51:27.047 回答
1

尝试这个

backGroundColorView = (LinearLayout) findViewById(R.id.backGroundColorView);
int[] tempColors = data.getAppBackgroundColor();

GradientDrawable gd = new GradientDrawable(
        GradientDrawable.Orientation.TOP_BOTTOM,tempColors);
gd.setCornerRadius(0f);

backGroundColorView .setBackgroundDrawable(gd);

代替

backGroundColorView = (LinearLayout) findViewById(R.id.backGroundColorView);

int[] tempColors = data.getAppBackgroundColor();

        LinearGradient test = new LinearGradient(0.f, 0.f, backGroundColorView.getWidth(), backGroundColorView.getHeight(), tempColors, null, TileMode.CLAMP);

        ShapeDrawable shape = new ShapeDrawable(new RectShape());
        shape.getPaint().setShader(test);

        backGroundColorView.setBackgroundDrawable(shape);

GradientDrawable

于 2013-09-12T09:02:05.417 回答
0

你可以像这样创建线性渐变:

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<gradient 
android:type="linear"
android:centerX="50%" 
android:startColor="#FF003333" 
android:centerColor="#FF05C1FF" 
android:endColor="#FF003333" 
android:angle="270"/>
<!-- <gradient
    android:centerColor="#FF05C1FF"
    android:centerX="50%"
    android:centerY="50%"
    android:endColor="#FF003333"
    android:gradientRadius="50"
    android:startColor="#FF003333"
    android:type="radial" /> -->

<corners
    android:bottomLeftRadius="15dp"
    android:bottomRightRadius="15dp"
    android:topLeftRadius="15dp"
    android:topRightRadius="15dp" />

</shape>

并将其用作线性布局的背景。我希望它能解决你的问题。看到我在我的帖子中使用了这个:customToast

你也可以使用它:

GradientDrawable  grad = new GradientDrawable(Orientation.LEFT_RIGHT,
        new int[]{0xffffffff, 0xffff00ff, 0xffffff00, 
        0xff0000ff, 0xf0f0f0f0, 0xfefefefe});
grad.setBounds(0, 0, 320, 480);
于 2013-09-12T08:49:25.460 回答