본문 바로가기

개발/Android

[손전등 어플 만들기 #2] SeekBar를 사용하여 깜빡임 조절하기(SeekBar api)

SeekBar를 사용하여 손전등 깜빡임을 제어해 보겠다.

 

SeekBar는 SeekBar.setOnSeekBarChangeListener()를 통해 하기의 3개의 이벤트에 대해 noti를 받을 수 있다.

 

1. onStartTrackingTouch()   :  최초 터치하여 드래그 시작할때 발생
2. onProgressChanged() : Progress 수치 변경 시 발생
3. onStopTrackingTouch() : Progress 변경을 멈출때 발생

 

SeekBar 레이아웃의 값으로는,
1. android:max  : SeekBar 최대치일때의 수치 설정

2. android:progress : 변경 단위 설정
2. android:thumb : SeekBar의 드래그 하는 아이콘 설정


SeekBar 예제를 통해 손전등 깜빡임 속도를 제어해 보면,

    private SeekBar mSeekBar;
    private static FlickerThread flickerThread = null;
    
     // flicker turn on off
        mSeekBar = (SeekBar) findViewById(R.id.idSeekBar);
        mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                Log.v(TAG, "Progress is " + progress);
                mProgress = progress;
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
            
           	speed = (17 - mProgress) * 20;
            
           	flickerThread = new FlickerThread();
        	flickerThread.setFlickerRun();
        	flickerThread.setFlickerSpeed(speed);
        	flickerThread.start();
                    
                    }
                }
            }
        });
    <SeekBar
        android:id="@+id/idSeekBar"
        android:layout_width="362dp"
        android:layout_height="103dp"
        android:layout_marginTop="80dp"
        android:max="11"
        android:progress="1"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.489"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

와 같이 Progress 변경을 감지하고 있다가, 마지막 손을 뗄 때 값으로 깜빡임 속도를 조절하도록 하였다.(손을 떼지 않고 드래그하는 동안 Progress 값은 계속 변경되므로 마지막 값 받았을 때 동작)

 

 

깜빡임 동작을 수행할 Thread는 하기와 같이 구현해 두었다.  

 

public class FlickerThread extends Thread{
    private boolean flickerRun = false;
    private int speed = 0;

    @Override
    public void run() {
        while(flickerRun){
            try {
                MainActivity.turnOn();
                Thread.sleep(speed);
                MainActivity.turnOff();
                Thread.sleep(speed);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

    }

    public void setFlickerRun(){
        this.flickerRun = true;
    }

    public void setFlickerStop(){
        this.flickerRun = false;
    }

    public void setFlickerSpeed(int speed){
        Log.v("FL", "Speed is set to " + speed);
        this.speed = speed;
    }

}

 

다음 포스트 : 

 

[손전등 어플 만들기 #3] 모스부호 변환하여 깜빡이기 (TreeMap, TextView 예제)

 

[손전등 어플 만들기 #3] 모스부호 변환하여 깜빡이기 (TreeMap, TextView 예제)

문자열을 입력받아 해당 문자열을 모스부호로 변경하고, 대시, 닷, 공백에 따라 깜빡임 속도를 조절해보았다. 우선 입력받을 문자를 키로, 해당되는 모스부호를 값으로 Map에 넣어준다. static { map

gozz123.tistory.com