본문 바로가기

프로그래밍

(287)
커스텀속성과 R.styleable R.styleable xml을 사용하다보면 android:layout_width , android:layout_height 등 android: 로 정의된각 속성을 정의하게 되어있다. 나만의 레이아웃이나 뷰를 커스텀하게 사용하고자 하는경우추가로 요구되는 값들이 생길텐데 이러한 값을 xml에서 입력하고자 할때어케 할까? 예제는 TextButton 에 대한 포스팅에 잘 나와있다. 이번 포스팅은 커스텀 styleable에 대한 내용만 정리해 본다~ 1. 나만의 styleable 을 정의하기해당 내용을 정의할 xml 파일을 만든다. ( my_layout_styleable.xml ) 요렇게하면 MyLayoutAttribete 라는 이름으로 3개의 값을 가지고 있는 styleable이생겨난다.R.java 를 살펴보면..
Splash window 보이기 1. 레이아웃 작성res/layout/splash.xml 2. 엑티비티 구성 : 별거읍다.. 이미지 보이고, 원하는 시간 지난 후 다른 액티비티호출해주면 끝. private ImageView splash; @Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R,layout.splash); splash = (ImageView) findViewById(R.id.splash);Handle handle = new Handle();handle.postDelayed( new Runnable() {@Overridepublic void run() {// start other ac..
TextButton 만들기 1. 커스텀속성을 사용해 추가 스타일 지정 res>values 폴더에 my_style.xml 을 하나 생성한다.버튼에서 사용할 속성을 지정한다. 이러한 커스텀 속성은 아래처럼추가가 가능하다. 이 리소스는 R.styleable 에 생성되는 리소스이며,R.styleable.StyleNameR.styleable.StyleName_AttrName형태로 접근할 수 있다. 위 스타일을 레이아웃에서 사용하려면 새로운 네임스페이스를 하나 추가한다.워케? xmlns:이름="패키지" drawable에 추가한다.empty.png 색상과 관련한 리소스를 color 로 추가하던가. 아래처럼 커스텀 리소스로추가해도 됨.ex) 커스텀 drawable 리소스colors.xml #FFFFFF #FF9E18 #F2E406 #000000..
버튼 상태에 따른 배경변경 이미지 버튼을 생성해 보면 흔히 생각하는 형태의 버튼이 아님을 알게되는데얼마 걸리지 않는다... -_-;; 뭥미~ 라는 1초간의 생각이 지나가고.. 원래의 목적대로 버튼 상태에 따라 변화하는 이미지 버튼을 고려케 되는데...방식이야 다양하다.우선 Button 을 상속받아 각 주요 메쏘드를 오버라이딩 하는 방식이 있는데, 요건다음에 포스팅할 TextButton과 거의 같은 방법이다. 둘째는 selector 를 사용하는 방법으로.. 보다 간편하게 원하는 통작을 이끌어낼 수 있다.각 상태별로 조건을 두어 이미지를 정의할 수 있는데,android:state_focusedandroid:state_pressedandroid:state_enabled등의 조건이 있을 수 있다. res/drawable 폴더에 버튼 배경..
에니메이션 처리하기 * 안드로이드에서의 에니메이션은 전통적인 프레임 방식 에니메이션과 Tweening 을 통한 에니메이션 방식이 있다. * 에니메이션안드로이드는 아이폰과 같이 뷰의 간단한 변형에 관련한 에니메이션 처리를 지원한다. 레이아웃 에니메이션과 각 구성요소의 에니메이션으로 나눌수 있다. 처리할 수 있는 에니메이션은 아래와 같으며, 코드상에서의 클래스명이다.AlphaAnimation - 투명도 변환RotateAnimation - 회전ScaleAnimation - 크기 변환TranslateAnimation - 위치 이동 * 이 클래스들은 android.view.animation.Animation 의 하위 클래스이다. 즉, Animation 객체를 상속받아 다양한 에니메이션을 구현할 수 있다.이번 포스트에서는 이미 구현되..
투명한 레이아웃 만들기 투명 레이아웃이야 android:background="#80RRGGBB"이렇게 설정하면 투명한 레이아웃 바탕이 만들어진다.헌데, 요것만으론 좀 밋밋한 맛이~ ㅎㅎ -_-;; 요걸 커스텀한 모습으로 구현하려면 무얼 해야 하나? 레이아웃 구현 : 별다른 사항은 없으며 dispatchDraw() 메쏘드를 오버라이드해구현해 주면 된다. 레이아웃은 onDraw를 호출하지 않으며 배경을 그리기위한 dispatchDraw를호출한다. 따라서, 이 메쏘드를 오버라이드해서 별도의 처리를 더해주면 끝. 정확히 말하자면 레이아웃(ViewGroup)은 onDraw()를 호출하지 않도록 설정되어있다.레이아웃에서 onDraw 메쏘드를 사용하려면 setWillNotDrawEnabled(false); 를 호출해 주면 된다.레이아웃은 ..
메시지 핸들러 사용하기 Handler 는 내부적으로 쓰레드를 생성해 메시지큐의 데이터의 입출력을 처리하는 녀석이다.메시지큐에 메시지를 전송하거나 해당 메시지를 얻어올수 있다.메시지를 전송할때 지연시간을 두어 전송토록 하는 메쏘드도 포함되어 있어쓰레드간 메시지 스케줄링시 이래저래 많이 사용된다. 1. 메시지를 수신할 녀석을 설정한다.public Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg){ }}; 별거읍넹.. 이렇게 설정하면 해당 쓰레드의 메시지 큐에 메시지가존재하는 경우 handleMessage() 메쏘드가 호출된다. switch( msg.what ) { } 과 같이 handleMessage() 메쏘드에 메시지 처리루틴을 넣어주..
리시버를 통한 sms데이터 가져오기 SMS 가져오기 브로드캐스트 리시버를 생성하고, android.provider.Telephony.SMS_RECEIVED 액션을 사용한다. manifest.xml 에 리시버 설정.... 퍼미션 추가