【Android】Ripple Effect 구현에 대해
소개
Android에서 터치 피드백이라고하면 Ripple입니다
발표되고 나서 시간도 서 있습니다만, Lolipop ~ Oreo까지(Pie에서도 아마 OK)로 움직이도록(듯이) 대응했으므로 정리합니다. CardView를 사용한 구현, 색상 지정에 대해 설명합니다.
Ripple
샘플 코드
운영 환경
대상 OS
구현 정보
디자인
RippleDrawable 생성
ripple.xml
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/red">
<item
android:id="@android:id/mask"
android:drawable="@android:color/white"/>
</ripple>
item
는 화면을 터치 한 손가락을 놓은 타이밍에서 Ripple을 표시하도록 지정합니다.레이아웃 XML(기술을 생략하기 위해 클래스만 기재)
layout.xml
<android.support.v7.widget.CardView
android:clickable="true"
android:foreground="@drawable/ripple"
>
<RelativeLayout>
<ImageView/>
<RelativeLayout>
<RelativeLayout>
<TextView/>
<TextView/>
</RelativeLayout>
<LinearLayout>
<android.support.v7.widget.CardView
android:clickable="true"
android:foreground="@drawable/foreground_ripple">
<TextView
android:id="@+id/read_button_text"/>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView
android:clickable="true"
android:foreground="@drawable/foreground_ripple">
<TextView/>
</android.support.v7.widget.CardView>
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
</android.support.v7.widget.CardView>
android:clickable="true" android:foreground="@drawable/foreground_ripple"
를 지정하면 Ripple이 표시됩니다. 빨간색 터치 피드백이 표시되어야 합니다. Ripple에 색상 지정
MainActivity.kt
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { //①
val rippleColors = intArrayOf(R.color.colorAccent, R.color.colorPrimary, R.color.colorPrimaryDark,
R.color.medium_turquoise, R.color.eclipse, R.color.malibu
)
val i = Random().nextInt(rippleColors.size)
val mask = ContextCompat.getDrawable(context, R.drawable.mask)
val color = ContextCompat.getColor(context, rippleColors[i])
holder.root.foreground = RippleDrawable(ColorStateList.valueOf(color), null, mask).mutate()
}
끝에
추가
Reference
이 문제에 관하여(【Android】Ripple Effect 구현에 대해), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yst_i/items/437cbfccfd829cfdd649텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)