Android:使用搜索栏更改图像的颜色

时间:2013-10-22 10:15:48

标签: android image android-imageview seekbar

我想在SeekBar OnProgress更改事件中更改图像的颜色?我在imageview和下面显示一个图像,有一个SeekBar来改变图像的颜色。

我使用以下方式使用搜索栏更改Imageview的颜色

private SeekBar.OnSeekBarChangeListener seekBarChangeListener = new SeekBar.OnSeekBarChangeListener() {
    @Override
    public void onProgressChanged(SeekBar seekBar, int progress,
            boolean fromUser) {
        updateOuterColor();
    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
    }

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
    }
};

updateOuterColor方法看起来像这样。

private void updateOuterColor() {
    seekR = seekBar1.getProgress();
    seekG = seekBar2.getProgress();
    seekB = seekBar3.getProgress();
    innerLips.setColorFilter(0xff000000 + seekR * 0x10000 + seekG * 0x100
            + seekB);
    eyeInnerOne.setColorFilter(0xff000000 + seekR * 0x10000 + seekG * 0x100
            + seekB);
    eyeInnerTwo.setColorFilter(0xff000000 + seekR * 0x10000 + seekG * 0x100
            + seekB);
}

现在的问题是,当我移动搜索栏时,此方法会覆盖我的imageview。这意味着我无法看到我的imageview而不是我能看到我的图像上的不同颜色。我只是想在我的图像上应用那种颜色,而不是在图像上。

我尝试了一些不同的代码和android属性,但无法弄明白。

如果有人有想法,请帮助我......

2 个答案:

答案 0 :(得分:1)

像这样更新你的onProgressChanged方法

public void onProgressChanged(SeekBar arg0, int progress, boolean arg2) {

                if(progress >= 25 && progress < 50)
                  // set color on image here
                else if(progress >= 50 && progress < 75)
                  // set color on image here
                else if(progress >= 75 && progress <= 100)
                  // set color on image here
                else 
                  // set color on image here
            }

另请参阅此answer

要更改图像颜色,请参阅此answer.

答案 1 :(得分:-2)

为此,您必须先获取图像的每个像素,然后编辑其每个像素