2017-02-18 20 views
1

Я пытаюсь получить эффект ряби в виде карты, я внедрил его, добавив атрибут android: background, как описано на странице разработчиков Android https://developer.android.com/training/material/animations.html, но я не получил эффект пульсации , то я изменил атрибут андроида: передний план, как указано в https://stackoverflow.com/a/26975714/6866139 еще я не получаю мультипликационный эффект здесь мой XML-кодНе получаю эффект пульсации на Android Lollipop CardView

<?xml version="1.0" encoding="utf-8"?> 
    <android.support.v7.widget.CardView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:card_view="http://schemas.android.com/apk/res-auto" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     card_view:cardBackgroundColor="@color/cardview_light_background" 
     card_view:cardElevation="3dp" 
     android:focusable="true" 
     android:focusableInTouchMode="true" 
     android:id="@+id/card_view" 
     android:clickable="true" 
     android:background="?android:attr/selectableItemBackground" 
     android:layout_margin="@dimen/password_list_item_card_view_layout_margin"> 


      <LinearLayout 
       android:orientation="horizontal" 
       android:layout_width="match_parent" 
       android:layout_height="70dp"> 

       <TextView 
        android:layout_width="48dp" 
        android:layout_height="48dp" 
        android:id="@+id/logo_text_holder" 
        android:layout_marginTop="12dp" 
        android:layout_marginStart="12dp" 
        android:textColor="@color/colorPrimaryDark" 
        android:background="@drawable/circle" 
        android:paddingTop="8dp" 
        android:textSize="24sp" 
        android:textAlignment="center" /> 

       <LinearLayout 
        android:orientation="vertical" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:layout_marginStart="16dp" 
        android:layout_marginTop="8dp"> 

        <TextView 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:id="@+id/name_holder" 
         android:textColor="@color/colorPrimaryDark" 
         android:textSize="24sp" /> 

        <TextView 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:id="@+id/email_holder" 
         android:textColor="@color/colorPrimaryDark" 
         android:textSize="14sp"/> 
       </LinearLayout> 
      </LinearLayout> 
    </android.support.v7.widget.CardView> 

есть ли способ осуществить это, пожалуйста, помогите мне заранее спасибо

+0

Вместо андроида: background = "? Android: attr/selectableItemBackground" использовать этот android: foreground = "? Android: attr/selectableItemBackground". –

+0

Я пробовал использовать android: foreground and android: фоновые атрибуты, но все еще не работает – RikudouSennin

ответ

0

У меня была та же проблема, внутри childView из CardView, вместо android:layout_width="match_parent" использования android:layout_width="wrap_content"

как в коде ниже:

<android.support.v7.widget.CardView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:cardBackgroundColor="@color/green" 
      android:foreground="?attr/selectableItemBackground" 
      android:background="?attr/selectableItemBackground" 
      android:stateListAnimator="@animator/lift_on_touch" 
      android:focusable="true" 
      android:clickable="true" 
      app:cardPreventCornerOverlap="false" 
      app:cardUseCompatPadding="true"> 
     <TextView 
      android:id="@+id/notification_details_med_close" 
      android:layout_width="wrap_content" 
      android:padding="10dp" 
      android:layout_gravity="center" 
      android:layout_height="wrap_content" 
      android:background="@color/green" 
      android:text="CARDVIEW" 
      android:textAppearance="?android:textAppearanceLarge" 
      android:textColor="@android:color/white" /> 
     </android.support.v7.widget.CardView> 

для подъема анимации на ощупь, создать файл аниматор ресурс lift_on_touch в animator-v21 папке

<?xml version="1.0" encoding="utf-8"?> 
<!-- animate the translationZ property of a view when pressed --> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:state_enabled="true" 
     android:state_pressed="true"> 
     <set> 
      <objectAnimator 
       android:duration="@android:integer/config_shortAnimTime" 
       android:propertyName="translationZ" 
       android:valueTo="16dp" 
       android:valueType="floatType"/> 
     </set> 
    </item> 
    <item> 
     <set> 
      <objectAnimator 
       android:duration="@android:integer/config_shortAnimTime" 
       android:propertyName="translationZ" 
       android:valueTo="0" 
       android:valueType="floatType"/> 
     </set> 
    </item> 
</selector> 

Этот поможет с эффектом дизайна материала на CardView.

Примечание: android:stateListAnimator работает с API 21 и выше.