在布局中绘制LinearGradient

时间:2013-09-12 08:46:25

标签: android android-linearlayout

我尝试在布局中绘制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 个答案:

答案 0 :(得分:1)

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

之后,您只需将布局的背景设置为刚刚创建的可绘制文件即可。

如果您有任何问题,请询问;)

修改 将您的代码更改为:

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

 backGroundColorView.setBackgroundDrawable(gd);

答案 1 :(得分:1)

答案 2 :(得分: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

答案 3 :(得分: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);