简体   繁体   English

设置3个搜索栏以更改RGB通道

[英]Set 3 seekbars to change RGB channels

I'm following this guy that wrote a code that change background color based on RGB channels assigned to 3 different seekbars, so R to one sk, G to another and B to another one. 我正在跟踪编写此代码的代码,该代码根据分配给3个不同搜索框的RGB通道来更改背景色,因此R代表一个sk,G代表另一个sk,B代表另一个。

The problem is that I can't get the code to work: 问题是我无法使代码正常工作:

private int seekR, seekG, seekB;    

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_color_changer);

    SeekBar sbR = (SeekBar) findViewById(R.id.RedSeekBar);
    SeekBar sbG = (SeekBar) findViewById(R.id.GreenSeekBar);
    SeekBar sbB = (SeekBar) findViewById(R.id.BlueSeekBar);

    mySeekBarChangeListener msbclR = new mySeekBarChangeListener();
    mySeekBarChangeListener msbclG = new mySeekBarChangeListener();
    mySeekBarChangeListener msbclB = new mySeekBarChangeListener();

    sbR.setonseekBarChangeListener(msbclR);
    sbG.setonseekBarChangeListener(msbclG);
    sbB.setonseekBarChangeListener(msbclB);

    msbclR.onprogressChanged(sbR, sbR.getProgress(), false);
    msbclG.onprogressChanged(sbG, sbG.getProgress(), false);
    msbclB.onprogressChanged(sbB, sbB.getProgress(), false);

}

This text give me an error almost everywhere, whatever, nothing seems to work. 这段文字几乎在所有地方给我一个错误,无论如何,似乎什么都没有。 I just want to know why.. Do I have to set something based on that mySeekBarChangeListener? 我只想知道为什么。.我是否必须基于mySeekBarChangeListener进行设置? Thanks in advance! 提前致谢!

It should work: 它应该工作:

private int seekR, seekG, seekB;    

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_color_changer);

    SeekBar sbR = (SeekBar) findViewById(R.id.RedSeekBar);
    SeekBar sbG = (SeekBar) findViewById(R.id.GreenSeekBar);
    SeekBar sbB = (SeekBar) findViewById(R.id.BlueSeekBar);

    sbR.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
        }

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            seekR = progress;

            doSomethingWithColor();
        }
    });

    sbG.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
        }

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            seekG = progress;

            doSomethingWithColor();
        }
    });

    sbB.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
        }

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            seekB = progress;

            doSomethingWithColor();
        }
    });

}

private void doSomethingWithColor() {
    int color = Color.rgb(seekR, seekG, seekB);
    // Do something with color
}

or more compact 或更紧凑

private int seekR, seekG, seekB;    

private SeekBar.OnSeekBarChangeListener onSeekBarChangeListener = new SeekBar.OnSeekBarChangeListener() {

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
    }

    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        switch (seekBar.getId()) {
        case R.id.RedSeekBar:
            seekR = progress;
            break;
        case R.id.GreenSeekBar:
            seekG = progress;
            break;
        case R.id.BlueSeekBar:
            seekB = progress;
            break;
        }

        doSomethingWithColor();
    }
};

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_color_changer);

    SeekBar sbR = (SeekBar) findViewById(R.id.RedSeekBar);
    SeekBar sbG = (SeekBar) findViewById(R.id.GreenSeekBar);
    SeekBar sbB = (SeekBar) findViewById(R.id.BlueSeekBar);

    sbR.setOnSeekBarChangeListener(onSeekBarChangeListener);
    sbG.setOnSeekBarChangeListener(onSeekBarChangeListener);
    sbB.setOnSeekBarChangeListener(onSeekBarChangeListener);

}

private void doSomethingWithColor() {
    int color = Color.rgb(seekR, seekG, seekB);
    // Do something with color
}

another one 另一个

private int seekR, seekG, seekB;    

public class MySeekBarChangeListener implements SeekBar.OnSeekBarChangeListener {

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
    }

    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        switch (seekBar.getId()) {
        case R.id.RedSeekBar:
            seekR = progress;
            break;
        case R.id.GreenSeekBar:
            seekG = progress;
            break;
        case R.id.BlueSeekBar:
            seekB = progress;
            break;
        }

        doSomethingWithColor();
    }
};

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_color_changer);

    SeekBar sbR = (SeekBar) findViewById(R.id.RedSeekBar);
    SeekBar sbG = (SeekBar) findViewById(R.id.GreenSeekBar);
    SeekBar sbB = (SeekBar) findViewById(R.id.BlueSeekBar);

    MySeekBarChangeListener msbclR = new MySeekBarChangeListener();
    MySeekBarChangeListener msbclG = new MySeekBarChangeListener();
    MySeekBarChangeListener msbclB = new MySeekBarChangeListener();

    sbR.setOnSeekBarChangeListener(msbclR);
    sbG.setOnSeekBarChangeListener(msbclG);
    sbB.setOnSeekBarChangeListener(msbclB);

}

private void doSomethingWithColor() {
    int color = Color.rgb(seekR, seekG, seekB);
    // Do something with color
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM