[android] Material Design Touch Ripple을 ImageButton에 적용 하시겠습니까?

잔물결 효과가 내장 된 롤리팝의 일반 버튼과 달리 정적 인 이미지이기 때문에 클릭시 터치 애니메이션으로 반응하지 않는 이미지 버튼이 있습니다. 머티리얼 디자인 리플 터치 효과를 이미지에 추가하고 싶지만 구현 방법을 찾을 수없는 것 같습니다. 이미지 위에 컬러 필터를 설정할 수 있지만 그것은 파급 효과가 아닙니다. 제가하려는 작업의 예는 Google Play 뮤직에서 앨범 표지 이미지를 잡고 이미지를 가로 질러 그림자 물결이 움직이는 경우입니다.



답변

더 나은 결과를 위해 :

<ImageButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@android:drawable/ic_button"
    android:background="?attr/selectableItemBackgroundBorderless"
/>


답변

다음과 같이 ImageButton에 배경을 추가 할 수 있습니다.

<ImageButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@android:drawable/btn_dialog"
    android:background="?android:attr/selectableItemBackground" />


답변

i.shadrin ( 여기 )과 Nicolars ( 여기 ) 로부터 좋은 답변을 받았습니다 .

그들의 대답의 차이점은 ?attr/selectableItemBackgroundBorderless당신에게을 줄 수 있다는 android.view.InflateException것이므로 ?android:attr/selectableItemBackground해결책입니다.

FWIW, 첫 번째 답변이 모든 이전 프로젝트에서 제대로 작동했기 때문에 예외가 발생하는 이유를 모르겠지만 최근 프로젝트에서는 그렇지 않았습니다 (아마도 앱 테마 = android:Theme.Material?).

이상한 일은 잔물결 효과가 표시되었지만 ImageButton을 벗어나는 것이므로 해결책은 다음과 같습니다.

  • android:foreground="?android:attr/selectableItemBackgroundBorderless"대신 사용하려면android:background="?android:attr/selectableItemBackgroundBorderless"

당신이 같은 상황에 직면한다면 도움이되기를 바랍니다.


답변

이미 배경이 있고 변경하지 않으려면 전경을 사용하십시오.

<ImageButton
    android:layout_width="60dp"
    android:layout_height="match_parent"
    android:background="@drawable/preview_in_4k_background"
    android:src="@drawable/ic_full_screen_24px"
    android:layout_marginLeft="5dp"
    android:foreground="?attr/selectableItemBackgroundBorderless"
    android:layout_column="2"/>


답변