제임스딘딘의
Tech & Life

개발자의 기록 노트 149

[안드로이드] 안드로이드의 이미지 Canvas, Bitmap, Drawable 개요

안드로이드의 이미지 Canvas, Bitmap, Drawable 개요 안드로이드에서는 이미지를 다루기 위한 몇가지 클래스가 존재한다.Canvas, Bitmap, Drawable이 그것이다.각각의 이미지 관련 클래스들에 대해 전반적인 사항을 알아보고자 한다. Drawable, 앱의 resource 디렉토리에 저장되어 있는 이미지 다루기기본적으로 resource에 저장되어 있는 이미지의 경우에는 "Drawable" type의 객체로써 해당 이미지를 다룰 수 있다."Drawable" type을 화면에 그리는 예제 코드는 아래와 같다. Drawable drawable = getResources().getDrawable(id); drawable.setBounds(0,0, drawable.getIntrinsicWi..

MFC 재배포 DLL

MFC 재배포 DLL 간단한 MFC용 ODBC을 배포하려고 하는데 필요한 DLL을 확인해보았습니다. 프로젝트 형식은 [Win32]-[Win32 콘솔 응용 프로그램]이고 템플릿 마법사(응용 프로그램 설정)에서 추가 옵션에 '미리 컴파일된 헤더'에 체크 및 공용 헤더 파일 추가 대상에 'MFC' 에 체크하였습니다. 미리 컴파일된 헤더(PCH) 헤더 파일인 stdafx.h에 TODO 부분에 #include // MFC ODBC 를 추가하고 main함수가 있는 cpp 파일에 CDatabase db; BOOL res = db.OpenEx(TEXT("~~~~)); // ~~~~부분에는 ODBC 연결 문자열이 들어갔습니다. if(res) { db.ExecuteSQL(TEXT("Insert into ABBA.dbo.u..

해시 테이블에 대하여 (about Hash Table)

해시 테이블은 한마디로 공간을 팔아 시간을 사다 라는 말로 표현할 수 있다. 주소를 이용해서 배열같이 직접 탐색이 가능하다. 해시테이블의 기본 개념은 다음과 같다. 데이터를 담을 테이블을 미리 크게 확보해 놓은 후 입력받은 데이터를 해시하여 테이블 내의 주소를 계산하고 이 주소에 데이터를 담는 것, 이것이 바로 해시 테이블의 기본 개념이다. 해시테이블은 특이하게도 데이터가 입력되지 않은 여유공간이 많아야 제 성능을 발휘할 수 있다. 테이블 내의 주소를 계산할 때는 해시함수를 이용하는 데 이에는 두가지 방법이 사용된다. 1) 나눗셈법 주소 = 입력값 % 테이블의 크기 하지만 이는 충돌과 클러스터 문제가 발생할 가능성이 높다. 2) 자릿수 접기 Hello -> 72 + 101 + 108 + 111 = 500..

OpenCV 2.2 - Visual Studio2010 에 설치하기

OpenCV 2.2부터는 VS2010용 pre-compiled 버전(VS2008도 사용 가능)이 나온 동시에 OpenCV의 라이브러리들이 대대적으로 정리되고 이름들도 많이 바뀌어서 예전에 만들어둔 프로젝트를 돌리는데 문제가 좀 생기게 되었습니다. 새 버전에 어서 적응하는 방법 밖에 없겠습니다. 허허허헛... 2.1에 비해 달라진 점 중 눈에 띄는 몇 가지는 다음과 같습니다. - 라이브러리들의 재정리 및 이름 변경 - 새로운 스테레오비전 알고리즘 등의 최신 기술을 사용한 알고리즘 다수 추가 - 약 200여 가지의 대대적 버그 수정 (아직 부분적으로 메모리 누수 현상이 있다고 합니다) - NVIDIA의 OpenCV에 대한 공식 지원 (CUDA 라이브러리와의 연동으로 데이터 연산에 3D 가속 기능 사용 가능)..

[C/C++]유용한 #pragma directive

출처 : http://eslife.tistory.com/187 ※ 주의 : 아래에서 기술하는 내용은 Visual C++ 컴파일러에서만 확인된 내용입니다. 지난번 #define 팁 에 이어 이번에는 필수는 아니지만 사용할 경우 아주 편리한 #pragma 지시자를 간단하게 소개하려고 합니다. 1. 헤더 파일을 한번만 읽어 들이기 아마도 이 경우가 #pragma를 가장 널리 사용하게 된 이유 중에 하나라고 생각되는데요 저도 언제나 헤더 파일을 새로 코딩 할 때 이 한 줄을 먼저 적게 됩니다. (아주 짧고 멋집니다) #pragma once #pragma once 가 없을 당시에는 아래와 같이 헤더 파일 내용을 #ifndef ~ #endif 문장을 사용해서 복잡하게 써주어야 했습니다. (요 복잡한 게 한 줄로 줄..

레귤레이터에 캐패시터를 붙이는 이유(The reason why attach capacitor on regulator)

레귤레이터에 캐패시터를 붙이는 이유 (The reason why attach capacitor on regulator)통상적으로 데이터시트를 보다보면, 레귤레이터 앞과 뒷단에 캐패시터를 붙이는 걸 발견하게 된다. 이것들을 왜 붙일까? 크게 2가지 역할을 해준다. 발진방지전원임피던스를 낮추어줌 첫번째 이유. 레귤레이터는 일종의 DC앰프이다. 따라서 부하에 따라 자칫 발진할 가능성이 많다고 한다. 여기에 약간 이상한 부하, 예를 들면 모터나, 솔레노이드처럼 코일로 된 부하를 연결하면 쉽게 발진을 하게 된다고 한다. 실제 출력측에 콘덴서를 달지 않는 경우, 제조회사에 따라 다소 다르지만 수백khz정도로 발진을 하게된다. 그래서 발진방지용으로 콘덴서를 붙인다. 이때 GND단자와 최대한 가깝게 연결하는 것이 중요..

[mysql] 암/복호화

Oracle을 사용하던 사람들이 MySQL을 사용할 때 착각하기 쉬운 것 중 하나가 바로 DECODE 일 것이다. 내 블로그에 있는 http://blackbull.tistory.com/10 글을 보면, Oracle에서 사용하던 DECODE 에 대해 설명하고 있으니 그것은 별도로 참고하고, 오늘은 MySQL만을 살펴보도록 하자. MySQL 툴이나, 기타 SQL관련 프로그램을 사용하다보면, MySQL에서 DECODE의 글씨 색이 다른 것을 볼 수 있으며, 이미 예약어로 잡혀있는 것을 볼 수 있을 것이다. 즉, MySQL도 DECODE가 존재 한다는 것인데, 웃기게도 이것 때문에 Oracle의 DECODE와 혼동하는 사람들을 매번 낚고 있다 --;; [MySQL에서 help를 이용하여 DECODE에 대해 알아..

OAuth 인증방식 이해하기

OAuth 인증방식 이해하기 본 문서는 OAuth의 이해를 돕기 위해 작성되었습니다. OAuth 학습을 뛰어넘고 바로 예제 소스를 보며 개발을 하고 싶다면, 튜토리얼를 참고하시기 바랍니다. 본 문서 내의 용어 일관성을 위해 OAuth스팩에 있는 용어를 사용하였습니다. 본 문서에서 용어는 모두 이탤릭체로 표시됩니다. 용어정의 서비스 프로바이더(Service Provider) – API를 제공하는 서비스를 말합니다. 예> 스프링노트 사용자(users) - 서비스 프로바이더 혹은(그리고) 컨수머를 사용하는 이를 말합니다. 컨수머(Consumer) – API를 사용하여 개발된 애플리케이션 서비스를 말합니다. 예> 스프링노트의 API를 이용하여 개발된 매시업 보호된 자원(Protected Resources): 서..

[안드로이드] 안드로이드 SDK 에뮬레이터에서 웹캠영상 받기

안드로이드 SDK 에뮬레이터에서 웹캠영상 받기 안드로이드 의 에뮬에서는 직접적인 카메라 지원은 하지 않는다. 그래서 PC의 웹캠을 달고 영상을 에뮬에 전달해서 보여주는 방식을 사용하는데, 이걸 하는 방법은 다음과 같다. 카메라 영상을 Broadcasting하는 서버일단은 android 개발 환경과 SDK는 다 설치 되었다는 가정하에 시작하자. 먼저 JMF가 필요한다.. 자바 에서 웹캠을 동작시켜 주는 프로그램이다. 현재는 거의 망해서 지원이 미비 하지만.. 어쨌건 우리는 이걸 사용해야 한다. JMF는 여기서 받는다. http://www.oracle.com/technetwork/java/javase/tech/index-jsp-140239.html 받아서 설치 하고 난다음에 환경변수에서 classpath가 ..

[안드로이드] Emulator: ERROR: bad config: virtual device directory lacks config.ini - 안드로이드 가상머신관련 오류 해결

안드로이드 Emulator: ERROR: bad config: virtual device directory lacks config.ini - 안드로이드 가상머신관련 오류 해결 emulator: ERROR: bad config: virtual device directory lacks config.iniemulator: could not find virtual device named 'test' 위와 같은 오류가 발생하는 이유는, 컴퓨터의 사용자 이름이 한글인 경우, 경로 인식을 제대로 하지 못해서 오류가 생긴다고 한다. 아래의 사진을 보면 커맨드라인의 폴더경로중 사용자이름 부분이 한글인 것을 확인할 수 있다. 바로 이러한 경우가 문제가 된다. 이런 문제가 생긴다고 가상머신을 사용하지 못한다면 더 이상 안드..

[안드로이드] ADT 8.0.0으로 업데이트 후의 draw9patch 에러

ADT 8.0.0으로 업데이트 후의 draw9patch 에러 Android SDK에는 draw9patch 라는 툴이 내장되어있다.이 툴은 auto resizing이 필요한 (버튼과같은) 이미지가 있을 때, 어느 영역을 resizing 할것인지를 지정하는 툴이라고 생각하면 이해가 쉽다.그런데 Android SDK버전을 진저브레드로 업데이트 이후, draw9patch 실행시 아래와같은 예외메세지를 뿌리며 프로그램이 죽는 증상이 발생할 수 있다. (스트레스!) 원인은 swing-worker.jar 파일이 ANDROID_SDK설치폴더/tools/lib 에 없기때문에 발생한다. 해결책은 해당파일을 해당위치에 넣어주면 된다. swing-worker.jar 파일은 아래에 링크해두었다. Marius Mathiesen라..

[안드로이드] Preferences 다루기 - 앱의 환경설정을 위한 Class

안드로이드 Preferences 다루기 앱을 개발하다보면 각각의 사용자별로 선호하는 값들을 저장하는 화면을 제공해야 할 때가 있다.게시물을 보여주는 앱을 예를들어 보자. 한화면에 보여지는 글의 목록을 어떤 사용자는 10개를 선호하는 반면, 어떤 사용자는 5개를 좋아한다면 앱개발자가 글 목록의 개수를 강제로 고정시킬 것이 아니라, 사용자 별로 설정을 할 수 있게 허용하는 것이다. 이것을 '환경설정' 혹은 'Preferences' 라고 하며, 안드로이드 플랫폼은 이런 것을 구현하기 편리하도록 기능을 제공한다.안드로이드 플랫폼은 Data를 저장하는 방법으로 환경설정(이하 Preferences), 파일, Local DB, 네트워크를 제공한다. 그 중 Preferences는 가장 간단하게 정보를 저장하는 방법(m..

[안드로이드] 서로다른 Activity 사이에 Parcelable사용하여 데이터/객체 전달 및 받는 방법

서로다른 액티비티(Activity) 사이에 Parcelable사용하여 데이터/객체 전달 및 받는 방법 Parcelable의 정석적인 사용방법은 아니지만, 객체의 포인터를 액티비티간 주고 받는 방식으로 보면 될 것 같다.물론 자바는 포인터가 없지만 여기서 사용한 방법은 개념상 포인터를 넘기는것과 같다고 봐도 무방할것 같다. 이미 잘 알려진것과 같이, 안드로이드에서는 서로다른 엑티비티 사이에서 객체를 주고 받기 위해서는 Intent를 이용한다.그런데 기본 데이터 형인 int, String, short, float... 등이 아니라 사용자 정의 Class의 instance를 넘겨야 하는 상황이라고 생각해보자.어떻게 해야할까?이때 사용되는 interface가 Parcelable 이다.기본 자료형 int, boo..

[안드로이드] 이미지와 텍스트가 같이 들어간 버튼 만들기

이미지와 텍스트가 같이 들어간 버튼 만들기안드로이드 SDK(1.5기중)에는 버튼을 처리하는 클래스가 Button과 ImageButton 크게 두가지 있다. ImageButton이 내부에 이미지를 가지고 있는 버튼이고, Button은 TextView를 상속하고 있기에 텍스트 버튼이라고 생각하기 쉬운데, 사실 그렇지 않다.일반적으로 버튼을 표시할때 간단하게 해당 버튼의 기능을 시각화 하여 나타내는 간단한 Icon을 함께 넣어주는 경우가 많을텐데, 그런 경우 ImageButton대신 Button을 활용해서 처리할 수 있다. 이미지의 위치는 텍스트의 상, 하, 좌, 우에 위치시킬 수 있으며, Xml에서는 각각 android:drawableTop, android:drawableBottom, android:draw..

[안드로이드] Bitmap 과 ByteArray 상호변환

Bitmap 과 ByteArray 상호변환 이 포스팅은 Bitmap 데이터 형을 ByteArray로 변환하거나, 혹은 그 역, ByteArray -> Bitmap으로 변환하는 방법을 예제코드와 함께 다룬다. 안드로이드 카메라와 이미지를 다루다보면, 종종 데이터 형(type)이 달라서 형변환을 해야 하는 상황이 발생한다. 그때 필요한 내용이다. 방법을 간단히 요약하자면 아래 두줄만 보면 된다. Bitmap -> ByteArray : ByteArrayOutputStream 인스턴스를 생성한 후, Bitmap의 compress 메서드를 통해 비트맵을 압축하여 stream에 담는다. ByteArray -> Bitmap : BitmapFactory의 decodeByteArray 메서드를 통해 byte Array를..

[안드로이드] 인터넷에서 이미지 비동기 다운로드

안드로이드 인터넷 이미지 비동기 다운로드보통, 인터넷에서 이미지를 다운로드 하는 코드를 아래와 같이 사용하는 경우가 종종 있었다.그러나 잘못된 사용방법이라고 한다. 잘못된 사용 예URL url = new URL(imageUrl); bitmap = BitmapFactory.decodeStream(url.openStream()); 이미지 주소로 URL 객체를 만든 후, BitmapFactory의 decodeStream( )의 인자로써 생성한 URL객체의 openStream( ) 메서드를 호출하고 있다.그러나, 아래와 같은 방법으로 사용하는 것이 올바른 사용 방법이라고 한다. 올바른 사용 예 HttpGet httpRequest = new HttpGet(URI.create(imageUrl) ); HttpClie..

[안드로이드] 증강현실 구현을 위한 기초 개념, 벡터(Vector)와 노름(Norm)

증강현실 구현을 위한 기초 개념, 벡터(Vector)와 노름(Norm) 노름(Norm)은 일종의 '벡터의 크기'를 일반화시킨 것이라고 생각하면 쉽다.선형대수학 및 함수해석학 등의 분야에서 쓰인다. 선형대수학 및 함수해석학에서는, 노름(영어: norm 놈[*])은 벡터 공간의 원소들에 대하여 일종의 ‘길이’ 또는 ‘크기’를 부여하는 함수 라고 정의한다.0 벡터의 노름은 0 이며, 그 외의 모든 벡터는 양의 실수 노름을 갖는다.한편, 반노름(半norm, 영어: seminorm 세미놈[*])이라 하는 개념이 있는데, 이는 영 벡터 이외의 벡터도 노름이 0 이 될 수 있도록 조건을 약화한 것이다. 노름(Norm)은 다음 조건을 만족시켜야 한다. Lp노름은 다음과 같이 정의된다. 한마디로 말하면, 각 성분들의 절..

[안드로이드] 안드로이드 화면이 회전될 때 어플리케이션 개발자가 주의해야할 점

안드로이드 화면이 회전될 때 어플리케이션 개발자가 주의해야할 점 안드로이드는 가속도 센서나 조도 센서와 같은 다양한 종류의 센서를 다루기 위한 API 를 제공하고 있다. 그 중 가장 일반적으로 사용되는 센서 두 가지는, 가속도 센서와 자기장 센서(나침반 센서) 이다. 어플리케이션과 디바이스는 이 두 가지 센서를 사용자 입력값으로 활용하여, 디바이스 스크린을 어느 방향으로 돌릴지 결정하는데 사용하곤 한다. 그러나, 최근 이와 관련된 새로운 문제가 발견되었다. 새로 출시된 디바이스들 중에는 (모토롤라의 CHARM 과 FLIPOUT 이라는 모델) 기본 화면 모드로 포트레이트(portrait) 모드 대신 랜드스케이프(landscape) 모드를 사용하고 있다. 따라서, 기본 화면이 세로로 길쭉하지 않고 가로로 넓..

[안드로이드] 카메라 해상도 바꾸기

안드로이드 카메라 해상도 바꾸기 카메라를 찍을때 촬영할 이미지의 해상도를 변경하는 방법을 보여주는 예제코드 입니다. 아래 코드는 APIDemo에 있던 Camera 소스를 약간 변경한 것입니다. Preview Class는 카메라에서 1600 * 1200 (2MP)과 가장 가까운 해상도를 찾아서, 그 해상도로 촬영을 해 주는 역할을 합니다. Activity에서 불러오는 방법은 APIDemo에 있는 Camera소스를 찾아 보시기 바랍니다. class Preview extends SurfaceView implements SurfaceHolder.Callback { private static final int IMAGE_WIDTH = 1600; // 촬영할 가로 픽셀 수 private static final in..

[안드로이드] http에 request요청시 - redirect 하는 방법

HTTP request요청시 redirect 하는 방법 및 예제코드안드로이드 앱을 만들다보면 http로 request를 보냈는데, 서버에서 url주소를 redirect해서 response를 보내주는 경우가 있다. 그럼 개발자가 의도한 동작이나 입력한 주소로는 요청이 안되게 된다. 이걸 해결하기위해서는 java에서 redirect된 주소로 다시 요청을 해줘야 한다. 상당히 귀찮다.예제를 보여주겠다. 이를 응용하거나, 바로 가져다 사용하면 귀찮은 작업을 덜 수 있다. private InputStream openConnectionCheckRedirects(URLConnection c) throws IOException { boolean redir; int redirects = 0; InputStream in ..

[안드로이드/Tip] LogCat 한글 메시지 확인하기

LogCat은 무엇인가?LogCat은 안드로이드 앱 개발환경에서, 다양한 앱과 데몬프로세스들이 생성하는 로그를 보는데 사용하는 명령어이다.이 LogCat은 Android에서 제공하는 ADB shell에서 사용할 수도 있지만, Android SDK 로써 사용하는 이클립스에서 LogCat윈도우를 통해서도 사용할 수 있다.그런데, 아직 이 이클립스를 통한 Android SDK환경이 불안정 한 것인지, 이클립스의 LogCat윈도우는 여러가지 문제를 가지고 있다.그중 한가지가 바로 한글 출력시 깨져서 보인다는 것이다. LogCat 에서 깨지는 한글 메시지 확인하기 이클립스에서 사용하는 LogCat에서는 한글이 깨져서 나온다. (윈도우 버젼 이클립스. 현재 사용중인 버젼은 헬리오스) 인코딩 문제 때문이라고 하는데,..

[안드로이드] 웹뷰를 통한 apk 파일 다운로드 및 제어

안드로이드에서 웹뷰를 통한 apk 파일 다운로드 및 제어 아래와 같은 순서로 진행하겠다. apk 파일을 다운 받을 수 있는 WAS 구축(HTML의 a 태그를 이용한다.)안드로이드 웹뷰를 통한 웹페이지 접근웹뷰 클라이언트를 오버라이딩하여 apk 파일을 sd 카드 내에 다운 받기다운 받은 apk를 안드로이드 패키지 매니저를 통해 install 하기 apk 파일을 다운 받을 WAS 구축 WAS(Web Application Server)는 톰캣을 이용했다. 톰캣의 설치는 간단하므로 이 글에서는 제외한다. 참고로 난 우분투에서 만들었다. war을 톰캣 서버에 deploy할 때 다음과 같은 html을 추가했다. war 파일 내 경로 : test/ 경로 내 포함된 파일 : test.html, HelloWorld.ap..

[안드로이드/GUI] 안드로이드의 레이아웃과 계층구조

안드로이드의 레이아웃과 계층구조 : 화면 구성요소들의 계층구조안드로이드의 기본 클래스는 Activity(android.app.Activity) 클래스이다.Activity 클래스는 아주 많은 것을 할 수 있지만 지 혼자서는 화면에 아무짓도 못한다.이 Activity 클래스에 화면기능을 하기 위해서는 View, Viewgroups 와 항상 같이 작업을 해줘야 한다. 1. Views View(android.view.View) 클래스는 화면의 사각형 영역에 있는 컨텐츠나 화면 레이아웃 을 담당한다. 즉 화면영역에 오브젝트들을 배치하고,위치를 재고,그리고,포커싱을 바꾸고,스크롤을 하는등의 일을 한다. 또한 View 클래스는 위젯(화면에 어떤 것을 그리는 모든 행위를 하는 클래스들의 집합)의 기본 클래스이며, 이 ..

[안드로이드] XML을 이용한 컬러와 스타일 지정방법

XML을 이용한 컬러와 스타일 지정방법안드로이드에서는 앱 UI를 구성할 때, java코드를 사용하는 방법 외에도, XML로 레이아웃과 색상, 스타일을 지정하는 방법이 있다.xml을 이용하여 칼라 및 스타일 지정하는 방법을 알아본다. xml에 color설정하는 법res/values/colors.xml이라는 파일을 만들고 아래와 같이 지정하면 된다. #77000000 #00000000 이렇게 지정한 color는 android:textColor="@color/dim" 과 같은 식으로 사용이 가능하다. xml에 color state list 설정하는 법color를 xml에 지정하기 위해서는 res/color라는 폴더를 만든 후 xml파일을 생성하면 된다.ex) res/color/font_set_a.xml 아래의..

부분문자열을 얻는 방법 - Java와 SQL

JAVA의 String 메소드중 하나인 Substring 은 부분문자열을 얻을때 사용한다. Substring(int beginIndex, int endIndex) 의 형태를 가진다. beginIndex 부터 endIndex 까지를 부분문자열로 취하겠다는 뜻이다. (endIndex의 문자는 제외가 된다!!) 예) String str = "19000101-1234567" str.substring(10, 17) 하면 1234567 을 부분문자열로 반환한다. (10부터 16까지 7자리를 읽어온다) SQL에서는 부분문자열을 얻는 substr 라는게 있다. 형태는 substr(string S,int N1,int N2) 이다. 뭐냐하면 문자열 S를 N1 번째 문자부터 시작해서 N2 개 만큼 부분문자열로 취한다는 것이..

[안드로이드] HttpURLConnection을 통해 html 접근시 한글깨짐 문제 해결 방법

HttpURLConnection을 통해 html 접근시 한글깨짐 문제 해결 방법종종 안드로이드 앱에서 HTML 페이지 내용을 읽어올 필요가 있는 경우, 사용되는 HTTP 커넥션을 위한 클래스로 HttpURLConnection 라는것이 있다. 그런데 이걸 통해서 한글이 포함된 사이트의 HTML을 가져올경우 한글이 깨지는 문제를 겪게될 경우가 있을 수 있다. 내 경우에는 이 HttpURLConnection을 아래과 같이 사용하고는 했는데, 한글이 제대로 보이지 않고, 깨짐 현상이 보였다. HttpURLConnection conn = (HttpURLConnection)url.openConnection(); BufferedReader br = new BufferedReader(new InputStreamRead..

[안드로이드] 안드로이드 개발시 eclipse (helios) 죽는 문제

안드로이드 개발시 eclipse (helios) 죽는 문제 해결방법 안드로이드 개발을 하다보면 특별히 문제는 없어보이는데 eclipse가 응답없음 상태로 전환되었다가 갑자기 죽어버리는 경우가 있어요. 한참 포풍코딩하던걸 저장하지 않은 상태에서 이런일이 발생하면, 코딩내용이 모두 날아가 버리지요.(수시 저장의 중요성!!) 검색을 해보니 다음과 같은 조합으로 사용하는 경우에 이런 문제가 발생할 수 있다고 하네요 이클립스가 소리없이 크래시되는 조합이클립스가 크래시 되는 조합이 있으니, 본인이 해당하는지 확인해보시기 바랍니다.만약 해당된다면, 아래에서 제시하는 해결방법을 적용해 보세요. OS : 윈도우 7 (32bit or 64bit) JDK : jdk1.6.0_21 Eclipse : Helios 이러한 조합일..

[안드로이드] Android XML Files auto formatting With Eclipse

Android XML Files auto formatting With Eclipse XML 파일 포맷팅을 하는 방법을 소개합니다.Window-> Preferences-> XML-> XML Files-> Editor 에서 "Split multiple attributes each on a new line" 를 체크 on으로 변경해주면 XML 파일이 보기 좋게 Formatting 되요. 안드로이드 개발을 하다보면 XML 파일을 수정할 일이 많지만. 이클립스 기본 Fommater가 불만인 경우 사용해보면 좋을것 같아요 :D

1 2 3 4 5