IT박스

Android-L CardView 비주얼 터치 피드백

itboxs 2020. 11. 19. 07:59
반응형

Android-L CardView 비주얼 터치 피드백


아무도 CardView 내에서 Google I / O 2014에서 시연 된 시각적 터치 피드백 중 일부를 구현하는 방법을 설명 할 수 있습니다.

XML에서 CardView를 사용하는 방법은 다음과 같습니다. 내가 놓친 작은 것이있을 수 있으므로 누군가 나를 도울 수 있는지 궁금했습니다.

<!-- A CardView -->
<android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/CardView_1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_marginTop="10dp" 
    card_view:cardCornerRadius="4dp"
    android:elevation="2dp">

    <LinearLayout
        android:id="@+id/LinearLayout_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:onClick="RunSomeMethod"">

    <!-- Main CardView Content In Here-->

    </LinearLayout> </android.support.v7.widget.CardView>

API 11 이상 :

요소에 추가 android:foreground="?android:attr/selectableItemBackground"하십시오 CardView.

API 9 이상 :

요소에 추가 android:foreground="?selectableItemBackground"하십시오 CardView.


편집 : 터치 포인트가 아닌 중앙에서 발생하는 잔물결이 알려진 버그이며 수정되었습니다 .


에 선택을 그리려면 사전 롤리팝사후 롤리팝은 정확하게 다음과 같은 방법을 사용할 수 있습니다 (아이디어가 사용하는 삽입 과 선택의 당김 둥근 - 용도의 사용자 정의 색상 아래 샘플, 기본적으로 변경할 수 있습니다 사전 롤리팝에 대한 모서리) :

android:foreground="@drawable/card_foreground"

롤리팝 이후

drawable-v21 / card_foreground.xml

<ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="#20000000"
        android:drawable="@drawable/card_foreground_selector" />

drawable-v21 / card_foreground_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape android:shape="rectangle">
            <solid android:color="#18000000"/>
        </shape>
    </item>
    <item android:state_focused="true" android:state_enabled="true">
        <shape android:shape="rectangle">
            <solid android:color="#0f000000"/>
        </shape>
    </item>
</selector>

사전 롤리팝

drawable / card_foreground.xml (카드 높이에 따라 삽입 값을 조정해야 함)

<inset xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/card_foreground_selector"
    android:insetLeft="2dp"
    android:insetRight="2dp"
    android:insetTop="4dp"
    android:insetBottom="4dp"/>

드로어 블 /card_foreground_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape android:shape="rectangle">
            <solid android:color="#18000000"/>
            <corners android:radius="@dimen/card_radius" />
        </shape>
    </item>
    <item android:state_focused="true" android:state_enabled="true">
        <shape android:shape="rectangle">
            <solid android:color="#0f000000"/>
            <corners android:radius="@dimen/card_radius" />
        </shape>
    </item>
</selector>

이것은 내 경우에 도움이되었습니다.

배경:

찬성 하는 CardView무시 android:backgroundapp:cardBackground색상 만 가능합니다. 테두리와 그림자는 사실 배경의 일부이므로 직접 설정할 수 없습니다.

해결책:

Make the layout inside the CardView clickable instead of the card itself. You already wrote both attributes needed for this layout:

android:clickable="true"
android:background="?android:selectableItemBackground"

Here is my solution. It uses ripple for lollipop+ and static foreground for pre-lollipop devices.

<android.support.v7.widget.CardView
    ...
    android:foreground="?android:attr/selectableItemBackground">

참고URL : https://stackoverflow.com/questions/24475150/android-l-cardview-visual-touch-feedback

반응형