statusbarbackground - android透明度渐变




如何在android中制作渐变背景 (6)

我想要创建图片中的渐变背景。 但它不能因为中心而展开,以覆盖底部和顶部。

我如何制作如下图片的背景? 或者我怎样才能使小ceterColor不扩散? 你有什么想法吗?

这是我想要的背景。

这是我做的背景。

这是上面背景按钮的xml代码

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
    <gradient 
        android:startColor="#6586F0"
        android:centerColor="#D6D6D6"
        android:endColor="#4B6CD6"
        android:angle="90"/>
    <corners 
        android:radius="0dp"/>


</shape>

为什么不创建图像或9修补程序映像并使用它?

下面的链接有一个很好的指导如何做到这一点:

http://android.amberfog.com/?p=247

如果您坚持使用Shape,请尝试下面的网站(选择左下角的Android): http://angrytools.com/gradient/ : http://angrytools.com/gradient/

我已经创建了一个类似的渐变(不完全),您可以通过此链接获得: http://angrytools.com/gradient/?0_6586f0,54_4B6CD6,2_D6D6D6&0_100,100_100&l_269 : http://angrytools.com/gradient/?0_6586f0,54_4B6CD6,2_D6D6D6&0_100,100_100&l_269



或者,您可以在代码中使用您在PSD中可能会想到的任何内容:

    private void FillCustomGradient(View v) {
        final View view = v;
        Drawable[] layers = new Drawable[1];

        ShapeDrawable.ShaderFactory sf = new ShapeDrawable.ShaderFactory() {
            @Override
            public Shader resize(int width, int height) {
                LinearGradient lg = new LinearGradient(
                        0,
                        0,
                        0,
                        view.getHeight(),
                        new int[] {
                                 getResources().getColor(R.color.color1), // please input your color from resource for color-4
                                 getResources().getColor(R.color.color2),
                                 getResources().getColor(R.color.color3),
                                 getResources().getColor(R.color.color4)},
                        new float[] { 0, 0.49f, 0.50f, 1 },
                        Shader.TileMode.CLAMP);
                return lg;
            }
        };
        PaintDrawable p = new PaintDrawable();
        p.setShape(new RectShape());
        p.setShaderFactory(sf);
        p.setCornerRadii(new float[] { 5, 5, 5, 5, 0, 0, 0, 0 });
        layers[0] = (Drawable) p;

        LayerDrawable composite = new LayerDrawable(layers);
        view.setBackgroundDrawable(composite);
    }

视觉例子有助于解决这类问题。

样板

为了创建渐变,您可以在res / drawable中创建一个xml文件。 我打电话给我的my_gradient_drawable.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient
        android:type="linear"
        android:angle="0"
        android:startColor="#f6ee19"
        android:endColor="#115ede" />
</shape>

您将其设置为某个视图的背景。 例如:

<View
    android:layout_width="200dp"
    android:layout_height="100dp"
    android:background="@drawable/my_gradient_drawable"/>

类型=“线性”

设置linear类型的angle 。 它必须是45度的倍数。

<gradient
    android:type="linear"
    android:angle="0"
    android:startColor="#f6ee19"
    android:endColor="#115ede" />

类型=“径向”

设置radial类型的gradientRadius 。 使用%p表示它是父级的最小维度的百分比。

<gradient
    android:type="radial"
    android:gradientRadius="10%p"
    android:startColor="#f6ee19"
    android:endColor="#115ede" />

类型=“扫”

我不知道为什么有人会使用扫描,但我将其包括在内以便完整。 我无法弄清楚如何改变角度,所以我只包括一个图像。

<gradient
    android:type="sweep"
    android:startColor="#f6ee19"
    android:endColor="#115ede" />

中央

您也可以更改扫描或径向类型的中心。 这些值是宽度和高度的分数。 您也可以使用%p表示法。

android:centerX="0.2"
android:centerY="0.7"


首先,您需要按如下所示创建一个gradient.xml文件

<shape>
    <gradient android:angle="270" android:endColor="#181818" android:startColor="#616161" />

    <stroke android:width="1dp" android:color="#343434" />
</shape>

然后你需要在layout的背景中提到上面的渐变。如下所示

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/gradient"
    >   
</LinearLayout>

//Color.parseColor() method allow us to convert
// a hexadecimal color string to an integer value (int color)
int[] colors = {Color.parseColor("#008000"),Color.parseColor("#ADFF2F")};

//create a new gradient color
GradientDrawable gd = new GradientDrawable(
GradientDrawable.Orientation.TOP_BOTTOM, colors);

gd.setCornerRadius(0f);
//apply the button background to newly created drawable gradient
btn.setBackground(gd);

从这里引用https://android--code.blogspot.in/2015/01/android-button-gradient-color.html





shape