[android] Render thread & Ripple ( Ripple 흉내내기 ) |
참조 : http://frogermcs.github.io/InstaMaterial-concept-part-3-feed-and-comments-buttons/
-
Animation 등이 조금 더 general 하게 발전하면서, 모든 View operation 을 UI Thread ( Main Thread ) 에서만 처리하던 것이 문제가 되고 있다.
그래서 롤리팝에서부터는 Render thread 라는 게 생겨나서 rendering 과 main thread 가 분리되었다.
Main thread 에서 atomic animation 을 만들어서 render thread 로 넘긴다.
그래서 Rendering thread 에서 animation 을 하는 도중에도 main thread 에서는 activity inflating 과 같은 heavy job 을 하면서 버벅이거나 ANR 이 발생하지 않는다.
-
앞서 언급했듯이 Render Thread 자체가 LOS 부터 나왔기 때문에,
Render thread 가 없는 pre-api 21 버전에서는 Ripple 을 쓰는게 권장되지 않는다.
Open source 로 나온 녀석도 결국 뭔가 감싸서 뭔가를 하는 형태라 꽤나 소스 유지보수 측면에서 더러워질 수 있다.
만약 그래도 pre 21 에서 Ripple 과 뭔가 비슷하게 effect 를 주고 싶다면,
다음과 같은 shape selector 를 사용하면 된다.
( 참고로 enterFadeDuration, exitFadeDuration 은 api level 11 부터 )
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:enterFadeDuration="200"
android:exitFadeDuration="200">
<item android:state_pressed="false">
<shape android:shape="oval">
<solid android:color="@android:color/transparent" />
</shape>
</item>
<item android:state_pressed="true">
<shape android:shape="oval">
<solid android:color="#6621425d" />
</shape>
</item>
</selector>
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[android] RecyclerView 에 대한 맛보기 이야기 (0) | 2016.09.23 |
---|---|
[android] button 에 shake anim 효과 주기 (0) | 2016.09.22 |
[android] ViewAnimator 뭐하는 녀석이야? (0) | 2016.09.05 |
[android] Binder Tokens 에 대해 이해해보자. (0) | 2016.05.26 |
[Android] Ok Google (0) | 2016.04.09 |
댓글