Please Enable JavaScript!
Gon[ Enable JavaScript ]

안드로이드(Android) SeekBar 로 배경색 변경하기

안드로이드 개발
반응형

안드로이드(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 를 움직이며 배경색을

바꾼것입니다.

 

반응형
Posted by 녹두장군1
,