이직하고나서 첫 작품이 나왔습니다.
프로젝트에 뒤늦게 참여해서는 많은 부분을 담당하진 않았지만... 그래도 첫 출근부터 코딩과 야근을 했었던~
제 첫 직장이였던 소리바다에서 소리바다 안드로이드 앱 개발 했었는데... 이젠 mnet에 까지 와서 개발하게 되었네요 ㅎㅎ
mnet에서 나온 소셜 기능까지 들어간 mnet2.0...
릴리즈 하고 나니 멍~ 해지긴 하는데... 앞으로도 할일이 있으니...
우선 오자마자 하나 끝내고 잠시 있는 시간을 통해 블로그에 하나 글 남깁니다 ㅋ








 





getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);

이와 같은 내용을 Activity에 추가.
락스크린이 걸려 있을 경우에 풀어주고, 스크린이 꺼져 있을 경우엔 켜준다.
PowerManager를 이용하는 방법보다 이 방법이 더 좋은 것 같음.


'Android' 카테고리의 다른 글

[Android] ADB 에서 cpu 사용률 보기.  (0) 2011.06.17
[Android] Asus Eee Pad...  (0) 2011.04.11
[Android] One day with The New Samsung GALAXY Tab 10.1  (1) 2011.03.14
[Android] CyworldFlag  (0) 2010.12.14
[Android] 한글에 Bold 속성 주기.  (8) 2010.11.10
회사 이직하고나서 바로 개발에 참여하고 런칭한 안드로이드 앱 입니다.
머... 저의 공식적인 두번째 앱?? 처음은 소리바다 안드로이드 앱이구요 ㅎ
그냥저냥 자기 위치를 찍고 다니는... 지금 이벤트 합니다...
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 스타일이 해결된 상태입니다 ㅎㅎ

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




  안드로이드의 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에서 입력되는 순간순간마다의 변경되는 내용을 처리하기 위해서 상당히 고민을 했습니다. 머 우회적인 방법으로 변경된 내용을 확인하긴 했지만, 이렇게 쓸 수 있는 방법이 있다는 걸 알았으니 더 코딩하기가 쉬워 지는군요.

예제 코드도 첨부 합니다.



  2007년 11월 20일... 아직 대학교 4학년 마지막 학기 끝나갈 때 쯔음... 취업 준비를 하면서 소리바다에 처음 입사를 하게 되었습니다. 프로그래밍이 좋고... 더 큰 무엇인가를 만들고... 특히나 서비스 어플... 그리고 윈도우 어플을 만들어 보고 싶다는 생각으로 회사에 입사를 하게 되었지요.
  학생 때 공부하던 것과 회사에 가서 하는 것은 많은 차이가 있다는 것을 경험하게 되고.. 나름대로 기회를 찾고 있었기도 했습니다.
  처음... 회사에서 윈도우 어플이 아닌 검색엔진을 하게 되었을 때에도...
  솔직히 많이 흔들렸습니다... 처음 눈에보이는 것! 그리고 많은 사용자들이 쓰고 싶었던 것을 만들어 보고 싶었던 저에게서는 방향을 잃어버린 철없는 학생같았고, 계속 일을 계속 해야 하는지에 대한 생각도 하게 되었습니다. 그래도... 지금 하는 것!! 이거라도 제대로 만들어 두고 나가는 것은 나중에 생각해 봐야겠다고.. 그래도 끝까지 버텼고... 소리바다 안에서 사용중인 검색엔진을 바꾸게 되었지요... 그리고 검색에 대해서 마무리가 되어가는 시간에 모바일에 관심을 갖게 되고... 또 안드로이드를 시작하게 되었습니다.
  처음 시작은 나름 제 욕심이라고 해야 할 것 같습니다. 이것을 조금이라도 준비해 두면 그래도 나중에 이걸 하게 될 기회가 생기지 않을까... 앞으로 안드로이드 시장이 커지면... 더 좋은 기회가 있지는 않을까 하는 생각으로 말이죠...
  그러던 찰라에... 회사 안에서 이런 저런 일들도 많이 생기고... 좋은일 안좋은일 다 겪고... 많은 사람들이 나가고 들어오고 하는 상황도 보고... 저 스스로도 기분도 상한 일도 많았고... 이런일들은 자세히 쓰기엔 좀 민망하기도 합니다.
  그리고 올해 초 부터 안드로이드 프로젝트가 시작 될 때... 이것을 만들 수 있다는 것을 알리고 제가 맡아서 할 수 있는 기회가 생겼습니다. 그리고 지금 서비스 중인 소리바다 안드로이드 앱을 만들어서 서비스를 하게 되었구요... 개발하면서 누군가 이 것을 사용할 것이라는 생각은 많이 즐거웠습니다. 마켓에서 올린 것에 대해서 좋은 댓글을 보면 기분이 좋고, 안좋은 댓글을 보면 기분이 상하고... 이런거 보면 언론에서 악성 댓글 보며 많이 속상했다는 것에 공감이 가기도 하더군요 ㅎㅎ
  앱 서비스를 하고 나서... 회사 이용권 구매자가 점점 늘어나고... 그것에 대한 수치를 보는 것에도 재미가 있었습니다. 어제는 몇명이 몇개의 이용권을 안드로이드 앱을 통해서 구입했는데... 내일은 몇명이나 구입할까... 어떻게 만들면 더 많은 이용권을 사람들이 구매할까.. 하는 고민조차도 기분이 좋았습니다.
  마지막... 1.3.0 버전을 만들면서 위젯도 만들게 되었습니다... 다른 기능도 같이 만들고 싶었지만... 마지막 버전을 만들기 전에 제 이직이 결정이 되게 되어지요... 이직을 결정하고 만들다 보니 좀 급하게 만들어서 어떻게 될지도 걱정이기도 합니다. ㅜㅜ/ 그래도 마지막으로 위젯이 들어간 1.3.0 버전을 런칭하고 나오니... 한편으로는 후련하기도... 뿌듯?? 하기도 하네요... 아무렴... 이걸 저 혼자 만들었다는 생각이... 더 크게 작용하다 보니까요...
  회사 안에서 몇몇 분이 저를 잡아주시기도 하셨지만... 지금보다 더 큰 곳에 가서 더 좋은 기회를 찾고 싶은 제 욕심이라고 해야 할까요... 머.. 이직을 결심한 이유는 여러 이유가 있기도 했고... 마지막 회사의 책상을 정리하고 마지막 길을 나서는데... 그래도 친구와 같이 일했던 다른 몇분들이 저 가는 곳까지 지켜봐 주시러 나와주시니 감사하고... 아쉬운 마음에 선뜻 자리를 나서는 것도 힘들더군요... 미운정 고운정 다 들었던 회사이기도 했고... 앱 개발에 대한 아쉬움도 남기도 했으니까요...
  23일부터는 새로운 직장으로 출근을 합니다. SK Communications로... 소리바다에 남게 되면 앞으로의 안드로이드 개발을 제 주도하에 개발하는 것과... 좀더 큰 곳으로 옮겨갔을 경우 밑에서 부터 다시 시작하지만 더 많은 컨텐츠를 가지고 개발을 할 수 있을 거라는 것... 그래도 전 밑에서 부터 다시 시작하고 싶고... 더 큰곳에 가서 더 넓고 많은.. 그리고 더 큰 기회를 다시 찾아보기로 했습니다... 이번주는 휴가입니다... 몸과 마음을 쉬고... 23일부터 다시 새롭게 출발을 해 볼려고 합니다...



+ Recent posts