이런식으로 운전할 수 있으면...
나도 카레이서 했겠지? ㅎㅎ
동영상 찾아보다 좀 환상적인... 대신 타이어 터져버리네 ㅋ




회사 이직하고나서 바로 개발에 참여하고 런칭한 안드로이드 앱 입니다.
머... 저의 공식적인 두번째 앱?? 처음은 소리바다 안드로이드 앱이구요 ㅎ
그냥저냥 자기 위치를 찍고 다니는... 지금 이벤트 합니다...
1등이 맥북에어~~~ 아... 에어가 탐나는군요 ㅋ
이제... 또 업데이트 준비를 해야 겠군요 ㅎㅎ



TextView에서 글시체에 Bold 속성을 주기 위해서는 여러가지 방법이 있습니다.
간단하게는 xml에서 TextView의 속성중에 android:textStyle="bold"을 주는 방법도 있습니다.
하지만 여기에 단순한 문제가 있습니다. 지금 한국에서 그래도 제일 많이 풀린 갤럭시S에서는 위에 속성을 주었을 경우 Bold속성에 문제가 없지만, 개발자 입장에서 에뮬레이터나 다른 디바이스에서는 TextView에서 Bold 속성을 주어도 한글에서는 Bold속성이 들어간 텍스트가 보여지지 않습니다. 영어는 Bold 속성을 주어도 되지만... 한글에서는 안되는.. ㅜㅜ// 좀 황당하지요?? 그래서 좀 해결책을 보여주고자 이 포스트를 작성해 봅니다.

TextView에 보면 setPaintFlags 라는 메소드가 있습니다. 그 내용을 확인해보면

이런 내용이 되어 있습니다.. See Also에 있는 setFlags(int) 의 내용도 보게 되면


이 속성을 잘 이용하면 Bold 효과를 준 한글의 텍스트를 만들 수 있습니다.
그에 대한 코드는

textEx5.setText("한글 볼드 테스트");
textEx5.setPaintFlags(textEx5.getPaintFlags() | Paint.FAKE_BOLD_TEXT_FLAG);

이런식으로 만들어 주면 됩니다.
중요한건
textEx5.setPaintFlags(textEx5.getPaintFlags() | Paint.FAKE_BOLD_TEXT_FLAG);
이 부분일 것이라고 생각됩니다.

제가 테스트한 결과 화면입니다.

첫번째 글씨는 단순히 영문 텍스트만 넣은 것이고.
두번째 글씨는 영문 텍스트에 xml에서 TextView에 bold 스타일을 추가했을 경우 입니다.
세번째 글씨는 TextView에 한글만 넣은 상태이고
네번째 글씨는 TextView에 Bold 스타일을 추가한 것인데... 한글에는 변화가 없지만 영어에만 bold 스타일이 적용된 것이 확인됩니다. 좀... 안습이죠... 적용되면 여러사람 고민안했을 문제이였을 터인데 ㅎㅎ
다섯번째 글씨는... 한글에 Bold 스타일이 해결된 상태입니다 ㅎㅎ

에뮬레이터나 다른 디바이스에서 한글에 대한 폰트 지원을 제대로 해주지 않는 것으로 생각이 됩니다. 머 그래도 이렇게라도 해결할 수 있는 방법이 있으니 다행이라고는 생각됩니다. 테스트한 코드는 압축파일로 첨부합니다. :-)




어느날 회사에 택배가 도착...
기다리고 기다리던 원피스 싸우전드 써니호였습니다... ㅋㅋㅋ
5개 구분구분 지어져 있던 것이 한 셋트!!
회사 책상이 허전한 저로서는... 하나 조립해야겠다는 생각으로 사게 되었지요...
머... 박스 상태에서부터 사진 하나하나 조립한걸 보여드리고 싶지만.. 오자마자 주변 분들이 무엇이냐며...
이런저런 분위기로 온전한 박스상태의 사진은 하나도 없군요 ㅋㅋ
어쨌든... 결과

9명의 캐릭터들 입니다...
이게..생각보다 캐릭터들이 귀엽네요 ㅋㅋㅋ

그리고 우리의 써니호~~~~
생각보다 괜찮아 보이죠? ㅎㅎ

사진 찍는 재주가 없어서... ㅜㅜ ㄷㄷㄷ

그래도 이걸 같이 산 친구가... 찍어서 보내준 사진입니다.
ㅎㅎㅎ
예약판매로 27800원주고 구입했지요.. 그런데 지금 다른데에서는 제일 싼 곳이 38000원 정도 하던...
생각외로 싸게 좋은 퀄리티를 가진 장식품?? 을 구입하게 되어서 좋게 생각하고 있습니다...
이것때문에 회사분들이 이거 자기 아들한테 가져다 주면 좋겠다면서 팔라고 하시는 ㅜㅜ///
아아.. 앞으로 이걸 회사안에서 어떻게 지켜야 할지~ ㅎㅎㅎ


Charles Petzold’s Programming Windows Phone 7
Free eBook을 받아서 볼 수 있는 곳!
Free eBook - Charles Petzold’s Programming Windows Phone 7


슬슬... 윈도우폰7도 준비를 해둬야 하겠다만...
C#을 안해본지.. 시간이 지나니.. 기억이 가물가물 ㅜㅜ


  안드로이드의 ListView컨트롤에서 스크롤 시에 배경이 있는 곳에서 배경 화면이 보이는 것이 아니라 검은색의 배경이 나올 경우가 있습니다. 스크롤이 멈추면 해당 배경이 보이지만 스크롤이 진행되면 보이지 않으니 좀.. 매끄럽지 않다고 할 수 있습니다. 그럴 경우에는 cacheColorHint 속성을 조절하면 됩니다. 해당 값은 #00000000 으로 변경 하면 됩니다.
  layout의 해당 ListView에서 그림과 같이 값을 변경하거나
xml을 직접 수정한다면
android:cacheColorHint="#00000000"
위와 같이 추가 하시면 됩니다.


'Android' 카테고리의 다른 글

[Android] CyworldFlag  (0) 2010.12.14
[Android] 한글에 Bold 속성 주기.  (8) 2010.11.10
[Android] Activity를 Dialog로 만들기...  (0) 2010.09.15
[Android] EditText 이벤트 처리.  (6) 2010.09.07
[Android] 갤럭시S 2.2 Froyo 영상...  (0) 2010.07.30

안드로이드 개발시에 Dialog를 불러와서 사용하거나, 아니면 custom dialog를 만들 수도 있습니다.
Dialog를 만들고 활용하는 방법은
http://developer.android.com/guide/topics/ui/dialogs.html
이곳에 가시면 Dialog를 활용하는 방법이 나와 있습니다.
이 방법과 같이 Dialog를 activity를 이용해서 만드는 방법 도 있습니다.
방법은 다름이 아니라 Activity를 만들고 그 해당 Acitivity의 Theme를 Manifest파일 안에서




로 해두시면 됩니다. 그리고 해당 Acitivity 파일의 코드 안에서는 이런식으로 해 두시면 됩니다.
@Override
	protected void onApplyThemeResource(Resources.Theme theme, int resid,
			boolean first) {
		super.onApplyThemeResource(theme, resid, first);

		// no background panel is shown
		theme.applyStyle(style.Theme_Panel, true);
	}

이렇게 하면 호출한 Activity위에 해당 Acitivity가 Dialog 형대로 보이게 됩니다. 단 dialog로 만든 Acivitiy의 view xml 파일에 있는 main view 크기가 전체 크기보다 작아야 하겠지요?? ^^


  Android에서는 EditText 에서 입력 이벤트 처리를 해 주어야 할 경우가 있습니다. 키보드에서 입력하는 동안의 이벤트와 그리고 enter키가 눌렸을 때의 이벤트 처리 등. 해줘야 할 부분이 있습니다. EditText에 있는 OnEditorActionListener와 OnKeyListener를 이용해서 하게 되면 Enter와 back기와 같은 이벤트를 처리 할 수 있습니다. 
  OnEditorActionListener와 OnKeyListener의 결과는 비슷하기 때문에 OnEditorActionListener를 이용한 예제 코드를 보자면

package com.test.edittext;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;

public class EditTextEvent extends Activity implements OnEditorActionListener{
	
	EditText editInput = null;
	TextView textResult = null;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        editInput = (EditText)findViewById(R.id.EditText_Input);
        editInput.setOnEditorActionListener(this);
    }

	@Override
	public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
		// TODO Auto-generated method stub
		switch(v.getId())
		{
		case R.id.EditText_Input:
		{
			if(event.getAction() == KeyEvent.ACTION_DOWN)
			{
				Log.i("TEST", "TEST");
			}
			break;
		}
		}
		return false;
	}
}


이런식으로 하게 되면 됩니다... 하지만
소프트 키보드에서 입력한 순간 순간마다의 이벤트는 받지 못합니다. OnKeyListener를 이용하여도 마찬가지 입니다. 이럴 때에는 addTextChangedListener 라는 것을 이용하면 됩니다. 이것에 대한 자세한 내용은
http://developer.android.com/reference/android/text/TextWatcher.html
이곳에 하면 볼 수 있습니다.
예제 코드를 작성하자면

package com.test.edittext;

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.KeyEvent;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;

public class EditTextEvent extends Activity implements OnEditorActionListener{
	
	EditText editInput = null;
	TextView textResult = null;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        editInput = (EditText)findViewById(R.id.EditText_Input);
        editInput.setOnEditorActionListener(this);
        editInput.addTextChangedListener(textWatcherInput);
    }

	@Override
	public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
		// TODO Auto-generated method stub
		switch(v.getId())
		{
		case R.id.EditText_Input:
		{
			if(event.getAction() == KeyEvent.ACTION_DOWN)
			{
				Log.i("TEST", "TEST");
			}
			break;
		}
		}
		return false;
	}
	
	TextWatcher textWatcherInput = new TextWatcher() {
		
		@Override
		public void onTextChanged(CharSequence s, int start, int before, int count) {
			// TODO Auto-generated method stub
			Log.i("onTextChanged", s.toString());			
		}
		
		@Override
		public void beforeTextChanged(CharSequence s, int start, int count,
				int after) {
			// TODO Auto-generated method stub
			Log.i("beforeTextChanged", s.toString());		
		}
		
		@Override
		public void afterTextChanged(Editable s) {
			// TODO Auto-generated method stub
			Log.i("afterTextChanged", s.toString());
		}
	};	
}



  이렇게 해주면 됩니다. TextWatcher안에 있는 onTextChanged는 변경된 텍스트에 대한 결과를. beforeTextChanged는 변경되기 전에 입력 되었던 텍스트에 대한 내용을. afterTextChanged는 텍스트가 변경이 되었을 때의 결과를 보여줍니다. 처음에 TextWatcher를 몰랐던 저도 EditText에서 입력되는 순간순간마다의 변경되는 내용을 처리하기 위해서 상당히 고민을 했습니다. 머 우회적인 방법으로 변경된 내용을 확인하긴 했지만, 이렇게 쓸 수 있는 방법이 있다는 걸 알았으니 더 코딩하기가 쉬워 지는군요.

예제 코드도 첨부 합니다.



+ Recent posts