Programming/Android2011.08.16 10:30
안드로이드 애뮬레이터 실행시 발생하는 오류입니다.
경로 중간에 빈공간이나 한글등이 들어가면 생기는 오류입니다.
다시 설치하는 방법이 있으나 링크로 해결하는 방법이 있습니다.

C:>MKLINK /j C:\Android "C:\Program Files\Android\android-sdk\"


참고 사이트
http://www.androidpub.com/1644488
Posted by 초프(초보 프로그래머)
NHN인턴을 지원하면서 작성하게 된 흐름도와 순서도



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


오호~ 아이폰 버전까지 이어 가자~!
Posted by 초프(초보 프로그래머)
Project/중앙인2011.05.05 13:06
중앙인 홈페이지가 개편되면서 파싱을 해오지 못해서 모든 기능들이 동작하지 못하였습니다.

복구 작업을 진행하여 기존의 모든 기능들을 다시 사용할 수 있게 되었습니다.

사용자 분들이 주의해야할 한 가지는 통합 아이디로 로그인하셔야 한다는 것입니다.
 
Posted by 초프(초보 프로그래머)
개발 시작하고 11개월쯤 되니 추천 어플리케이션에 올랐군요.... ㅜ.ㅜ

너무 기쁩니다. 엉엉

 

Posted by 초프(초보 프로그래머)
Programming/Android2011.02.04 16:15
코드로 TextView의 글자 크기를 변경하였습니다.
테스트는 HVGA 에뮬레이터와 안드로원 이었습니다.
글자 크기를 +1, -1 적용하는데 문제 없었습니다.
하지만 오류 보고 계속 왔죠. 글자 크기 조정이 제대로 안된다고..
특히 -1은 작아지는 것이 아니라 더 커진다고..
확인해 보니 WVGA에서는 계산한데로 제대로 적용되지 않고 있었습니다.
어떻게 해보아도 제대로 되지 않았는데 찾아 보니 setTextSize 는 2개의 메소드가 있더군요.
기본적으로 쓰는 것을 말고 단위를 선택하는 메소드가 있습니다.


TypedValue 값을 이용하여 단위를 정할 수 있습니다.


TypedValue.COMPLEX_UNIT_PX 가 pixel 단위를 나타냅니다.

그러므로 우리가 코드에서 크기를 변경할때 pixel 단위를 사용한다면 이것을 사용하여야죠.

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);

Posted by 초프(초보 프로그래머)
Project2011.01.25 14:15
많은 버그로 인해서 다운그레이드 작업을 진행하였습니다.

1.0.0 버전에 있던 설정을 가져와 적용하였습니다.

1.1.0 에 맞게 수정되었습니다.

글을 오래 누르면 나오는 메뉴와 메뉴 버튼을 누르면 나오는 메뉴를 통합하였습니다.

인코딩을 선택할때 예전보다 더 많은 글이 나오도록 하였습니다.






Posted by 초프(초보 프로그래머)
Programming/Android2011.01.25 12:50
안드로원을 테스트폰으로 사용하고 있습니다.

안드로원이 2.2로 업데이트된 이후로 smoothScrollTo 가 적용되지 않습니다.

이유는 알 수 없으나 검색을 통해 해결 방법을 찾아 냈습니다.

	scrollView.post(new Runnable(){
				public void run() {
	            	scrollView.scrollTo(x, y);
				}
            });

Posted by 초프(초보 프로그래머)
Programming/Android2011.01.21 02:04
onPrepareDialogBuilder 는 Dialog 가 보여지기 전에 실행되는 메소드 입니다.

DialogPreference 에 존재하고 있으며 AlertDialog.Builder 를 만들고 설정 후에 onPrepareDialogBuilder로 넘겨 줍니다.

이 받은 Builder는 아마도... 그냥 객체만 생성된 것 같습니다. 메소드를 비워두면 아무것도 안 뜨는 것을 알 수 있습니다.



	

package android.test;

import android.app.AlertDialog;
import android.content.Context;
import android.preference.ListPreference;
import android.util.AttributeSet;

public class ColorListPreference extends ListPreference {

	public ColorListPreference(Context context, AttributeSet attrs) {
		super(context, attrs);
	}
	
	public void onPrepareDialogBuilder(AlertDialog.Builder builder){
		
	}
}



넘겨 받은 Builder 에는 XML에서 지정한 제목만 들어갔네요. 아... 그런데 버튼이.. 원래 이런 스타일이 아니었죠!

버튼이 하나였던것 같은데.... 이걸 직접 수정할 수 있지만...

부모의 메소드를 실행해 보겠습니다.

	public void onPrepareDialogBuilder(AlertDialog.Builder builder){
		super.onPrepareDialogBuilder(builder);
	}

어라 이게 원했던 스타일이죠! 아... 그런데 리스트에 있는 값들이 맘에 안드네요....

원래 부터 저걸 바꾸기로 한거였는데... 이제 다시 원점이군요.

상위 메소드를 실행해서 저런 스타일을 가지는 builder가 만들어 졌습니다. 그럼 이제 그 builder 로 리스트의 값만 바꿔주면 끝입니다!!!



	
		
	
	
	

import java.util.ArrayList;
import java.util.List;

import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.preference.ListPreference;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

public class ColorListPreference extends ListPreference {

	public ColorListPreference(Context context, AttributeSet attrs) {
		super(context, attrs);
	}
	
	public void onPrepareDialogBuilder(AlertDialog.Builder builder){
		super.onPrepareDialogBuilder(builder);
		builder.setAdapter(new ColorListAdapter(getContext(),R.layout.color_list_preference_row,getEntriesList()), new OnClickListener(){
			public void onClick(DialogInterface dialog, int which) {
				Log.i("yViewer","click item : "+which);
				setValue(getEntryValues()[which].toString());
				dialog.dismiss();
			}
		});
	}
	
	private ArrayList getEntriesList(){
		ArrayList list = new ArrayList();
		CharSequence[] array = getEntries();
		
		for(CharSequence name : array){
			list.add(name.toString());
		}
		
		return list;
	}
	
	private class ColorListAdapter extends ArrayAdapter{
		private ColorString rgb;
		
		public ColorListAdapter(Context context, int resource, List objects) {
			super(context, resource, objects);
			rgb = new ColorString();
		}
		
		public View getView(int position, View view, ViewGroup parent){
			LayoutInflater vi = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
			String name = (String) ColorListPreference.this.getEntries()[position];
			String value = (String) ColorListPreference.this.getEntryValues()[position];
			
			view = vi.inflate(R.layout.color_list_preference_row, null);
			
			View colorView = view.findViewById(R.id.color);
			TextView nameView = (TextView) view.findViewById(R.id.name);
			Log.i("yViewer",value);
			colorView.setBackgroundColor(rgb.toRGB(value));
			nameView.setText(name);
			nameView.setTextColor(rgb.toRGB(value));
			
			return view;
		}
	}
}


오호!! 원하는데로 나오는 군요!! 

그런데... 이게 뭔가요.... 클릭해도 저장이 안되네요? 값 저장을 처리해야 할까요?

음... 기본으로 되어 있는데 괜히 건드리고 싶지는 않군요

검색을 통해서 알아보니 체크가 되는 리스트뷰 항목을 만들려면 각 항목의 최상위 뷰가 Clickable을 구현해야 한다고 합니다.

결국 새로운 뷰를 하나 만들어야 한다고 합니다.

늦었으니 그건 다음에... ^^;
Posted by 초프(초보 프로그래머)
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 초프(초보 프로그래머)