안드로이드 스튜디오

[안드로이드 스튜디오] 다른 페이지에서 가져온 값으로 SeekBar 만들기, 다중 SeekBar 총합, progress , 커스텀

yangcotton 2023. 8. 30. 14:22

 

전체 소스를 보고싶은경우

https://yangcottondev.tistory.com/36

 

[안드로이드 스튜디오] GCS 앱 만들기 - 전체소스

MainActivity.java package com.example.gcs; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.view.Layo

yangcottondev.tistory.com

 

 

1. 다른 페이지에서 가져온 값으로 SeekBar 만들기

 

먼저 다른 java 파일을 만든다.

나는 AddContent.java 를 만들었다.

 

String 형태의 배열을 만들고 값을 담았다.

String[] subSeekBarList1 = {"1점:눈뜨지 않음(none)", "2점:통증에 의해(to pain)", "3점:음성에 의해(to speech)", "4점:자발적으로(spontaneous)" };

 

그리고 메인자바파일에서 값을 가져와 표현해주었다.

String[] subSeekList1 = new AddContent().subSeekBarList1;

가져온 값을 동일한 자료형 String 배열로 담았다.

 

//  seekBar1
seek1.setMax(subSeekList1.length-1);
seek1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

        for (int i=0; i<subSeekList1.length; i++){
            if (progress == i){
                result1.setText(subSeekList1[i]);
            }
        }

        total1 = progress+1;
        total2 = seek2.getProgress()+1;
        total3 = seek3.getProgress()+1;
        totalState();
    }

seekbar 눈금 제한

- seekbar.setMax(4) 

이렇게하면 눈금이 5개가 된다

 

seek1.setMax(subSeekList1.length-1);  은 가져온 배열 값에서 (0부터 시작이니 -1) 해서 길이 만큼 SeekBar의 눈금을 제한했다.

 

그 후엔 progress 클릭마다 값이 변경되게 순서대로 값을 넣어준다.

 

2. progress를 활용한 다중 SeekBar 총합

 

seekbar는 첫번째 눈금은 progress가 0 이다. 

이것을 활용해 다중 Seekbar의 총합을 구할 수 있다.

 

seekbar 를 onProgressChanged 하여 값이 바뀔 때 마다 progress의 값을 가져온다.

예) seekbar 가 3 개인경우

total1 = progress ; 하면 현재 눈금의 값을 가져올수있고

total2 = seek2.getProgress(); 를 하면 다른 seekbar의 progress를 가져올 수 있다.

 

이렇게 눈금이 5점이면 total1 = progress +5;  자유롭게 조절 가능하다.

total = total1+total2+total3; 해서 총합을 구하면 된다.

 

private void totalState() {
        total = total1+total2+total3;
        sum.setText("총점 : " + total);
        if (total == 15){
            state.setText("정상 : alert");
        }else if ( 13 <= total&&total <= 14){
            state.setText("기면상태 : drowsy");
        }else if (8<= total&& total <= 12){
            state.setText("혼미 :stupor");
        }else if (4<= total&& total <= 7){
            state.setText("반혼수상태 :semicoma");
        }else{
            state.setText("혼수상태 : coma");
        }
    }

 

이렇게 총합을 활용하여 총합에 따른 상태를 변경해줄 수 있다.

 

total 값은 총합 점수 / state 는 상태를 나타내 주었다.