본문 바로가기

프로그래밍/Android

(93)
sdk3.0 fragment를 하위버전에서 사용하기 3.0 허니콤의 Fragment 를 진저 2.3.3 에서 돌리기 위한 설정 참조 : http://developer.android.com/sdk/compatibility-library.html Fragment란 녀석이 생명주기를 가지는데..이게 Activity 종속적인 일종의커스텀 레이아웃이라 볼 수 있다. 2.3.3에는 Activity에 해당 메쏘드나 처리가 없으니 호환 라이브러리에서는FragmentActivity를 제공하고 있다. 2.3.3이 아니더라도 상관없으나 지금 많이 사용하는게 이녀석이라... -_-;; 1. AVD 매니저로 Android Compatiblility package 설치 2. android-sdk-windows\extras\android\compatibility\v4\android..
SurfaceView/GLSurfaceView 쩝.. 프로젝트도 진행 중인데, opengl을 좀 봐달라는 부탁이..어째 opengl은 만져볼 일이 전혀 없었다.웬만한건 hollo world는 거쳐보는데, opengl의 hello world 기억은 없다.물론 이쪽의 hello world는 삼각형 일테지만... 아니 큐브던가? 긁적.. 그나마 Direct3D ,Unity3D 만져본게 다행~ 아무튼 단기간에 기본 사항을 살펴보고, 세부 항목을 살펴보기로 해 기본적인것 부터 다시 점검.쩝. 안드로이드는 뷰들이 모여 윈도우로 구성되고, 이 윈도우들은 각각 서피스라는 공간에 표시하게 된다.이러한 서피스들이 모여 서피스 플링거를 통해 프레임버퍼로 합쳐져 화면에 보여지게 된다. 안드로이드 api 단에서 이러한 서피스의 핸들링을 위해 지원되는 클래스가 Surface..
Custom layout, layoutinflater 커스텀 레이아웃과 LayoutInflater 레이아웃은 View을 상속받아 만드는 커스텀뷰와 큰 차이는 없으나, 자식뷰들이 존재하므로 그에대한고려만 추가해 주면 된다.LayoutInflater를 통해 액티비티용으로 구성된 레이아웃을 붙여 다른 뷰그룹에 포함될 수 있는커스텀 레이아웃을 만들수 있다. 커스텀 레이아웃은 ViewGroup을 상속받으며,onMeasure() , onLayout() 메쏘드를 오버라이딩해 구현해 주어야 한다. 뷰와 차이는 없으나 자식뷰에 대한 처리가 추가된다.각 자식뷰를 돌면서 사이즈 정보를 넘겨야 한다. protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { final int count = getChildCo..
MediaStore 썸네일 데이터 관련 정리 >> 오디오오디오의 경우 MediaStore.Audio.Media 에 컨텐츠 정보, MediaStore.Audio.Albums에 썸네일 정보가 저장되어 있다. 앨범별 썸네일을 관리하는 이유는 컨텐츠별 썸네일과의 중복 문제 때문이다. 따라서, MediaStore.Audio.Media 로 컨텐츠 검색 후, MediaStore.Audio.AudioColumns.ALBUM_ID 로 다시 앨범 테이블을 검색해야 원하는 썸네일을 얻을 수 있다. 데이터 취득 절차이미지 uri를 얻어 바로 불러 오는 형태를 사용하나, 일단 기본 적인 순서는 아래와 같다. MediaStore.AudioMeida.EXTERNAL_CONTENT_URI에서 MediaStore.Audio.Media를 쿼리해 미디어 정보를 얻음. 커서얻기con..
뷰의 크기 변경,이동 자식 뷰 추가view.addView( childView, LayoutParams ); 액티비티의 최 상위 윈도우에 윈도우로 뷰 추가하기WindowManager wm =(WindowManager) context.getSystemService( Context.WINDOW_SERVICE ); wm.addView( View ,WindowManager.LayoutParams ); 제거removeView( childView ); 윈도우 뷰wm.removeView( childView ); 뷰의 크기 변경ViewGroup.LayoutParams param = view.getLayoutParams();param.width = 너비;param.height = 높이;view.setLayoutParams(param); 자식 ..
리스트뷰 메쏘드 몇개 >> 헤더 뷰 추가/제거 : addHeaderView( View ) / removeHeaderView( View )>> 푸터 뷰 추가 : addFooterView( View ) / removeFooterView( View )고정된 헤더나 푸터 뷰를 추가하는 메쏘드.adapter 이외의 별도 뷰를 추가하는 용도로 사용된다. 여러개의 헤더, 푸터를 가질 수 있고,레이아웃도 변경 가능하다. 위 메쏘드들은 adapter로 리스트를 구성하기전 (setAdapter)에 처리해 주어야 한다. >> 화면에 보이고 있는 첫 아이템 포지션 : getFirstVisiblePosition() >> x,y 포인터로 포지션 얻기 : pointToPosition(int, int) boolean onTouchEvent(MotionE..
SQLite Database 그동안 db 사용할 일이 없어 그다지 살펴보지 않았는데, 이번에 내부 자료구조를저장해야 할 일이 생겨 급하게 살펴보는 중... SQLiteOpenHelper, SQLiteDatabase데이터는 MediaStore 에서처럼 위 데이터베이스 클래스를 통해 쿼리하고, Cursor를 통해 각 row를전달받게 된다.데이터 베이스에 자료를 넣기 위해서는 ContentValues 에 데이터를 put 해서 insert, update 해주면 된다. >> SQLiteOpenHelperSQLiteOpenHelper를 통해 SQLiteDatabase 객체를 전달받아 db에 쿼리 등 작업이 이루어지게 된다. SQLiteOpenHelper(Context, String, SQLiteDatabase.CursorFactory, int..
Edittext 관련 사항들 >>EditText setSelection( 위치)커서 위치 setSelection( 시작위치, 끝위치 )텍스트 선택 requestFocus() 포커스 주기 setInputType( type )InputType.TYPE_NULL : 클릭해도 키보드 올라오지 않게..InputType.TYPE_CLASS_NUMBER : 숫자자판InputType.TYPE_TEXT_VARIATION_PASSWORD : 영문자판 > 요건 단말의 IME 에 따라 달라질 수 있음 setImeOption ( android:imeOptions )입력 키보드의 옵션과 액션을 설정할 수 있다.액션에 따라 키보드의 엔터, 다음, 검색 등의 완료 버튼이 적용된다.해당 액션은 액션 리스너에서 판단 할 수 있다. 레이아웃에서 android:ime..