모바일 개발을 잘하고 싶은 안드로이드 앱개발자

안드로이드 스튜디오 시크바 사용하기 본문

카테고리 없음

안드로이드 스튜디오 시크바 사용하기

백수를 탈출하자 2023. 3. 23. 17:31

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <SeekBar
        android:id="@+id/seekBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:max="100" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:text="변경된 값"
        android:textSize="30sp" />
</LinearLayout>

최상위 레이아웃인 constraintlayout을 LinearLayout으로 변경 후에 orientation 속성 값을 vertical로 설정합니다.최상위 레이아웃constraintlayou에 있던 텍스트뷰를 삭제히거 필레트에서 Widgets 폴더 안에 SeekBard를 화면에 끌어다 놓습니다

시크바 아래쪽에 텍스트뷰를 하나 추가하고 '변경된 값'이라고 글자를 수정합니다.텍스트뷰의 layout_margin 속성 중 top 속성 값을 20dp로 입력하고 textSize 속성 값을 30dp로 입력합니다.

 

MainActivity.java

package org.techtown.seek;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.WindowManager;
import android.widget.SeekBar;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    TextView textView;

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

        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) {
                setBrightness(i);
                textView.setText("변경된 값:"+i);
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });
    }
    private void setBrightness(int value){
        if (value < 10){
            value = 10;
        } else if (value > 100) {
            value = 100;
        }
        WindowManager.LayoutParams params = getWindow().getAttributes();
        params.screenBrightness = (float) value / 100;
        getWindow().setAttributes(params);
    }
}

getWindow 메서드를 사용해 참조한 객체의 윈도우 관련 정보를 getAttributes로 확인하거나 새로 설정할 수 있습니다.

화면 밝기를 설정하는 속성은 screenBrightness 속성이며 getAttributes 메서드로 참조한 속성 정보에 새로운 값을 지정한 후  getAttributes 메서드를 사용해서 설정합니다 시크바에서 설정한 리스너는 시크바의 값이 바뀔 떄마다 onProgressChanged메서드가 호출되고 메서드 안에서 화면 밝기를 지정하는 setBrightness 메서드를 호출한 후 텍스트뷰에 현재 밝기 수준을 텍스트로 표시해줌니다

시크바로 사용하여 사용한 값을 조정