안드로이드(Android) SeekBar 로 배경색 변경하기 |
개발환경 : window 7 64bit, Eclipse Kepler, Android 4.2.2 |
SeekBar 는 Progressbar 의 확장입니다. 이번 아티클에서는 배경색을 어떻게 변경하는지? SeekBar 를 어떻게 사용하는지에 대한 내용입니다. |
아래는 메인소스입니다. 3개의 SeekBar를 생성하며
바를 드래그해서 아래위로 옮길 때 이벤트를
발생시켜 배경색의 값을 변경합니다.
SeekBar 의 setOnSeekBarChangeListener 함수에
OnSeekBarChangeListener 셋팅합니다.
redSeekBar.setOnSeekBarChangeListener(seekBarChangeListener); greenSeekBar.setOnSeekBarChangeListener(seekBarChangeListener); blueSeekBar.setOnSeekBarChangeListener(seekBarChangeListener);
위에서 셋팅한 OnSeekBarChangeListener 객체를
실행하기 위한 함수 입니다. 바가 움직일 때 이벤트가
발생하면 아래 함수 onProgressChanged 함수를 실행합니다.
private SeekBar.OnSeekBarChangeListener seekBarChangeListener = new SeekBar.OnSeekBarChangeListener() { public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { updateBackground(); } public void onStartTrackingTouch(SeekBar seekBar) { } public void onStopTrackingTouch(SeekBar seekBar) { } };
onProgressChanged 함수가 실행되면 배경색을 변경하기
위한 함수 updateBackground() 실행되는데 내용은
다음과 같습니다.
private void updateBackground() { seekR = redSeekBar.getProgress(); seekG = greenSeekBar.getProgress(); seekB = blueSeekBar.getProgress(); mScreen.setBackgroundColor(0xff000000 + seekR * 0x10000 + seekG * 0x100 + seekB); }
바탕화면의 색을 변경하기 위해서 전체 레이아웃인
mScreen 의 setBackgroundColor() 함수에 color 값을
셋팅합니다.
mScreen.setBackgroundColor(0xff000000 + seekR * 0x10000 + seekG * 0x100 + seekB);
셋팅전에 인수로 들어가는 3개의 SeekBar 값을 가져와서
넣게 됩니다. 아래는 메인 Activity 의 전체 소스입니다.
import android.app.Activity; import android.os.Bundle; import android.widget.LinearLayout; import android.widget.SeekBar; public class SampleActivity2 extends Activity { private int seekR, seekG, seekB; private SeekBar redSeekBar, greenSeekBar, blueSeekBar; private LinearLayout mScreen; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sample_activity2); mScreen = (LinearLayout) findViewById(R.id.myScreen); redSeekBar = (SeekBar) findViewById(R.id.mySeekingBar_R); greenSeekBar = (SeekBar) findViewById(R.id.mySeekingBar_G); blueSeekBar = (SeekBar) findViewById(R.id.mySeekingBar_B); updateBackground(); redSeekBar.setOnSeekBarChangeListener(seekBarChangeListener); greenSeekBar.setOnSeekBarChangeListener(seekBarChangeListener); blueSeekBar.setOnSeekBarChangeListener(seekBarChangeListener); } private SeekBar.OnSeekBarChangeListener seekBarChangeListener = new SeekBar.OnSeekBarChangeListener() { public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { updateBackground(); } public void onStartTrackingTouch(SeekBar seekBar) { } public void onStopTrackingTouch(SeekBar seekBar) { } }; private void updateBackground() { seekR = redSeekBar.getProgress(); seekG = greenSeekBar.getProgress(); seekB = blueSeekBar.getProgress(); mScreen.setBackgroundColor(0xff000000 + seekR * 0x10000 + seekG * 0x100 + seekB); } }
메인 Activity 레이아웃 activity_sample_activity2.xml 입니다.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/myScreen"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello"/> <SeekBar android:id="@+id/mySeekingBar_R" android:layout_width="fill_parent" android:layout_height="wrap_content" android:max="255" android:progress="0"/> <SeekBar android:id="@+id/mySeekingBar_G" android:layout_width="fill_parent" android:layout_height="wrap_content" android:max="255" android:progress="0"/> <SeekBar android:id="@+id/mySeekingBar_B" android:layout_width="fill_parent" android:layout_height="wrap_content" android:max="255" android:progress="0"/> </LinearLayout>
결과화면은 3개의 SeekBar 를 움직이며 배경색을
바꾼것입니다.
'안드로이드 개발' 카테고리의 다른 글
안드로이드(Android) google map API v2 에서 지도에 마커설정하기 (1) | 2014.10.22 |
---|---|
안드로이드(Android) HorizontalScrollView 이용해 이미지 갤러리 만들기 – 2부 (0) | 2014.10.22 |
안드로이드(Android) HorizontalScrollView 이용해 이미지 갤러리 만들기 – 1부 (0) | 2014.10.22 |
안드로이드(Android) XML 을 사용하여 이미지 버튼 배경 로딩하기 (0) | 2014.10.13 |
안드로이드(Android) android.util.DisplayMetrics 이용해 해상도를 측정하는 코드 (0) | 2014.09.27 |
안드로이드(Android) 미리 정의된 테마를 AndroidManifest.xml 적용하기 (0) | 2014.09.25 |
안드로이드(Android) 비트맵의 픽셀값을 읽어와 화면에 그리기 (11) | 2014.09.14 |
안드로이드(Android) 옵션메뉴셋팅과 다이얼로그 띄우기 (3) | 2014.09.12 |