월급외 수익/프로그래밍

안드로이드 앱 키보드 입력 대체하기 (SeekBar)

디마드 2020. 9. 25. 08:03

 

SeekBar를 이용해 키보드 입력을 대체해보자

안드로이드 앱을 개발하다보면 텍스트나 숫자를 사용자에게 받아 처리해야하는 경우가 있다. 공간의 제약이 있는 모바일 화면에 키보드 입력창까지 뜨게 되면 여간 불편한게 한두 가지가 아니다.

또한 입력 문자에 대한 Validation과 이벤트를 처리해야 하니 더 손이 많이 간다. 숫자만 입력받는 경우라면 SeekBar를 이용해 보자. 

 

 

 

안드로이드 앱 SeekBar란?

대략 이런 느낌이다. 

키보드 창을 띄우지 않고 손가락으로 바를 누른후 좌우로 이동하면 값을 조절할 수 있다. 

 

UI 디자인을 살펴보자

 

SeekBar는 Widgets에 있다. 

 

Palette에서 끌어오거나 XML을 직접 작성할 수 있다. 처음에는 Design화면에서 수정하는 게 편한 거 같은데, 자꾸 하다보면 XML에서 직접 편집하게 된다.

인텔리센스 기능이 좋아 빠른 속도로 UI디자인을 완성할 수 있다. Design 화면은 XML코딩 결과를 확인하는 용도로 주로 사용한다. (컨트롤간 관계, 위치, 색상, 폰트 확인)

<SeekBar
android:id="@+id/sbHeight"
style="@android:style/Widget.Holo.SeekBar"
android:layout_width="0dp"
android:layout_height="30dp"
android:max="210"                 -- 최대 입력값
android:min="90"                   -- 최소 입력값
android:progress
="150"           -- 프로그래스바 초기 위치다. min/max 중간으로 한다. 
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/ivHRightArrow"
app:layout_constraintStart_toEndOf="@+id/ivHLeftArrow"
app:layout_constraintTop_toBottomOf="@+id/tvHeight"
app:layout_constraintVertical_bias="0.2" />

min, max , progress 속성을 적절하게 입력한다. 다음은 코트린을 이용해 이벤트를 처리하자. 

사용자 입력을 처리해 보자. (이벤트 처리)

코틀린 언어로 작성한 코드다. 사용자가 프로그래스바로 이동할때마다 이벤트를 발생시켜 몸무게를 입력받는다. 단 몇줄로 간단하게 처리할 있다.

주의할점은 프로그래스바 값이 String이다. 연산이 필요하다면 적절한 타입으로 변환해야 에러가 발생하지 않는다. 

sbWeight.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener{
override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
mWeightVal = progress.toString()
tvWeight.text = "Weight : " + mWeightVal + "kg"
}

override fun onStartTrackingTouch(seekBar: SeekBar?) {
}


override fun onStopTrackingTouch(seekBar: SeekBar?) {

}

})

 

관련글