본문 바로가기

전체 글

(258)
런처 바로가기 앱 유지를 위한 Activity Alias 안드로이드 앱개발시 업데이트는 필수 사항이다. 안드로이드의 앱 아이콘은 Manifest의 Activity에 정의된 android.intent.category.LAUNCHER를 통해서 런처아이콘으로 인식한다. 앱을 설치후 바로가기를 만들면 해당 Activity Name정보를 저장하고 있다가 그 정보를 통해서 앱을 실행하게 된다. 하지만 앱을 업데이트시 개발자가 android.intent.category.LAUNCHER로 정의된 실행 Activity를 변경하게 되면 업데이트시 모든 바로가기는 삭제 된다. 사용자들이 바탕화면에 바로가기를 통해 만들어둔것이 없어 진다면 사용자로써는 당황하게 된다. 기존 android.intent.category.LAUNCHER에 정의된 Activity Name 변경을 하지 않고..
Awesome Android Design GDG Sydney에서 발표한 Awesome Android Design 주제에 대한 정리입니다. 브랜드와 정말 중요로 하는 컨텐츠에 대해서는 컬러를 통일감 있게 사용해라. 다양한 색상으로 사용자의 집중도를 떨어 뜨리지 말고 정말로 핵심적인 요소에만 컬러를 주어 강조하는게 좋을듯 하다. Normal과 Pressed 버튼에 대해 너무 대조적인 색상은 표현을 피하라. 허니컴버전으로 오면서 이렇게 쓰라고 해놓고 이제와서는 쓰지 말란다. 너무 과도한 반전색상보다 어느정도 눌렸다는 것만 인지 할 수준으로 만들어도 괜찮을 듯 하다. 각각의 View들의 Hold 스타일에 맞는 리소스만들기가 디자이너입장에서는 좀 귀찮아 할 수 있는데, android-holo-colors.com에 접속해서 Color값을 입력하면 관련 리..
Android OutOfMemory 분석 안드로이드에서 비트맵 이미지를 불러온다거나 애니메이션시 메모리부족으로 인해 응용 프로그램이 종료되는 문제점을 한번쯤을 격었을 것이다. 이런 경우 이미지나 객체를 할당된것은 메모리로 부터 끊어 GC되어 메모리로 부터 제거되도록 해야한다. 메모리와 객체가 연결이 끊기지 않은 상태로 힙 한계에 다르면 프로세스는 OutOfMemory 예외가 발생 하게된다. 주요 발생 원인 1. 지속적으로 많은 메모리를 요구하고 어떤 지점에서 프로세스의 최대 힙 메모리를 넘어 작업 하는 경우 2. 객체가 GC에 의해 메모리로 부터 제거되지 않아 누수되는 경우 3. 큰 비트맵을 스캐일링하지 않고 바로 로드하는 경우 안드로이드에서 메모리 누수 테스트의 가장 쉬운 방법은 Activity 지속적으로 회전하거나, Activity를 지속적..
애드센스 텍스트 광고 vs 이미지 광고 자주 가는 애드센스 포럼에서 광고최적화 라는 글을 보고 테스트 해보았다. http://sensekorea.com/index.php?mid=adsense_forum&category=3231&document_srl=27006 이미지광고가 블로그에 너무 강한 이미지를 줘서 디자인적으로 어떻게 조화를 이룰수 없을까 라는 생각을 하다가 글을 보니 텍스트 광고로 하되 강조하면 오히려 이미지광고 보다 클릭율이 높다고 해서 바로 테스트 해보았다. 디자인 측면 웹페이지의 광고의 조화를 이루도록 텍스트광고를 색상과 크기를 비슷하게 선택했다. 웹이랑 너무 조화를 이루어서 그런지 콘텐츠 내에 존재하는 글처럼 보이기도 했다. 수익 측면 결론으로 말하자면 -90% 이상 클릭율이 떨어 졌다. CTR, CPC 모두 감소... 이미지..
ViewPager PageTransformer ViewPager의 PageTransformer 인터페이스를 이용하면 페이지 전환시 애니메이션을 다양하게 만들 수 있다. 대표적으로 구글의 플레이뮤직앱을 보면 트렉을 넘기는 경우 일반적으로 좌/우페이지 애니메이션이 아니라 아래에서 위쪽으로 올라오는 애니메이션을 볼 수있다. 구현 방법은 PageTransformer를 implement해서 transformPage(View view, int position)를 구현 해서 ViewPager의 setPageTransformer (boolean reverseDrawingOrder, ViewPager.PageTransformer transformer) 메서드를 이용해서 설정하면 된다. ViewPager pager = (ViewPager) findViewById(R...
안드로이드 인젝션 라이브러리 플러그인으로 쉽게 사용하자. 안드로이드에서 많이 쓰이는 메서드를 Inject를 통해 쉽고 빠르게 사용할 수 있다. JakeWharton이 만든 butterknife 라이브러리를 이용하면 findViewById, OnClick등을 쉽게 이용 할 수있다. class ExampleActivity extends Activity { @InjectView(R.id.user) EditText username; @InjectView(R.id.pass) EditText password; @OnClick(R.id.submit) void submit() { } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVi..
Android ViewPager 성능향상 방법 안드로이드 초기에만 해도 Activity는 하나의 페이지로만 인식이 되었는데, 몇년전부터 하나의 Activity에서도 여러개의 화면을 배치할 수 있는 UI들이 생겨나고 있다. 또한 폰뿐만 아니라 테블릿에서도 다양한 UI를 위해 분할된 화면들로 배치하고 있다. 이런 UI중심에는 ViewPager라는 안드로이드에서 지원하는 View가 있다. ViewPager은 화면전환 없이 좌우 스크롤을 통해 효율적으로 페이지 전환을 할 수 있는 UI이다. ViewPager은 기본적으로 좌/우 화면을 미리 로딩해두기 때문에 좌우 스크롤시 빠른화면전환을 보여준다. 스크롤을 양옆으로 조금 당여보면 미리로딩되어 있다는 것을 알 수 있다. 하지만 이러한 로딩방식으로 처음 진입시 성능이나 메모리적으로 문제가 된다. 한 화면에 하나를..
ViewGroup setClipToPadding() 메서드의 비밀 ViewGroup의 setClipToPadding()라는 흔하게 사용하지 않은 메서드가 있다. 이 메서드는 아주 복잡해질 수 있는 작업은 쉽게 단번에 해결해주는 강력한 기능을 가지고있다. Padding을 Clip하도록 설정 할 수 있는 기능이다. 기본값은 true이며, false일 경우 Clip되지 않고 ViewGroup 내부에 패딩영역이 잡히게된다. 예를 들어보자. ListView에서 최상단의 영역에 Padding을 주고 싶은 경우, HeaderView에 빈 공간을 가진 View를 추가하거나 포지션이 첫번째 일경우 상단에 Padding이나 Margin값을 설정 하여 처리 했을 것이다. 하지만 setClipToPadding(false)를 주게 되면 레이아웃에 잡혀 있는 패딩이 ChildView에 먹히게 ..