我想为我的Android应用程序制作一个自定义视图,它具有更改背景颜色的功能"渐变"。
问题是,我想要一个类似于视图中的函数:
changeBackgroundGradient(ratio, startColour, centreColour, endColour);
比率(值介于0到1之间)由公式给出 leftValue / rightValue 确定渐变的形状
startColour,centreColour和endColour 是渐变组成的颜色
我将如何制作此功能?
此致
答案 0 :(得分: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);
}
<强>更新强>
检查this以获取更多选项以在视图中应用渐变色。
答案 1 :(得分: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()); 强>