안드로이드 스튜디오

[Android] 안드로이드 NumberPicker 사용하기

민트왕자 2022. 9. 13. 19:54


1. NumberPicker 개요


NumberPicker는 터치를 이용해 원하는 숫자를 쉽게 선택할 수 있도록 도와주는 도구입니다. 사용자의 나이, 체중 등 숫자를 선택해야 하는 화면에 활용할 수 있습니다.

2. NumberPicker 구현(XML)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
	android:orientation="vertical">

    <NumberPicker 
		android:id="@+id/npker"
		android:layout_width="match_parent"
		android:layout_height="wrap_content"/>	
		
</LinearLayout>


3. NumberPicker 구현(Java)

public class MainActivity extends Activity 
{

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
		
		NumberPicker npker = findViewById(R.id.npker);
		
		npker.setMaxValue(100); //최대값
		npker.setMinValue(0); //최소값
		npker.setValue(50);// 초기값
		
		/* 만약 특정 문자열을 사용하고 싶으면 
		npker.setDisplayedValues(string[]); */
		
		npker.setOnLongPressUpdateInterval(100); //길게 눌렀을 때 몇 초부터 반응?
		npker.setWrapSelectorWheel(true); //최대값 or 최소값에서 멈출지 넘어갈지
		npker.setOnScrollListener(new NumberPicker.OnScrollListener(){

				@Override
				public void onScrollStateChange(NumberPicker picker, int state)
				{
					switch (state) {
						case SCROLL_STATE_FLING :
							Toast.makeText(getApplicationContext(), "플링", Toast.LENGTH_SHORT).show();
							break;
						case SCROLL_STATE_TOUCH_SCROLL:
							Toast.makeText(getApplicationContext(), "스크롤중", Toast.LENGTH_SHORT).show();
							break;
						case SCROLL_STATE_IDLE:
							
							break;
					}
					
				}
			});
		
		npker.setOnValueChangedListener(new NumberPicker.OnValueChangeListener(){

				@Override
				public void onValueChange(NumberPicker picker, int oldVal, int newVal)
				{
					Toast.makeText(getApplicationContext(), "" + oldVal +"에서"+ newVal +"(으)로", Toast.LENGTH_SHORT).show();
				}
			});
    }
}
  • setMaxValue(int): 최댓값
  • setMinValue(int): 최솟값
  • setValue(int): 현재값(초기값)
  • setOnLongPressUpdateInterval(long): 꾹 눌렀을 때 언제부터 반응할지 시간차를 설정합니다. long타입으로 1/1000 초입니다.
  • setDisplayedValues(string[]): 원하는 값의 집합을 설정합니다. 10, 20, 30처럼 연속된 정수가 아닐 때 활용할 수 있습니다.
  • setWrapSelectorWheel(boolean): 최대값이나 최솟값에 도달했을 때 끝나지 않고 반대로 최대값이나 최솟값으로 넘어갈지를 설정합니니다. true이면 넘어갑니다.
  • setOnScrollListener:

스크롤러의 상태에 따라 호출됩니다.

  1. SCROLL_STATE_FLING: 튕길 때
  2. SCROLL_STATE_TOUCH_SCROLL: 스크롤 되고 있으며 아직 손가락을 떼지 않은 상태
  3. SCROLL_STATE_IDLE: 멈춰있을 때
  • setOnValueChangedListener:

값이 변할 때 호출됩니다.

4. 실제 구현 화면


개발자 문서:
https://developer.android.com/reference/android/widget/NumberPicker

NumberPicker  |  Android Developers

android.net.wifi.hotspot2.omadm

developer.android.com