Butter android views

1,136 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,136
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
9
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Butter android views

  1. 1. Butter Android Views 김용욱
  2. 2. ● Overdraws● Hardware acceleration● Layers● ValueAnimators● ObjectAnimators with DisplayList properties● SurfaceView vs TextureView
  3. 3. About me김용욱 (dalinaum)http://goo.gl/EPCr0안드로이드 GDE
  4. 4. Show GPU overdrawsUI 상의 불필요한 요소를 쉽게 찾을 수 있습니다. (4.2+)두개의 옵션을 활성화하십시요.
  5. 5. Worst case
  6. 6. 1x 2x 3x● blue: 1x (2회)● green: 2x● light red: 3x 4x● dark red: 4x우리의 소원은 2x
  7. 7. 왜 배경이 1x일까요? 1x 2x● window 배경 1회 3x● view 배경 1회● 1 + 1 = 귀요미? 4x꼭 윈도우 배경 제거합시다.
  8. 8. android: 1xwindowBackground 2x@null 3xgetWindow().setBackgroundDraw 4xable(null);transparent를 하지맙시다.
  9. 9. overdraw GPU 최적화?Deferred rendering을 하면 여러번 안 그립니다.대표적인 구현: SGXNvidia 테그라는 무조건 횟수만큼 그립니다.
  10. 10. 하드웨어 가속
  11. 11. 하드웨어 가속android:hardwareAccelerated="true"허니컴 이후 부터 사용 가능.이후 암시적으로 활성화되지만 명시적인게 좋다고 생각함.일부 하드웨어가 암시적인 활성화를 무시하기때문.
  12. 12. 디스플레이 리스트
  13. 13. Layer하드웨어 레이어:● 캐쉬를 FBO에 저장. (FrameBufferObject)● 한정된 영역.● view.setLayerType (View.LAYER. HARDWARE, null)소프트웨어 레이어:● 비트맵 보관● view.setLayerType (View.LAYER. SOFTWARE, null)
  14. 14. 다양한 속성에 대한 에니메이션 linearnon-linearValueAnimator: View 이외에도 대부분의 속성에대해 적용가능한 에니메이터 객체. (HC 11)
  15. 15. ValueAnimator va = ValueAnimator.ofInt(0, height); va.setDuration(700); va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener(){ public void onAnimationUpdate(ValueAnimator animation) { Integer value = (Integer) animation.getAnimatedValue(); v.getLayoutParams().height = value.intValue(); v.requestLayout(); } });
  16. 16. 에니메이션을 빠르게 하는 방법은 없나요? (JB)
  17. 17. 에니메이션을 빠르게 하는 방법은 없나 요? (JB)객체의 프로퍼티에 대한 디스플레이 리스트가 확장.(DLProps)● alpha● translationX/Y● scaleX/Y● rotationX/YViewPropertyAnimator(HC 12), ObjectAnimator (HC 11)
  18. 18. ObjectAnimatorObjectAnimator.ofFloat(myObject,"alpha", 0f).start();객체의 named property에 대한 에니메이션.
  19. 19. ViewPropertyAnimatormyView.animate().alpha(0);animatingButton.animate().setDuration(2000);(ObjectAnimator의 쉬운 방법)
  20. 20. SurfaceViews adventures inWonderlandAPI에서는 보이지만 회전, 확대, 알파 모든 것이안됩니다.SurfaceView (+GLSurfaceView)는 View 영역은아래에 Surface가 보일 수 있도록 투명하게 합니다.(홀 펀칭)
  21. 21. 대안: TextureView뷰의 모든 기능을 사용가능.GLSurfaceView등의 확장이 없기 때문에 스스로만들어 써야 함.3D 그래픽을 하는 것만 조금 까다로움. (기본 코드가 없음.)젤리빈 이상만 가능.
  22. 22. OpenGL
  23. 23. TextureView Demohttps://github.com/dalinaum/TextureViewDemohttps://play.google.com/store/apps/details?id=kr.gdg.android.textureview
  24. 24. 감사합니다.

×