1

我想为我的 android 应用程序制作一个自定义视图,该应用程序具有更改其背景颜色“渐变”的功能。

像这样,但是可以使用代码左右移动中心手柄
这个

对此


问题是我想要一个类似于视图的函数:

changeBackgroundGradient(ratio, startColour, centreColour, endColour);

比率(具有 0 到 1 之间的值)由公式 leftValue/rightValue给出,确定渐变的形状

startColour、centerColour 和 endColour是渐变的颜色

我将如何实现这个功能?


问候

4

2 回答 2

0

您可以尝试以下功能。在您的活动文件中添加这些功能。

       private Drawable getGradientDrawable()
        {
            GradientDrawable gradient = new GradientDrawable();
            gradient.setGradientType(GradientDrawable.LINEAR_GRADIENT);
            gradient.setColors(new int[]{getRandomHSVColor(), getRandomHSVColor()});
            return gradient;
        }


        protected int getRandomHSVColor(){
            // Generate a random hue value between 0 to 360
            int hue = mRandom.nextInt(361);
            // We make the color depth full
            float saturation = 1.0f;
            // We make a full bright color
            float value = 1.0f;
            // We avoid color transparency
            int alpha = 255;
            // Finally, generate the color
            int color = Color.HSVToColor(alpha, new float[]{hue, saturation, value});
            // Return the color
            return color;
        }
        // Custom method to get a lighter color
        protected int getLighterColor(int color){
            float[] hsv = new float[3];
            Color.colorToHSV(color,hsv);
            hsv[2] = 0.2f + 0.8f * hsv[2];
            return Color.HSVToColor(hsv);
        }

        // Custom method to get reverse color
        protected int getReverseColor(int color){
            float[] hsv = new float[3];
            Color.RGBToHSV(
                    Color.red(color), // Red value
                    Color.green(color), // Green value
                    Color.blue(color), // Blue value
                    hsv
            );
            hsv[0] = (hsv[0] + 180) % 360;
            return Color.HSVToColor(hsv);
        }

比使用这个功能如下:

your_layout_name..setBackground(getGradientDrawable());

于 2017-06-05T12:58:51.707 回答
0

您可以尝试下面的代码,因为这对我来说可以动态更改我的工具栏颜色

private void setGradientColor(View header)
{
    String primaryColor = "#f4f3f2"; // any color code
    String primaryDarkColor = "#000000";

    GradientDrawable gd = new GradientDrawable (
    GradientDrawable.Orientation.BR_TL, // check below link for this you can change this value 
    new int[] { 
        Color.parseColor(primaryColor),
        Color.parseColor(primaryDarkColor)
        }
    );

    gd.setCornerRadius(1f);

    header.setBackground(gd);
}

更新

选中此项以获取更多选项以在视图中应用渐变颜色。

于 2017-06-05T12:57:21.760 回答