我正试图达到聚光灯的效果,每当一个项目在一个回收的观点是集中的。我在下面附上一张图片来说明我的意思。
我已经实现了这样的东西,使用背景绘图如下所示。
这是可绘制的代码
bg_glow.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<gradient
android:startColor="#80e8eaed"
android:gradientRadius="50dp"
android:endColor="#00000000"
android:type="radial" />
</shape>
</item>
</layer-list>
我已经创建了一个自定义视图,它可以在图像聚焦时添加此绘图。这是密码。
override fun onFocusChanged(gainFocus: Boolean, direction: Int, previouslyFocusedRect: Rect?) {
super.onFocusChanged(gainFocus, direction, previouslyFocusedRect)
if (gainFocus) {
categorySpotlight.background = ContextCompat.getDrawable(context, R.drawable.bg_glow)
ivappCategory.strokeWidth = 2
} else {
categorySpotlight.background = ContextCompat.getDrawable(context, R.drawable.transparent)
ivappCategory.strokeWidth = 0
}
}
现在,这里有几个问题:
,
,
发布于 2021-08-09 15:08:03
您可以根据聚焦项的图像中的主导颜色来更改渐变颜色。
如果可以以编程方式创建可绘制的绘图,则还可以更改阴影的颜色。
可以在android中以编程方式创建可绘制的图形。见此:
public static GradientDrawable makeRadialGradient(int startColor, int endColor) {
GradientDrawable gd = new GradientDrawable(
GradientDrawable.Orientation.TOP_BOTTOM, new int[]{startColor, endColor});
gd.setGradientType(GradientDrawable.RADIAL_GRADIENT);
gd.setGradientRadius(500.0f);
gd.setGradientCenter(0.5f, 0.5f);
return gd;
}
现在,您可以在自定义颜色中使用此方法&它将提供渐变绘图(而不是位图)。因此,如果您想使用渐变,那么您的目标图像视图背景必须是一个渐变绘图(就像现在一样)。只需调用该方法:
makeRadialGradient(Color.parseColor("#D3D3D3"), Color.parseColor("#FFFFFF"));
现在,如果您想要从主导颜色生成一个渐变,那么您可以简单地传递方法中的颜色代码,它会给出您想要的渐变。
为了获得最完美的结果,您必须更改值。
根据您的喜好更改梯度半径、枢轴点和类型。
https://stackoverflow.com/questions/68702607
复制相似问题