当前位置: 首页 > 知识库问答 >
问题:

setColorFilter只影响src还是src和background?

文华美
2023-03-14

令人困惑的是,“background”也经常被用来简单地表示“Android:src使用的照片的‘背景颜色’”。

说我有。

<ImageView
  android:src="@drawable/white_foreground_thing"
  android:background="@drawable/some_bg_thing"
  />

我将更改SetColorFilter。

android:background="@drawable/some_bg_thing"

但是背景只是一个普通的按钮背景,实际上带有一些透明度等等。

所以我想不影响背景;我只会为不同的按钮改变“大点的颜色”。

请注意:(一)由于setColorFilter的微妙之处,从测试中很难确定;(二)我在doco中真的找不到这一点(对你们这些Android老兄来说可能很明显!)

(注意底部的彩色圆点)

但在这里,我只想知道地狱setColorFilter是影响.background还是只影响.src

共有1个答案

傅元龙
2023-03-14

下面是我如何覆盖几个图像并改变其中一个图像的颜色。
您可以尝试将@drawable/head_xxh设置为imgHair的背景(因此,去掉一个ImageView),看看它是否像预期的那样工作。

结果被引用到两个独立的、重叠的ImageViews中。

出于乐趣和好奇心,我尝试自己实现您的想法。
在准备了以下两个xxhdpi图像(480 dpi,因此可以很好地缩放它们--然后我将它们放在/res/drawable-XXHDPI文件夹中)

当然,我必须仔细调整图像的大小,以适应和重叠的完美。

我做了这个布局,其中头发图像与头部重叠:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#f000"
    >
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:src="@drawable/head_xxh"
    />
    <ImageView
        android:id="@+id/imgHair"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:src="@drawable/hair_wht_xxh"
    />
    <Button
        android:id="@+id/btnColor"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:text="Random hair color"
        android:onClick="clickHandler"
    />
</RelativeLayout>

下面是我使用的代码

package com.dergolem.abc_2;

import java.util.Random;

import android.app.Activity;
import android.graphics.Color;
import android.graphics.PorterDuff;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.ImageView;

public class Generic
extends Activity
{
    Random rnd = new Random();

    Button btn = null;
    ImageView img = null;

    @Override
    public void onCreate(final Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);

        setContentView(R.layout.hair);

        img = (ImageView) findViewById(R.id.imgHair);
        btn = (Button) findViewById(R.id.btnColor);
    }

    public void clickHandler(final View v)
    {
        colorize(rnd.nextInt(7));
    }

    private void colorize(final int num)
    {
        int clr = Color.WHITE;
        switch (num)
        {
            case 0:
            {
                clr = Color.RED;
                break;
            }
            case 1:
            {
                clr = Color.GREEN;
                break;
            }
            case 2:
            {
                clr = Color.BLUE;
                break;
            }
            case 3:
            {
                clr = Color.BLACK;
                break;
            }
            case 4:
            {
                clr = Color.CYAN;
                break;
            }
            case 5:
            {
                clr = Color.YELLOW;
                break;
            }
            case 6:
            {
                clr = Color.parseColor("#ff888800");
                break;
            }
        }

        img.setColorFilter(clr, PorterDuff.Mode.MULTIPLY);
    }
}
    null
 类似资料:
  • 问题内容: 本教程演示了指令的使用,而不是: 他们要求: 用普通的旧src属性替换ng-src指令。 使用Firebug或Chrome的Web检查器之类的工具,或检查Web服务器的访问日志,确认该应用确实确实对 /app/%7B%7Bphone.imageUrl%7D%7D (或 / app / {{phone .imageUrl}} )。 我这样做了,它给了我正确的结果: 有什么原因吗? 问题答

  • 我想用开始我的项目 使用时: 当我使用时,它工作得很好 那么,和之间有什么区别

  • 创建一个流,用于从文件系统读取 Vinyl 对象。 注:BOMs(字节顺序标记)在 UTF-8 中没有任何作用,除非使用 removeBOM 选项禁用,否则 src() 将从读取的 UTF-8 文件中删除BOMs。 用法 const { src, dest } = require('gulp'); function copy() { return src('input/*.js')

  • 问题内容: 我有多个音频文件,要根据用户选择流式传输。我怎么做?到目前为止,这是我所拥有的,而且似乎没有用。 *更新:进行了一些更改,现在声称它不是功能。谁能告诉我为什么呢?本规范已更新以反映更改。 JavaScript: HTML: 当我单击它们时,我将要播放其他音频文件。 问题答案: 试试这个片段

  • slapt-src 是实用的查询,检索和构建 slackbuilds 的工具,跟 slapt-get 一样简单易用。

  • 本文向大家介绍Android ImageView Src 和Background 区别,包括了Android ImageView Src 和Background 区别的使用技巧和注意事项,需要的朋友参考一下 之前使用Glide的时候被ImageView的图片设置弄混了(很低级的问题,确是经常犯的问题),所以就去看了一下ImageView,补补基础。 首先ImageView有两个显示图片的属性,分别