<실행화면>

첫 화면은 기본값 50에서 시작. 시크바를 드래그하면 프로그레스바와 텍스트뷰가 같이 바뀐다.

 

1. 배치하기

SeekBar, ProgressBar, TextView를 배치한다.

시크바와 프로그레스바의 max 값, progress 값을 설정해준다. (max=100, progress=50으로 설정함)

텍스트뷰는 테두리를 넣고 싶어서 drawable에 셰이프 드로어블 파일을 만든 뒤 background로 적용시켰다.

 

2. MainActivity.java 작성하기

<MainActivity.java>

package com.example.doitmission_06;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 프로그레스바
        ProgressBar progressBar = findViewById(R.id.progressBar);
        progressBar.setIndeterminate(false);
        progressBar.setProgress(50);

        // 텍스트뷰
        TextView textView = findViewById(R.id.textView);

        // 시크바
        SeekBar seekBar = findViewById(R.id.seekBar);
        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
                textView.setText(""+seekBar.getProgress());
                progressBar.setProgress(seekBar.getProgress());
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
                textView.setText(""+seekBar.getProgress());
                progressBar.setProgress(seekBar.getProgress());
            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                textView.setText(""+seekBar.getProgress());
                progressBar.setProgress(seekBar.getProgress());
            }
        });
    }
}

 

 

아래 코드를 입력하면 자동으로 onProgressChanged(), onStartTrackingTouch(), onStopTrackingTouch()가 재정의된다.

seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){}

onProgressChanged() : 드래그 중에

onStartTrackingTouch() : 최초로 탭할 때

onStopTrackingTouch() : 드래그를 멈추고 탭을 땔 때

 

위의 세가지 상황 모두 동일한 코드를 입력해주었다.

textView.setText(""+seekBar.getProgress());
progressBar.setProgress(seekBar.getProgress());

 

 

[Java][Android] SeekBar 시크바 기본 사용법

시크바란? 시크바는 사용자가 범위 내에서 값을 선택할 수 있도록 도와주는 막대 형태의 뷰입니다. 음량/밝기 조절, 이미지 필터 적용, 동영상 재생 등 다양한 곳에 활용됩니다. 시크바 공식문서

stickode.tistory.com

 

 

<문제 상황>

앱이 강제종료. 이번에 발생한 에러 메시지는 android.content.res.Resources$NotFoundException

setText에 String형이 들어가야하는데 int형을 넣었을 때 이러한 에러가 발생한다고 한다.

 

[안드로이드 스튜디오] android.content.res.Resources$NotFoundException: String resource ID #0x1 애러 해결하기.

#안드로이드스튜디오 #NotFoundException #androidcontentresResources$NotFoundException: String...

blog.naver.com

 

처음에 아래와 같이 입력해서 에러가 발생했던 것.

textView.setText(seekBar.getProgress());

아래와 같이 ""+로 String형으로 만들어주었더니 해결됨.

textView.setText(""+seekBar.getProgress());

 

근데 ""+ 쓰는 거 말고도.. toString() 쓰면 될 줄 알았는데 안됨.  String.valueOf()을 쓰면 되는듯?

 

실행이 잘 되었음. 휴

드디어 3장 끝~