본문 바로가기

전체 글

(258)
안드로이드 페이스북홈 앱에 적용된 Rebound SpringSystem 기술 오픈소스로 공개 안드로이드 페이스북 홈 앱에 적용한 Rebound기술을 오픈소스로 공개 했다. 페이스북 홈의 설정화면이나 메인화면에서 바운드되는 기술이다.View가 확대되거나 축소될때 또는 화면에서 보이지거나 사라질때 바운드되는 기술이다. 물리적으로 바운드되며 공을튀기면 재바운드되면서 천천히 멈추는것과 같다고 생각하면 된다. https://github.com/facebook/reboundhttp://facebook.github.io/rebound/ SpringSystem은 0~1사이의 값에 대한 바운드되는 값들(아래)이 Listener를 통해 전달 받게 되는데, 이 값을 통해서 View의 scale, translate등 처리를 통해 애니메이션효과를 발생 할 수 있다. 이 Listener는 16ms간격으로 1초에 60프레..
큰 화면에서의 풍부한 UI지원과 Layout 중첩을 낮추기 위한 새로운 레이아웃 GridLayout 수평또는 수직축으로 정렬해 사용하는 LinerLayout은 안드로이드의 레이아웃에서 가장 흔히 사용되고 있다. 이런 레이아웃 구조는 중첩이 너무 심해 성능에서 영향을 미친다. RelativeLayout으로 상대 View를 기준으로 정렬 하게 된다면 이런 중첩 구조를 막을 수는 있지만 레이아웃 속성이 상당히 복잡해지고 보기도 힘들어 진다. 이런 문제점을 해결하기위해 안드로이드 4.0(ICS)부터 도입된 GridLayout을 소개 하겠다. GridLayout을 이용하게 되면 간단한 구조로 덜 중첩되게 할 수 있다. GridLayout은 간단하게 말해서 화면에 가상으로 가로, 세로의 셀을 만든다음 해당되는 셀 위치에 View를 순서대로 또는 원하는 위치에 배치하게 되는 구조로 TableLayout과는 비슷한 ..
Android ActionProvider를 이용한 액션바 아이템 액션에 대한 커스텀뷰 생성 안드로이드의 액션바는 구글 개발 디자인가이드라인에 따라 공식적으로 지원하며 권장하는 디자인이다. 약간의 제약사항도 있지만 디자인가이드라인이니 되도록 사용을 해야하는것이 맞다고 생각한다. 국내 일부와 해외 유명한 앱대부분은 액션바를 사용하고 있다. 구글에서도 이런 제약사항에 대한 보완책으로 약간의 커스터마이징을 사용 할수 있도록 ActionProvider을 제공한다. 액션바의 Item을 Action하게 되면 커스텀뷰를 보여주게 한다던가, 서브아이템을 표시할 수 있다. menu xml의 item에 actionProviderClass를 통해 커스텀 ActionProvider를 설정하게 되면 구현한 것이 로드 되게 되는 구조이다. 커스터 마이징은 ActionProvider를 상속받아서 구현하면 되는데 아래 코드..
안드로이드 4.4 킷캣 1개월만에 1.1% 점유율, 갈길이 멀다. 안드로이드 4.4 킷캣 발표 1개월지난 시점에 1.1%의 점유율을 차지했습니다. 애플의 iOS 7 발표후 2일만에 31.7%, 한달만에 51.8%로 업데이트된것에 비해 대조적이다. Android Dashboards 젤리빈의 점유율은 절반이상 차지하여 가장많은 점유율을 보였으며, 그다음으로 진저브레드가 25% 점유율을 보였다. 개발자가 가장고민중 하나가 진저브레드를 지원해야 하는지 말아야하는지가 가장 고민 일텐데, 1/4이면 아직도 무시 못할것 같다. 허니컴 이상 개발하는 것과 진저브레드를 지원하게 하는것은 손이 많이 가는 작업이다. SupprotLibrary를 쓴다던가 SDK버전을 분리해서 기능을 뺀거나 다른 방법으로 기능을 구현한다 던가 작업이 다른 버전에 비해 많이 필요하다. 그리고 이렇게 점유율이 ..
Android에서 아이콘폰트 사용하기 지난 Android BootStrap 포스팅시 이미지리소스대신 아이콘폰트를 이용하는 것에 대해 간단하게 설명한적이있다. 해상도에 따른 여러벌의 이미지대신 아이콘 폰트를 사용해서 리소스관리와 효율적이다라는 유용성을 강조 했다. 아이콘폰트를 이용해 어떻게 안드로이드에서 사용하는지 자세히 알아보자. 아이콘폰트를 이용해서 이미지리소소 대신 사용하는 것은 이미 웹에서 흔한일이다. 정의된 문자를 통해 폰트를 생성하고 이를 웹에서 불러들여 사용한다. 안드로이드에도 이런 웹 기술을 그대로 구현가능하다. 왜 사용해야 할까? 커스텀폰트를 만드는 것도 쉬운게 아닌데, 이렇게 어렵게 반드시 사용해야 되는 이유가 있을까라는 의문이 들 수 도 있다. 현재 안드로이드는 기기파편화로 인해 다양한 DPI들이 존재한다. 이렇게 봤을때 ..
[다음뷰]꿈을 현실로 만드는 블로그! 꿈을 현실로 만드는 블로그! 내가 해야 될것을 일깨워준 블로그 2007년 블로그를 개설했다. 그 당시만 해도 블로그의 영향력이나 블로그를 통해 뭔가를 할 수 있다는 생각은 없었다. 누구나 그렇듯 블로그 개설만 하고 내버려 두었다. 2009년 나는 스마트폰앱을 개발을 했다. 앱을 배포할 장소와 사용자와의 커뮤니케이션을 위한 소통의 도구가 필요했다. 그것이 바로 현재 블로그이다. 나는 앱을 개발해서 블로그를 통해 공개했으며 설치파일도 같이 배포했다. 자연스럽게 이용자들과 댓글을 통해 소통 할 수 있었으며 이런 소통을 바탕으로 좀더 멋진 앱을 개발 할 수 있는 큰 보탬이 되었으며, 내가 앱을 만들어 가기위한 충분한 이유가 되었다. 나의 실력을 높여준 블로그 내가 만든앱을 사용해보고 그것을 댓글을 통해 표현 한..
최악의 성능에서 안드로이드 앱 테스트 하기 안드로이드 개발자들 중 다수가 성능 좋은 폰으로 앱을 개발하게 된다. 이렇게 성능이 좋은 폰을 가지고 개발을 하게 되면, 자기폰에는 빠른데 성능이 좋지 않은 폰에서는 버벅거리거나 느려지는 것을 인지 못하고 개발을 지속할 수 있다. 그래서 애초부터 성능이 좋지않은 폰으로 개발하려면 개발 하면서 디버그시 정말 느려 속이 답답한점 한번쯤은 격어 봤을 것이다. 필자의 경우 평범한 폰으로 개발 후 좀 성능이 저조한 폰에 올려 테스트한다. 하지만 빠른 폰도 내부 Thread를 많이 사용하고 있다면 폰이 분명히 느려 질것이고 Ram이나 Network상황도 마찬가지 일것이다.이런 테스트를 좀 더 개발자스럽게 테스트를 하기위해 LoadTester를 소개한다. LoadTester을 통해서 지속적이고 예측 가능한 작업을 수..
안드로이드 레이아웃 리소스 네이밍 규칙 안드로이드 앱을 개발하다 보면 레이아웃 리소스가 엄청 많아 관리하기가 매우 힘들다. 레이아웃 내부에 새로운 패키지처럼 관리가 불가능하고 디렉토리도 생성 불가능 하기 때문에 레이아웃을 관리하기에 많은 어려움이 있다. 모든 안드로이드 앱 개발자들이라면 이런 불편한 점을 한두번을 격어 보았을 것이다. 그나마 좀 더 명확하고 빨리 찾고 관리 할 수 있는 방법을 추천을 하려고 한다. 보통 아래와 같은 레이아웃 리소스 네이밍으로 초반에 앱을 개발하기 시작 할 것이다. 레이아웃이 점점 늘어져 가면서 레이아웃 찾는데 한계가 느껴질것이다. setting_activity.xml main_activity.xml comment_item.xml review_fragment.xml loading_dialog.xml 그래서 좀더 ..