Programming/Android2011.01.21 00:49
안드로이드 뷰에서 색상을 지정하려면 drawable, resource, rgb 값이어야 합니다. 

일단 drawable, resource는 아닙니다. 그럼 int형인 rgb값을 지정해야 합니다.

int형 rgb값은 Color.rgb(int r, int g, int b) 로 얻을 수 있습니다. 

r,g,b 값을 따로따로 int형으로 줘야 합니다. 우리가 가지고 있는 16진수 문자열인데.... 

Integer.parseInt()로 변환도 안되고... 직접 만들어야 겠습니다!

import java.util.Hashtable;

import android.graphics.Color;

public class ColorString {
	private Hashtable hexTable = null;
	
	public ColorString(){
		hexTable = new Hashtable();
		hexTable.put('0', 0);
		hexTable.put('1', 1);
		hexTable.put('2', 2);
		hexTable.put('3', 3);
		hexTable.put('4', 4);
		hexTable.put('5', 5);
		hexTable.put('6', 6);
		hexTable.put('7', 7);
		hexTable.put('8', 8);
		hexTable.put('9', 9);
		hexTable.put('A', 10);
		hexTable.put('B', 11);
		hexTable.put('C', 12);
		hexTable.put('D', 13);
		hexTable.put('E', 14);
		hexTable.put('F', 15);
	}
	
	public int toRGB(String color){
		String strR = color.substring(1, 3);
		String strG = color.substring(3, 5);
		String strB = color.substring(5);
		
		return Color.rgb(getHexValue(strR), getHexValue(strG), getHexValue(strB));
	}
	
	private int getHexValue(String num){
		return hexTable.get(num.charAt(0)) * 15 + hexTable.get(num.charAt(1)); 
	}
}
hashtable을 안 써도 되긴 하지만.... 그리고 static이 더 편할 수도 있지만....

그냥 만들다 보니 이렇게 됐네요 ㅋ
신고
Posted by 초프(초보 프로그래머)
Programming/Android2011.01.14 13:23
설정 화면을 만들때 preference를 이용하면 xml로 쉽게 만들 수 있습니다.
그러나 기본으로 제공되고 있는 종류가 너무 적습니다. 

CheckBoxPreference
EditTextPreference
ListPreference
RingtonePreference
이 4가지가 기본적으로 제공되고 있습니다.

이번에 작업을 하면서 ListPreference 로 색상을 선택하게 하였는데 색상이 보이지 않아서 사용자들의 불만이 급증할 것으로 생각 되었습니다. 그래서 Custom ListPreference를 만들기로 하였습니다.

ListPreferece는 DialogPreference를 상속 받아서 Dialog안에 리스트를 출력해 주는 Preference입니다.


이런 ListPreference를 만들려고 합니다. 이 Dialog에는 총 4개의 부분으로 나눠져 있습니다.

 topPanel  

 contentPanel  

 customPanel  
 buttonPanel  


topPanel은 title 부분입니다. Custom Title로 변경 가능 합니다.
contentPanel은 DialogPreference에서 생성된 부분입니다. 사용자가 직접 Custom View로 변경하는 것은 힘들어 보입니다.
customPanel은 Custom View를 구현할 수 있는 부분입니다.
buttonPanel은 버튼이 나오는 부분으로 이부분은 negative, positive로 쉽게 변경이 가능합니다.

contentPanel을 바꾸고 싶은 것이 목표입니다. 그래서 검색해 봤습니다. 구글 레퍼런스 사이트에서 찾아 냈습니다.


오른쪽 아래에 보시면 (if a custom content view is required) ....... custom content 가 필요하면 이걸 사용하라고 합니다. 친절히 이렇게 써줬다니... 감격했습니다.


신고
Posted by 초프(초보 프로그래머)