2017-11-08 8 views
0

RecyclerView의 모든 목록 항목에 대해 표준 변경되지 않은 스위치 클래스가 있습니다 (항목을 설정 또는 해제). 일반적으로 안드로이드의 스위치는 스위치가 제자리에 들어가고 작은 거품 애니메이션이 나타나는 멋진 기본 애니메이션을 가지고 있습니다. 필자의 경우 스위치는 애니메이션없이 최종 위치로 점프합니다. 여기 내 레이아웃입니다 :스위치 - Android에서 기본 애니메이션을 활성화하는 방법

<Switch 
    android:id="@+id/alarm_toggle" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentEnd="true" 
    android:layout_centerVertical="true" 
    android:checked="true" 
    android:focusable="false" 
    android:focusableInTouchMode="false" 
    android:animateLayoutChanges="true" 
    android:padding="10dp" /> 

속성 android:animateLayoutChanges="true"이 적용되지 않습니다. Android M 및 O에서 시도했습니다. 어떻게 표준 애니메이션을 활성화 할 수 있습니까?

+0

스위치를 전환하면 모든 Java 코드 (특히'notifyDataSetChanged() '또는 이와 비슷한 것으로 호출되는 코드)가 트리거됩니까? –

+0

사실, 예, AsyncTask에서 실행되는 장기 실행 작업이 있지만 분명히 UI 스레드를 어떻게 든 차단합니다. 코드를 주석 처리하고 애니메이션이 작동합니다. 답변을 게시 해주십시오. 동의하겠습니다. 감사! –

답변

0

Switch을 실행하면 모든 자바 코드가 실행되므로 애니메이션이 재생되는지 여부에 영향을 줄 수 있습니다. 아마도 notifyDataSetChanged() (또는 이와 비슷한)을 호출하는 무언가가있을 것이므로 RecyclerView 전체를 즉시 다시 그릴 수 있습니다. 또는 실수로 UI 스레드를 차단하여 모든 종류의 애니메이션을 막을 수 있습니다.