public static void setButtonBackground(Button btn, int normal_color, int press_color) {
StateListDrawable res = new StateListDrawable();
res.addState(new int[]{android.R.attr.state_pressed}, setGradientColors(normal_color));
res.addState(new int[]{}, setGradientColors(press_color));
btn.setBackground(res);
}

public static GradientDrawable setGradientColors(int color) {
GradientDrawable gradient = new GradientDrawable();
gradient.setShape(GradientDrawable.RECTANGLE);
gradient.setColor(color);
gradient.setCornerRadius(120.f);
return gradient;
}


Editing

 

Ctrl + Space : 기본 코드 완성

Ctrl + Shift + Space : 스마트 코드 완성(예상되는 타입의 메소드또는 변수명 )

Ctrl + Q : 빠른 문서보기

Shift + F1 : 외부 문서보기(http://developer.android.com/reference로 이동)

Ctrl + mouse over code : 간단한 설명.

Alt + Insert : Generate code( Getters, Setters, Constructors, hashCode/equals, toString )

Ctrl + O : Override methods

Ctrl + I : Implement methods

Ctrl + Alt + T : Surround with… (if..else, try..catch, for, synchronized, etc.)

Ctrl + / : 한줄주석

Ctrl + Shift + / : 블럭주석

Ctrl + W : 연속적인 코드블럭 선택

Alt + Enter : 빠른수정.

Ctrl + Alt + L : Reformat code
Ctrl + Alt + O : Optimize imports
Ctrl + Alt + I : Auto-indent line(s)

Ctrl + Shift + V : 이전에 클립보드에 복사한 히스토리 열기.

Ctrl + D : 라인복제 또는 선택블록 복제

Ctrl + Y : 라인삭제

Ctrl + Shift + J : 라인합치기(Smart line join)

Ctrl + Enter : 라인분리(Smart line split)

Ctrl + Shift + U : 대소문자 변환

Ctrl + Shift + ] / [ : 코드블럭 처음또는 끝까지 선택

Ctrl + Delete : 단어끝까지 삭제

Ctrl + Backspace : 단어처음까지 삭제

 

 

 

Search/Replace

 

Double Shift : 모든곳에서 찾기.

Ctrl + F : 찾기

F3 : 다음찾기

Shift + F3 : 이전찾기

Ctrl + R : 바꾸기

Ctrl + Shift + F : 경로에서 찾기(Find in path)
Ctrl + Shift + R : 경로에서 바꾸기(Replace in path)

 

 

 

Usage Search

 

Alt + F7 / Ctrl + F7 : 사용내용 전체찾기 / 파일에서 사용한것 찾기
Ctrl + Shift + F7 : 현재파일에서 하이라이트
Ctrl + Alt + F7 : 사용된것 새창으로 보여줌.

 

 

 

Compile and Run

 

Shift + F10 : Run

 

 

 

Debugging


F8 : Step over
F7 : Step into
Shift + F7 : Smart step into
Shift + F8 : Step out
Alt + F9 : Run to cursor
Alt + F8 : Evaluate expression
F9 : Resume program
Ctrl + F8 : Toggle breakpoint
Ctrl + Shift + F8 : View breakpoints

 

 

 

Navigation


Ctrl + N : 클래스 열기
Ctrl + Shift + N : 파일열기
Ctrl + Alt + Shift + N : Go to symbol
Alt + Right/Left : 문서탭이동

F12 : 이전에 사용한 도구창 열기

Shift + Esc : 마지막에 사용한 도구창 닫기
Ctrl + G : 줄번호로 이동.
Ctrl + E : 이전에 열었던파일 목록창 열기
Ctrl + B or Ctrl + Click : Go to declaration
Ctrl + Alt + B : Go to implementation(s)
Ctrl + Shift + I : Open quick definition lookup
Ctrl + Shift + B : Go to type declaration
Ctrl + U : super-method/super-class 이동.
Alt + Up/Down : 이전/다음 함수 이동

Ctrl + ] / [ :  코드블럭 처음/끝 이동
Ctrl + F12 : 파일 구조보기

F2 / Shift + F2 : 다음/이전 하이라이트된 에러로 이동.
F4 : 해당 소스로 이동

 

 

 

Refactoring

 

F5 : 복사
F6 : 이동
Alt + Delete : 안전하게 삭제(지우기전에 사용된곳 확인 가능)

Shift + F6 : 이름바꾸기

 

 

 

Live Templates


Ctrl + Alt + J : Surround with Live Template
Ctrl + J : Insert Live Template
iter : Iteration according to Java SDK 1.5 style
inst : Check object type with instanceof and downcast it
itco : Iterate elements of java.util.Collection
itit : Iterate elements of java.util.Iterator
itli : Iterate elements of java.util.List
psf : public static final
thr : throw new

Android, MySQL, PHP, & JSON Tutorial


AsyncTask 사용 시 에러가 ?


리스트에 바인딩 할 객체를 불러 올 때 AsyncTask를 썼다.
그런데 번번이 'sending message to a Handler on a dead thread' 라는 메시지를
내뱉고는 죽는 것이었다. 다행히 나만 이런 문제가 있는 건 아니었다.

http://code.google.com/p/android/issues/detail?id=20915

AsyncTask의 필드를 보면 static으로 InternalHandler를 생성하는 부분이 있는데, (InternalHandler는 끝날 때나 ProgressUpdate할 때 쓰인다) 이게 꼭 UI thread에서 생성이 되야된다더라. API에도 비슷한 부분이 있긴 한데... 'The task instance must be created on the UI thread'. 생각해보니 InternalHandler는 한번 생성하고 땡! 이 아니라 여러 객체에서 쓰인다.

해결법은 간단하다. UI thread에서 AsyncTask를 한번 만져주면 된다.
다음 코드를 onCreate 쯤에서 불러주면 적절할 듯하다.

1
Class.forName("android.os.AsyncTask");

DIP

- 안드로이드에서 다양한 화면크기의 기기들을 지원하려면 고정 단위인 px 보다 밀도에 따른 논리 단위인 dip 를 사용해야한다.

  하지만 안드로이드 api  소스코드들의 크기는 px 단위를 사용한다. 따라서 dip를 px 로 변환하여 사용하는 방법이 필요.

- 안드로이드 개발자 사이트 화면 관련 

  http://developer.android.com/guide/practices/screens_support.html


다양한 3가지 방법

- 입맛에 맞춰 사용하자

- 아래소스는 10 dip 를 pixel 로 변환한다는 것을 가정한다.


1. 안드로이드 dev 사이트에 소개된 방식


final float scale = getResources().getDisplayMetrics().density// 화면의 밀도를 구한다.

float dip = 10.0f;  // 변환하고자하는 dip 치수

int pixel = (int) (dip  * scale + 0.5f); // 변환하는데 0.5 는 반올림을 위하여 붙여줌.




2. 리소스를 이용한 방식

 

res / values / dimens.xml 파일을 생성하고 dimen 엘리먼트를 이용하여 원하는 dip 치수 저장


<dimen name="dip_size">10dip</dimen>


================================================================================================================


// dimens 에서 저장했던 엘리먼트를 불러오면 자동으로 pixel 단위로 변환.

int pixel = (int)getResources().getDimension(R.dimen.dip_size);




3. TypedValue 클래스를 이용한 방식

 

DisplayMetrics dm =  getResources().getDisplayMetrics();

int pixel = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP10 , dm);



AudioFrequence.zip



디벨로퍼에서 메모리 누수에 관한 관련 자료


이걸 번역하신 분이 블로그에 기재한 부분

GCM


http://www.cusmaker.com/101


http://blog.naver.com/dhrod0325?Redirect=Log&logNo=140165607558


http://blog.naver.com/dev4unet?Redirect=Log&logNo=120164238995

Checks whether any music is active.


ex)

public AudioManager _AudioManager;

_AudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

Log.i("test", "" + _AudioManager.isMusicActive());


http://developer.android.com/reference/android/media/AudioManager.html

http://seban21.blog.me/70088234123

+ Recent posts