更新UI上的Seekbar进度



我在带有频镜的手电筒应用程序上工作,此时该应用程序正在使用,闪光灯正在使用按钮,并且频率在借助频率seekbar。

问题是,如果闪光灯打开并且我向右拖动,以开始并增加频率效应的效率,但是如果我关闭闪光灯并在某个点上拖动Seekbar,那么并打开闪光灯的频率效果,但仍将在其上进行操作,只是不会更新并增加频率,我必须关闭并再次手电筒以更改自由度或停止频闪效应(当然,当闪光灯不在移动seekbar(。

您可以帮助我,让我理解为什么它不会随着闪光灯而更新,plesase!我会很感激 !谢谢!

这是代码:

seekbar

SeekBar sbar = (SeekBar) findViewById(R.id.seekBar2);
    sbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            freq = progress;
        }
        public void onStartTrackingTouch(SeekBar seekBar) {

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

Stroborunner

private class StroboRunner implements Runnable{
    int freq;
    boolean stopRunning = false;
    volatile int delay = 100;
    volatile int delayoff = 200;
    @Override
    public void run() {
        Camera.Parameters paramsOn = camera.getParameters();
        Camera.Parameters paramsOff = parameter;
        paramsOn.setFlashMode(Parameters.FLASH_MODE_TORCH);
        paramsOff.setFlashMode(Parameters.FLASH_MODE_OFF);
        try{
            while(!stopRunning) {
                    MainActivity.this.camera.setParameters(paramsOn);
                    MainActivity.this.camera.startPreview();
                    Thread.sleep(delay - freq);
                    // We make the thread sleeping
                    MainActivity.this.camera.setParameters(paramsOff);
                    MainActivity.this.camera.startPreview();
                    Thread.sleep(delayoff-freq);
            }
        } catch (Exception e){
        }
    }
}

也用于手电筒的打开和关闭

 private boolean turnOnOff(boolean on) {
    if (on) {
        if (freq != 0) {
            SunetON();
            isFlashLightOn = true;
            sr = new StroboRunner();
            sr.freq = freq;
            t = new Thread(sr);
            t.start();
            return on;
        }
        else
            parameter.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
            SunetON();
    }
    if (!on) {
        if (t != null) {
            SunetOff();
            sr.stopRunning = true;
            isFlashLightOff = true;
            t = null;
            return on;
        }
        else
            parameter.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
        SunetOff();
    }
    camera.setParameters(parameter);
    camera.startPreview();
    return on;
}

onclicklistener

flashLight.setOnClickListener(new View.OnClickListener() {
         @Override
           public void onClick(View v) {
           isChecked = !isChecked;
           if (isChecked)
               flashLight.setImageResource(R.drawable.on);
           else
                flashLight.setImageResource(R.drawable.off);
                turnOnOff(isChecked);
          }
    });

编辑:没事,如果/其他格式化 - Turnonoff已经在外面

一个很好的起点是将Turnonoff(休次(移到您的其他语句之外。

flashLight.setOnClickListener(new View.OnClickListener() {
         @Override
           public void onClick(View v) {
           isChecked = !isChecked;
           if (isChecked)
               flashLight.setImageResource(R.drawable.on);
           else
                flashLight.setImageResource(R.drawable.off);
          }
          turnOnOff(isChecked);
    });

相关内容

  • 没有找到相关文章

最新更新