首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >onFocus聚光灯对安卓系统的影响

onFocus聚光灯对安卓系统的影响
EN

Stack Overflow用户
提问于 2021-08-08 16:18:44
回答 1查看 114关注 0票数 1

我正试图达到聚光灯的效果,每当一个项目在一个回收的观点是集中的。我在下面附上一张图片来说明我的意思。

我已经实现了这样的东西,使用背景绘图如下所示。

这是可绘制的代码

bg_glow.xml

代码语言:javascript
运行
复制
<?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>

我已经创建了一个自定义视图,它可以在图像聚焦时添加此绘图。这是密码。

代码语言:javascript
运行
复制
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
    }
}

现在,这里有几个问题:

  1. ,径向梯度,看起来不像我想要达到的,

  1. ,它不是动态的。我想根据图像中的主导颜色改变阴影的颜色。
EN

回答 1

Stack Overflow用户

发布于 2021-08-09 15:08:03

您可以根据聚焦项的图像中的主导颜色来更改渐变颜色。

如果可以以编程方式创建可绘制的绘图,则还可以更改阴影的颜色。

可以在android中以编程方式创建可绘制的图形。见此:

代码语言:javascript
运行
复制
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;
}

现在,您可以在自定义颜色中使用此方法&它将提供渐变绘图(而不是位图)。因此,如果您想使用渐变,那么您的目标图像视图背景必须是一个渐变绘图(就像现在一样)。只需调用该方法:

代码语言:javascript
运行
复制
makeRadialGradient(Color.parseColor("#D3D3D3"), Color.parseColor("#FFFFFF"));

现在,如果您想要从主导颜色生成一个渐变,那么您可以简单地传递方法中的颜色代码,它会给出您想要的渐变。

为了获得最完美的结果,您必须更改值。

根据您的喜好更改梯度半径、枢轴点和类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68702607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档