본문 바로가기
[도서 정리] 안드로이드 앱 성능 최적화 #4 화면과 UI 성능 개선하기 안드로이드 앱 성능 최적화 #4 화면과 UI 성능 개선하기 이 글은 “안드로이드 앱 성능 최적화” 의 일부 내용만 정리한 것입니다.자세한 내용은 책을 구매하여 보세요~4.1. UI 성능 벤치마킹 -0~100ms 의 지연은 순간으로 인식.100~300ms 는 약간 느리다.300~1000ms 는 뭔가 기계가 동작 중이구나1000ms 이상이면 집중력을 잃기 시작한다. -웹 페이지의 경우 3~4초 안에 페이지 로딩이 되지 않으면 사용자의 50% 이상이 보던 페이지를 벗어난다.같은 논리로 앱도 당연히 빨리 시작할수록 좋다. 4.1.1. 쟁크 (Jank) -안드로이드 팀에서는 프레임 누락으로 인해 화면의 부드럽지 않음 움직임을 쟁크(jank)라고 부른다. 4.2. 안드로이드 UI 및 랜더링 성능 개선의 역사 -진저.. 2018. 6. 25.
[android] ListView scroll 할 때 Toolbar 감추기 [android] ListView scroll 할 때 Toolbar 감추기 https://mzgreen.github.io/2015/06/23/How-to-hideshow-Toolbar-when-list-is-scrolling%28part3%29 -Design Support Library 의 CoordinatorLayout 과 Behavior 를 사용하여 쉽게 구현 가능하다. -Design Support Library 를 사용하기 위해 dependencies 에 compile 을 추가해 넣어야 한다. compile 'com.android.support:appcompat-v7:22.2.0'compile 'com.android.support:recyclerview-v7:22.2.0'compile 'com.an.. 2017. 8. 5.
[android] 특정 위치에 popup window 띄우기 [android] 특정 위치에 popup window 띄우기 http://frogermcs.github.io/InstaMaterial-concept-part-4-feed-context-menu/ -꼭 popup window 를 띄우지 않아도, LinearLayout 등을 통해서도 popup window 형태를 충분히 띄울 수 있다. -메뉴를 표시하는 LinearLayout 를 하나 만든다. -menu 를 표시하는 action 이 들어오면, 메뉴 view 를 만들고, ViewTreeObserver 에 addOnPreDrawListener 를 등록한다. -listener callback 에서는 먼저 pre draw listener 를 해지해주고, menu 의 위치를 잡아준다. -위치를 잡는것은, 기준점이 되.. 2017. 7. 12.
[android] View Separator 만드는 방법들 [android] View Separator 만드는 방법들 http://envyandroid.com/archives/1193/view-separators 방법 1. VIew 사이사이에 separator 역할을 하는 view 들을 직접 삽입한다. 방법 2. API Level 11 이상에서만 가능한 건데.. Layout 속성으로 showDividers 값을 준다. 방법 3. 가장 쉬운 방법으로써 ButtonBarStyle 을 사용하는 것이다. style="?android:buttonStyle" 을 주고 android:dividerPadding 값으로 divider 들의 padding 값도 조절할 수 있다. 11, 1dp, 1px, ?android:bubttonBarStyle, Android, android:.. 2015. 4. 12.
Android Custom State 만들기. Android Custom State 만들기. selector 를 이용하면 코드에서 번잡스럽게 해결해야 하는 state 에 따른 resource change 를 아주 쉽게 처리할 수 있다.하지만, 몇몇 view 에서는 우리가 원하는 모든 state 를 지원하지 않는다. 예를 들면 LinearLayout 은 state_selected 에 대한 값을 가지고 있지 않다. 만약 state_selected 를 LinearLayout 에도 지원하고 싶다면, 다음과 같이 작성하면 된다. public class SelectableLinearLayout extends LinearLayout{private static final int[] ADDITIONAL_STATES = { android.R.attr.state_sel.. 2014. 6. 2.
android:foreground 속성은 언제 쓰이는가? android:foreground 는 android:background 와 반대되는 개념이다. android:foreground 의 경우는 main contents 를 가리면 안 되기 때문에 보통 alpha 를 먹인 이미지나 색상 등을 사용하며,어떤 item 을 선택했을 때 background selector 와 같은 효과를 볼 수 있지만, 앞쪽(컨텐츠보다 z 축으로 우리 눈쪽에 가깝게)에서 press 된 상태를 보기 위해 보통 사용된다. 말인 즉슨, 만약 어떤 버튼을 클릭하는데, 그 버튼의 컨텐츠가 버튼의 거의 전부를 cover 하고 있다면,selector를 background 로 설정했을 때, 해당 버튼을 press 하면 해당 버튼이 눌렸는지 판단하기 어렵다.이 경우 selector 를 foregro.. 2014. 4. 14.
[android] baselineAligned 속성의 정체. android, baselineAligned 속성의 정체. LinearLayout 에 포함되는, TextView 들은 글씨들의 first line 을 align 하도록 기본 설정이 되어 있다. 그래서 위와 같이 한줄짜리 text 를 가진 버튼들 중간에두줄짜리 text 를 가진 버튼이 추가되면 위와 같은 layout 이 보여진다. 이는 LinearLayout 을 상속하는 TableLayout, RadioGroup, SearchView 들과TextView 를 상속하는 Button, CheckBox, RadioButton, EditText 들도 이에 해당한다고 보면 된다. 따라서 이런 현상을 없애려면, 기본 true 로 되어있는 android:baselineAligned 값을 false 로 전환해주면 된다. .. 2014. 4. 10.
[android] why margin_bottom value is not working? android, why margin_bottom value is not working? 필자의 경우 PullToRefreshListView 를 사용하면서 ListItem 으로 여러가지 Layout 을 사용하며 margin 에 관련된 여러 가지 이슈를 발견했다. 1. ICS 이상일 경우. FrameLayout 을 이용하면 margin 값 처리에 별 문제가 없다. ICS 이상일 경우라도 RelativeLayout 의 경우는 다른 녀석은 잘 작동해도 marginBottom 값만은 제대로 먹지 않았다. 어디선가 layout_height = "wrap_content" 일 경우 제대로 동작 안 한다는 말이 있던데, list item 으로 사용되는 경우에는 wrap_content 와 상관없이 제대로 먹지 않는다. S.. 2013. 11. 15.
[android] baselineAligned ( horizontal LinearLayout text 의 align 맞추는 기능 ) baselineAligned ( horizontal LinearLayout text 의 align 맞추는 기능 ) LinearLayout 에서 orientation 을 horizontal 로 주게 되면, 첫번째 컴포넌트의 첫번째 텍스트 라인을 기준으로 나머지 컴포넌트들을 정렬시킨다. 이 기능은 performance 를 위해 disable 될 수 있다. android:baselineAligned="false" 를 주면 해결된다. 요즘은 lint 에서 자동으로 특수한 목적이 아니라면 끄는 것이 강조되고 있다. 도움이 되셨다면 손가락 꾸욱~ ( 로그인 필요 x ) 2012. 12. 3.
반응형