본문 바로가기

반응형

안드로이드

커스텀 다이얼로그에 원하지 않는 검은 색 배경색이 보일때 처리 방법 간단해도 무지하게 간단합니다. getWindow().setBackgroundDrawable(new PaintDrawable(Color.TRANSPARENT)); 다이얼로그의 윈도우 객체를 얻어서 백그라운드를 그려주면 됩니다. 뭐로? 투명으로.. 끝. 더보기
Log 를 테스트시에는 보이고 배포시에는 안보이도록 자동 처리 개발을 하다보면 android.util 패키지의 Log 클래스를 사용하여 로그를 분석하는 경우가 많습니다. 저도 대부분의 메소드와 데이터를 보고 싶은 중간중간에 참 많이 사용합니다. 그런데 골치거리중에 하나가 테스트시에는 보이는 것이 맞는데 배포시에 사용자에게는 불필요한 메시지이기도하고, 중요한 데이터를 숨겨야 하는 등의 이유로 Log를 주석처리하거나, 제거해야 하죠.. 안드로이드 개발툴이 발전하면서 이러한 부분에도 신경쓴 부분이 있는데요. 안드로이드 프로그램 프로젝트에 보시면 다음과 같은 클래스가 자동으로 생성된 것을 본적이 있을 겁니다. 프로젝트구조에 자동생성되는 gen 폴더가 있습니다. 여기에 프로젝트 생성시 작성했던 기본패키지와 동일한 패키지내에 BuildConfig.java 와 R.java 가 .. 더보기
HTML Parser Jericho 라이브러리 안드로이드 프로그램을 배포하면서 사용자들이 항상 최신버전을 사용했으면 하는 경우가 있습니다. 대체적으로 서버에 업데이트한 버전코드를 저장하고 이를 조회하면 간단합니다. 별도의 서버를 사용하지 않고 체크하는 방법으로는 마켓의 앱정보 페이지에 보면 중간쯤 배포중인 앱의 버전이 표시가 됩니다. 이를 파싱하여 버전정보를 알아내는 방법을 사용해봤습니다. 웹페이지를 파싱해야 하므로 파서로는 jericho 라이브러리를 사용하였습니다. 코드도 간단하니 다음을 보겠습니다. import java.io.IOException; import java.net.URL; import java.util.Calendar; import java.util.List; import net.htmlparser.jericho.Element; im.. 더보기
Parcelable 를 구현할 때 주의점 (ArrayList) 상태저장, 복구가 필요한 데이터에 대해서 implements Parcelable 을 구현하게 됩니다. 구현해야 하는 메소드와 CREATOR 에서 사용자 지정 타입의 ArrayList를 저장하는 방법에 대해서 기술합니다. ArrayList에 사용할 데이터 클래스는 아래와 같이 기술합니다. package com.example.testtypedarraylistparcelable; import android.os.Parcel; import android.os.Parcelable; public class InnerData implements Parcelable { public int nSeq; public String strMessage; public InnerData(int nSeq, String strMess.. 더보기
특정 기기에서 DatePickerDialog, TimePickerDialog에서 '설정', '취소' 가 나오지 않고 '저장'으로 표시되는 경우 내 LG의 LTE2 모델의 경우 저런 오류(?)가 발생한다. 저렇게 표시만 되면 다행인데, 취소버튼이 없어서 뒤로가기 버튼을 눌러도 '설정'버튼을 누른 이벤트가 정상적으로 실행이 되고, '저장'버튼을 누른 경우 '설정'버튼을 누른 것 같은 이벤트가 2회 발생한다. 구글링결과 안드로이드 특정 버전에서 위와 같은 오류가 알려져있다고 한다. 이를 해결하기 위해서 소스를 간단히 수정해 보았다. // 한번만 실행하기 위한 체크변수 int nCheck = 0; @Override protected Dialog onCreateDialog(int id) { switch (id) { case DATE_DIALOG_ID: // 날짜선택 다이얼로그 호출 DatePickerDialog dialog = new DatePicker.. 더보기
안드로이드 해상도별 아이콘 사이즈 애플의 아이폰과 같이 단일화된 기기에 특정 해상도만 가진 기기를 타겟으로 개발하는 반면, 안드로이드는 다양한 해상도, 픽셀밀집도가 각각의 기기마다 다르기때문에 디자인에서 정말 고달픕니다. 기본적으로 안드로이드에서 아이콘을 하나 제작하더라도 배포용 512x512 사이즈의 이미지가 필요하고, 추가로 지원하는 기기의 dpi에 따라서 아이콘을 사이즈별로 준비해야 합니다. dpi에 따른 아이콘 사이즈는 구글에서 정의하여 같은 사이즈로 배포해야 합니다. 기기에 따라서 아이콘의 해상도가 정확하게 일치하지 않으면 아이콘을 화면에 보여주지 않는 기기도 종종 있습니다. (지금 기억은 안나는데 아이콘 사이즈에 신경안쓰고 테스트 중이던 프로그램이 그런 경우가 있었습니다.) 최근 xxhdpi이라는 해상도가 추가되었습니다. 최근.. 더보기
AsyncTask 사용중 java.lang.ExceptionInInitializerError 처리방법 안드로이드에서 AsyncTask 관련 문서를 보면 중요한 내용중에 하나가 분명히 Main Thread 에서 실행되어야 한다는 것입니다. 그런데 안드로이드 개발을 하다보면 UI스레드를 얻기위해서 항상 Context를 파라메터등으로 넘겨주고 하는 고생(?)을 매번하게 됩니다. 간단히 Handler를 이용하여 UI스레드를 획득하여 제목에서 보이는 예외를 피하는 코드를 만들어 보겠습니다. // UI스레드에서 작동됩니다. new Handler(Looper.getMainLooper()).post(new Runnable() { @Override public void run() { UserDefineTask task = new UserDefineTask(); task.execute(); } }); 어딜봐도 Contex.. 더보기
jxl (Java Excel Library) 를 이용한 기존 xls 파일을 복사하여 사용하기 개발중 정리된 정보를 excel 파일로 변환하여 데이터를 추출가공하는 부분이 있어서 정리합니다. 일반적으로 사용할 엑셀파일을 서식과 포맷을 정의한 temp 엑셀파일을 생성해서 저장후 이를 꺼내서 데이터만 cell 에 입력하고, 이파일을 저장하는 방법으로 많이 사용하게 됩니다. (직접적으로 cell 단위 서식까지 신경써가면서 작업하기에는 코딩이 너무 많아 집니다.) 하여~ 서식이 정의된 temp 엑셀파일(temp.xls로 하겠습니다.)을 복사하여 사용하는 방법을 적어보겠습니다. 간단한 테스트 코드이므로 응용하는 방식은 개발자에 따라 달라질 수 있습니다. (여기서는 제가 진행한 안드로이드 코드를 기반으로 합니다.) 위에 보이는 같이 적당한 곳에 서식이 정의된 temp_log.xls 파일을 저는 assets .. 더보기

반응형