본문 바로가기

프로그래밍

(299)
클래스 동적 생성,호출 (리플렉션) 특정 클래스를 라이브러화 해서 사용하는데, 버전에 따른 api 가 다른 경우에이를 동적으로 로드해 사용할 수 있다. 소스단의 변경없이 라이브러리만 변경해 배포할 수 있으므로, 소스 관리가 좀더 수월 해진다.C라면 프리 프로세서를 사용하면 여러가지 처리를 할 수 있는데.. java는 이러한 처리를 Class 객체를 통해 가능케 한다.안드로이드에서 이를 이용하기 위해서는 1. 특정 클래스 동적으로 생성Class dyClass=null;Method dyMethod=null; // 클래스 검색dyClass = Class.forName("com.something.package.TestClass");if( dyClass == null ) {// 클래스 없음.return;} // 인자Class[] arg = new ..
안드로이드 위젯 배경 이미지, 나인패치 * 크기가 가변적인 객체의 배경 그리기 배경을 그리기 위한 방법은 여러가지가 존재한다. 일반적으로 xml에서 android:background = "@drawable/image" 를 사용하는데, 이미지의 크기와 오브젝트(위젯)의 크기가 같은 경우는 상관없지만 다르면 스케일에 의한 이미지 손상이 발생한다. 가로로 확대한 모습인데, 원하는 모양이 아니다... 그렇다고 사이즈가 큰 이미지를 만들기도 리소스 낭비이고... 단말 같이 메모리 등의 제약이 많던 시절엔 이를 3개의 리소스로 분리해 표현하곤 했다. 이렇게 변경되지 않을 좌우측 이미지와 사이즈만큼 반복해 그릴 라인 이미지로 리소스를 구성해서 배경을 그려줄 수 있다. 이또한 가로, 세로 한 방향으로만 적용되므로, 상하좌우로 스케일되는 객체의 경우 각 리소..
옵션메뉴 배경 변경 * 옵션메뉴 * 옵션메뉴는 컨텐스트 메뉴와는 다르게 옵션버튼(메뉴버튼)을 통해 호출되는녀석이다.보통 하단에서 올라오게 되는데, activity에서 해당 이벤트 콜백 메쏘드를 오버라이드해작성해 주면 된다. public boolean onCraetOptionsMenu(Menu menu);public boolean onPrepareOptionsMenu(Menu menu);public boolean onOptionsItemSelected(MenuItem item); 뭐 옵션메뉴 관련한 예제는 많이 있으니 생략하고~ 이 옵션메뉴의 배경색을 바꿀수 있을까?.. 옵션 아이템에 배경이미지를 넣을 수 있을까?배경을 바꿔주기 위한 메쏘드를 하나 구현한다. protected void setOptionMenuBG() { Fa..
갤러리, 커버플로우 구현 소스코드는 http://www.inter-fuser.com/ 을 참고하세요. 해당 소스에서 몇가지만 최적화 해주시면 될 듯 합니다. 우선 이미지가 큰 경우 out of memory가 발생 할 수 있습니다. 따라서 화면에 표시할 비트맵은원본을 그대로 사용하지 않고, 해당 영역에 맞게 축소해 사용합니다.(이 내용은 이 포스트에 포함되어 있습니다.) 그리고, Adapter의 getView() 에서 convertView가 정상적으로 들어오지 않습니다.이는 안드로이드의 버그라고 알고 있으며, 이를 해결하기 위해 별도의 구조로이미지뷰를 만들어 사용하셔야 합니다.버그리포트 : http://code.google.com/p/android/issues/detail?id=3376 Gallery를 상속받은 객체 구현시 get..
AppWidget 여러 개의 위젯을 가진 앱위젯 1. 앱위젯과 프로바이더 앱위젯 프로바이더는 앱위젯 호스트와 커뮤니케이셔을 위한 중간개체이다. 그러다 보니 실제로 이미지를 그리거나 이벤트를 처리하는게 아닌 이러저러하게 처리해 달라고 호스트에 요구하고, 해당 요청에 따라 앱위젯 호스트가 적당한 처리를 하게 된다. 아래와 같이 여러개의 컨트롤(위젯)을 가진 앱위젯을 구성하려고 할때 필요한 사항들을 포스트한다. 2. ui 구성 오디오 재생기 앱위젯이다. 테스트용이라 아무 이미지나 붙여봤다. 보면 재생을 위한 컨트롤 이 4개 보이고, 상단에 미디어 스캔으로 얻은 썸네일 이미지와 좌,우 버튼이 보인다. 3. 레이아웃 ( widget_control_panel.xml ) 위 위젯은 아래와 같은 레이아웃으로 구성되어 있다. 3. 프로바이더 ( res/xml/play..
OpenGL 사용하기 음.. 오픈지엘은 직관적인 api 구조를 가지고 있어서 사용하기에 그다지 어렵지 않다.다이렉트x 5, 6 대의 느낌과 같다는 생각이 들기도 하는데,윈도우에선 오픈지엘을 실제로 사용해보질 않아서 정확히 어떻다 이야길 하긴 그렇다. 사실 3D쪽은 api 외적으로 이해해야 하는 것들이 있는데, 뷰포트, 모델, 프로젝션, 월드 , 행렬, 픽킹, 필터, 각종 쉐이더까정.. api 를 제외하면 다이렉트x 관련 서적에 많이들 설명되어있다.다른점도 있는데 다이렉트X는 월드,뷰, 프로젝션 순서의 파이프라인을 사용하지만오픈지엘은 모델뷰, 프로젝션으로 단순화 되어 있다. 이 포스트에선 뭐 아는게 쥐뿔도 없으므로, 당연 api 만 다룬다. 1. 네모를 그리자!! -_-;;튜토리얼에 언제나 나오는 내용. 1-1. 서피스뷰 선언..
소켓통신 기본사항 클라이언트 * 기본사항 InetAddressSocket : 소켓InputStream : 입력 스트림 - 바이트 단위 입력 스트림InputStreamReader : 바이트 스트림으로부터 문자 단위로 읽어들임. 지정한 문자 인코딩에 따라 변환BufferedReader : 리더에 버퍼 기능을 추가한 입력 스트림 클래스 OutputStream : 출력용 스트림OutputStreamWriter : 문자단위 출력BufferedWriter : 버퍼 기능PrinterWriter : 형식있는 텍스트를 스트림을 통해 출력(println 과 같은 메쏘드 지원) * 초기화 // 서버에 연결할 소켓을 생성InetAddress addr = InetAddress.getByName( "서버ip" );Socket mClient = n..
POSIX 쓰레드 함수들 #include POSIX 쓰레드int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void * arg);int pthread_join(pthread_t th, void **thread_return);int pthread_detach(pthread_t th);void pthread_exit(void *retval);pthread_t pthread_self(void); 다른 쓰레드의 종료int pthread_cancel(pthread_t thread); int pthread_setcancelstate(int state, int *oldstate);PTHREAD_CANCEL_ENABLE..