본문 바로가기

Android

(43)
GCM 메시지 전송 * GCM 서버에 메시지 전송 요청 서버 URL : https://android.googleapis.com/gcm/send HTTP HEADERContent-Type:application/jsonAuthorization:key=YOUR_API_KEY HTTP BODY(JSON){ 메시지를 전달할 디바이스의 등록 id 리스트 "registration_ids":[" "], 메시지 그룹설정 : 오프라인에서 온라인 상태가 되면 많은 메시지가 전달되는 것을 막고, 그룹내에서 가장 최신의 메시지만 전달. "collapse_key": "string" 전송할 json 목록 : 총 크기는 4kbyte 제한, 키쌍의 제한은 없음 이미정의된 키 값의 사용은 권장하지 않음. "data":[list], 디바이스가 아이들 상태일..
Dialog 1. 기본 스타일에니메이션에 스타일 적용. 2. 에니메이션 스타일 정의진입시 커스텀 에니메이션 , 사라질때 안드로이드 내부 에니메이션 @anim/slide_in_up @android:anim/fade_out/style> 3. 생성자에서 스타일 지정public MyDialog( Context context ) {super( context, R.style.MyDialog );} 4. 다이얼로그 root(window) 레이아웃 설정@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.pass..
Fragment 기본 >> Fragment 기본사항 1. fragment 만들기원하는 형태로 layout을 만들어 준다.Fragment 클래스를 상속받은 클래스를 생성하고, 위 layout을 지정한다.ex)@Overridepublic View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate( R.layout.my_fragment, container, false ); // 필요한 작업 들 return view;} 2. fragment 붙이기activity의 layout에서 를 사용해 해당 fragment를 붙일 수 있다.단, 이 경우 임의로 제거나 변경이 불가능하므로..
EditText 특수문자 입력 제한 특수 문자 입력 제한. // 와처 등록EditText ed = (EditText) find...;ed.addTextChangedListener( watcher ); // 와처 정의TextWatcher warcher = new TextWatcher() { String text; // 텍스트 변경시 특수문자 여부 검사 public void afterTextChanged(Editable arg0) { int length = arg0.toString().length(); if( length > 0 ) { Pattern ps = Pattern.compile("^[a-zA-Z0-9]+$"); if( !ps.matcher(arg0).marches() ) { ed.setText(text); ed.setSelection..
앱 연동 >> 안드로이드 패키지명/액티비티 검색http://activities.droidicon.com 앱의 실행>> 패키지명으로 실행String 패키지명PackageManager pm = context.getPackageManager();Intent intent = pm.getLaunchIntentForPackage(패키지명);context.startActivity(intent); >> 컴포넌트명으로 실행ComponentName 컴포넌트명 Intent intent = new Intent( Intent.ACTION_MAIN );intent.addCategory(Intent.CATEGORY_LAUNCHER);intent.setComponent(컴포넌트명);context.startActivity( intent ); ..
Parcelable 소포 꾸러미 자바 자체가 리플렉션과 같이 동적으로 클래스를 생성하고, 메쏘드들을 확장해 나갈 수 있는데이러한 기능을 이용한 오브젝트 전달 방법이다.소포에는 실제 데이터들만이 넣어지고, 전달되는데 받는 쪽에서는 이것을 풀어원래의 객체에 넣어 주어야 한다. 원래의 객체를 생성하기 위해 꾸러미를 작성할때 클래스의 정보가 포함되고,수신측에서 약속된 전역 멤버를 호출하여 객체를 생성하게 된다. 실제 구조는 확인하지 않았지만 아마도 클래스 로드 하고, 메쏘드 가져와 invoke() .. 이런 구조가 아닐까? 안드로이드에서 Intent로 데이터를 전송할때, parcelable을 사용하면Object들을 함께 전달 할 수 있다. Parcelable을 상속받고, 메쏘드와 CREATOR라는 전역 변수를 선언해주면 된다. p..
Data Animation??? android의 view Animation은 canvas에 view를 그리기전 시간간격에 따라 Transformation의 Matrix를 변경하는 구조로 이루어져 있다. Animation 객체를 상속받아 커스텀 애니메이션을 만들 경우applyTransformation( float interpolatedTime, Transformation t); 메쏘드를 구현해 주면,해당 변형이 이루어지게 된다. 대략의 흐름을 살펴보면,View.draw() -> layout인 경우 dispatchDraw()가 호출된다.이곳에서 배경을 그리고, 각 child view의 draw()를 호출하게 되는데,호출전 child view 에 Animation이 설정되어 있으면, 해당 Animation의 getTransformation(..
Assets 폴더의 이미지 읽기 커스텀 ImageView Asset폴더는 자주 사용되지는 않지만 이를 활용하여 drawable 리소스와 분리된 이미지 작업이 가능하다. 이를 활용하는 예제를 간단히 작성.. 패키지명은 com.test.app 로 가정한다. 1. 커스텀 뷰에서 사용할 attribute 정의image 라는 String 속성을 사용할 예정인데..임의로 제약사항을 둔다. 여기서는 test_image.png 의 경우 app:image = "test_image"를 입력하도록 제한. res/values/attrs.xml에 속성을 추가한다. 사용시에는 아래와 같이 사용된다. 2. 커스텀뷰 생성public class MyImageView extends ImageView { } 3. 레이아웃을 위한 생성자 구성public class MyI..