butter android views

33
Butter Android Views 김용욱

Upload: leonardo-kim

Post on 10-May-2015

430 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: Butter android views

Butter Android Views김용욱

Page 2: Butter android views

● Overdraws● Hardware acceleration● Layers● ValueAnimators● ObjectAnimators with DisplayList properties● SurfaceView vs TextureView

Page 3: Butter android views

About me

김용욱 (dalinaum)http://goo.gl/EPCr0안드로이드 GDE

Page 4: Butter android views

Show GPU overdraws

UI 상의 불필요한 요소를 쉽게 찾을 수 있습니다. (4.2+)

두개의 옵션을 활성화하십시요.

Page 5: Butter android views
Page 6: Butter android views

Worst case

Page 7: Butter android views

● blue: 1x (2회)● green: 2x● light red: 3x● dark red: 4x

우리의 소원은 2x

1x

2x

3x

4x

Page 8: Butter android views

왜 배경이 1x일까요?

● window 배경 1회● view 배경 1회● 1 + 1 = 귀요미?

꼭 윈도우 배경 제거합시다.

1x

2x

3x

4x

Page 9: Butter android views

android:windowBackground @null

getWindow().setBackgroundDrawable(null);

transparent를 하지 맙시다.

1x

2x

3x

4x

Page 10: Butter android views

overdraw GPU 최적화?

Deferred rendering을 하면 여러번 안 그립니다.

대표적인 구현: SGX

Nvidia 테그라는 무조건 횟수만큼 그립니다.

Page 11: Butter android views

하드웨어 가속

Page 12: Butter android views

하드웨어 가속

android:hardwareAccelerated="true"

허니컴 이후 부터 사용 가능.

이후 암시적으로 활성화되지만 명시적인게 좋다고 생각함.

일부 하드웨어가 암시적인 활성화를 무시하기 때문.

Page 13: Butter android views
Page 14: Butter android views

디스플레이 리스트

Page 15: Butter android views
Page 16: Butter android views

Layer하드웨어 레이어:● 캐쉬를 FBO에 저장.

(FrameBufferObject)● 한정된 영역.● view.setLayerType

(View.LAYER.HARDWARE, null)

소프트웨어 레이어:● 비트맵 보관● view.setLayerType

(View.LAYER.SOFTWARE, null)

Page 17: Butter android views
Page 18: Butter android views

다양한 속성에 대한 에니메이션

ValueAnimator: View 이외에도 대부분의 속성에 대해 적용가능한 에니메이터 객체. (HC 11)

linear

non-linear

Page 19: Butter android views

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(); } });

Page 20: Butter android views

에니메이션을 빠르게 하는 방법은 없나요? (JB)

Page 21: Butter android views

에니메이션을 빠르게 하는 방법은 없나요? (JB)

객체의 프로퍼티에 대한 디스플레이 리스트가 확장.(DLProps)

● alpha● translationX/Y● scaleX/Y● rotationX/YViewPropertyAnimator(HC 12), ObjectAnimator (HC 11)

Page 22: Butter android views
Page 23: Butter android views

ObjectAnimator

ObjectAnimator.ofFloat(myObject, "alpha", 0f).start();

객체의 named property에 대한 에니메이션.

Page 24: Butter android views

ViewPropertyAnimator

myView.animate().alpha(0);

animatingButton.animate().setDuration(2000);

(ObjectAnimator의 쉬운 방법)

Page 25: Butter android views

SurfaceView's adventures in Wonderland

API에서는 보이지만 회전, 확대, 알파 모든 것이 안됩니다.SurfaceView (+GLSurfaceView)는 View 영역은 아래에 Surface가 보일 수 있도록 투명하게 합니다.(홀 펀칭)

Page 26: Butter android views

대안: TextureView

뷰의 모든 기능을 사용가능.

GLSurfaceView등의 확장이 없기 때문에 스스로 만들어 써야 함.

3D 그래픽을 하는 것만 조금 까다로움. (기본 코드가 없음.)

젤리빈 이상만 가능.

Page 27: Butter android views
Page 28: Butter android views
Page 29: Butter android views
Page 30: Butter android views
Page 31: Butter android views

OpenGL

Page 32: Butter android views

TextureView Demo

https://github.com/dalinaum/TextureViewDemohttps://play.google.com/store/apps/details?id=kr.gdg.android.textureview

Page 33: Butter android views

감사합니다.