안드로이드
-
효율적인 레이아웃 구성하는 기법안드로이드/문서번역 2011. 2. 21. 20:16
효율적인 레이아웃 구성하는 기법 안드로이드 UI 툴은 사용하기 쉽고 편한 관리툴을 제공합니다. 대부분의 경우에는 관리툴이 제공하는 몇몇 기본적인 것들만 이용하면 UI를 간편하게 구성할 수 있습니다. 하지만 기본적인 것들만 이용해서는 효율적인 사용자 UI를 만들지 못하겠죠. 보기 좋은 예가 LinearLayout의 남용을 들 수 있는데 이렇게 남용하게 되면 View 계층에서 View가 넘쳐나게 되는 결과를 야기합니다. 애플리케이션에서 보여지는 모든 뷰와 레이아웃 관리툴은 초기화라는 비용을 수반합니다. 이런 비용은 레이아웃과 그리기 성능을 저하시키죠. 특히 다중 LinearLayout 에서 weight 속성을 여러번 사용하면 weight 속성의 특성상 자식객체를 두번 측정해야하기 때문에 매우 값비싼 비용을 ..
-
안드로이드에서 크기에 사용가능한 단위안드로이드/개발 팁 2011. 2. 21. 02:14
크기에 사용할 수 있는 단위는 다음과 같다. 표기 단위 의미 px 픽셀 수 사용 중 화면에서의 픽셀 수, 해상도가 높아지면 픽셀의 물리적인 크기가 줄어든다. in 인치 사용 중 화면에서의 인치단위의 길이 mm 미리 미터 사용 중 화면에서의 미리 미터 단위의 길이 pt 포인트 수 사용 중 화면에서의 1/72 인치를 1포인트로 하는 길이 dp 해상도 의존하지 않는 픽셀 수 1는 해상도가 160dpi일 때 1픽셀. 10dp가 160dpi일 때에는 10픽셀, 320dpi일 때에는 20픽셀 sp 폰트 사이즈를 고려한 픽셀 수 사용자가 설정하고 있는 폰트사이즈를 고려한 스케일된 픽셀 수.실제 픽셀 수는 사용 중 화면의 해상도와 폰트 사이즈에 의해 변함 dpi란? dpi는 Dot Per Inch의 약자로 1인치(2...
-
리스트뷰 백그라운드의 최적화안드로이드/문서번역 2011. 2. 19. 23:14
리스트뷰 백그라운드의 최적화 리스트뷰는 안드로이드의 가장 많이 사용되는 위젯중의 하나입니다. 리스트뷰는 사용하기 쉽고 유연하며 매우 강력합니다. 가끔씩은 이해하기 어려울 때도 있죠. 리스트뷰의 가장 흔한 문제중의 하나는 리스트뷰의 백그라운드(배경)을 커스텀으로 제작할 때 발생합니다. 다른 안드로이드 위젯들처럼 리스트뷰의 백그라운드는 투명으로 아래의 그림에서 기본 배경색인 #FF191919, 어두운 회색인 윈도우의 백그라운드를 리스트뷰를 통해 들여다 볼 수 있습니다. 추가적으로 리스트뷰는 기본값으로 아래의 그림에서 볼 수 있듯이 가장자리에 Fading 효과를 주고 있습니다. 아래의 그림에서 리스트뷰의 첫번째 아이템이 검은색으로 Fade 되는 것을 볼 수 있습니다. 이 기법이 사용됨으로서 리스트뷰의 내용물이..
-
메모리 누출 피하기안드로이드/문서번역 2011. 2. 19. 13:39
메모리 누출 피하기 T-Mobile G1과 같은 안드로이드 애플리케이션들은 Heap 메모리 영역이 16MB 로 제한되어 있습니다. 이 메모리는 핸드폰에는 많은 양의 메모리이지만 개발자가 필요로 하는것에는 크게 못 미칩니다. 이 메모리를 모두 다 사용할 계획이 없다고 하더라도 개발시에는 이 영역을 최소한으로 사용해서 다른 애플리케이션들이 Kill 당하지 않고 운용될 수 있도록 해야 합니다. 안드로이드가 더 많은 애플리케이션을 메모리에 상주시킴으로서 사용자는 애플리케이션간에 더 빠른 전환을 할 수 있습니다. 안드로이드를 개발 할 때에 메모리의 누출현상은 대부분의 경우에 같은 실수때문에 일어납니다. 즉, Context에 오랜시간 지속되는 참조를 하기 때문입니다. 안드로이드에서 Context는 아주 다양한 작업..
-
웹에 존재하는 파일 Stream을 이용해서 다운로드 하기안드로이드/개발 팁 2011. 2. 18. 23:06
String src="http://192.168.1.106/football.3gp"; String des="sdcard/temp1357.3gp"; InputStream in = null; OutputStream out = null; try{ in = new BufferedInputStream(new URL(src).openStream()); out = new BufferedOutputStream(new FileOutputStream(des)); int read; while(true){ read = in.read(); if(read == -1) break; out.write(read); } in.close(); out.close(); finish(); } catch (FileNotFoundException..
-
MIME Type안드로이드/개발 팁 2011. 2. 18. 23:03
MIME-Type Description File Extension application/acad AutoCAD drawing files dwg application/clariscad ClarisCAD files ccad application/dxf DXF (AutoCAD) dxf application/msaccess Microsoft Access file mdb application/msword Microsoft Word file doc application/octet-stream Uninterpreted binary bin application/pdf PDF (Adobe Acrobat) pdf application/postscript Postscript, encapsulated Postscript, a..
-
안드로이드 액티비티 생명주기안드로이드/개발 팁 2011. 2. 18. 01:05
안드로이드는 코드를 주~욱 작성해서 순차적으로 해석해서 띄우는 시스템이 아니라 화면에 나타내는 여러가지 요소들을 계층적요소로 나누어 이 요소들이 특정 상황에 동작 할 수 있도록 역할이 분배되어 있는 시스템입니다. 이 요소 중의 하나가 액티비티 인데 화면에 보이지는 않지만 앱이 구동되고 실행되며 정지되고 소멸될 때까지의 프레임을 담당하는 요소라고 할 수 있습니다. 이클립스에서는 xxxxx.java 파일에서 생성자 클래스가 액티비티를 상속받았다면 이것이 액티비티가 되는 것이죠. 액티비티의 생명주기를 알아야 하는 이유는 앱을 가동시켜면 앱의 특성에 따라서 구동, 실행, 종료 등의 특정한 상황에서 필요한 작업이 있기마련 인데 이런 구체적인 액티비티의 상황에 따라 특정 콜백 함수가 동작됨으로서 앱이 필요로 하는 ..
-
안드로이드 전체화면 만들기 (상태바, 타이틀바 제거)안드로이드/개발코드 2011. 2. 18. 00:18
앱을 만들다보면 종종 타이틀바가 없거나 타이틀바와 상태바가 없는 풀화면 어플(주로 게임)을 볼 수 있는데 이걸 어떻게 코드로 구현하나 봅시다. 상태바, 타이틀바 제거 (풀스크린 모드 만들기) public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(window.FEATURE_NO_TITLE); getWindow().setFlags(WidowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.main); } // 혹은 AndroidMan..