2016-04-21 6 views
0

Я пытаюсь анимировать мой взгляд на представление вне макета родителей. Как сказано в других вопросах, мне нужно будет использовать:Анимация просмотра из макета родительского макета с помощью CardView

 android:clipChildren="false" 
     android:clipToPadding="false" 

Что отлично работает для нормального просмотра! Однако мне нужно анимировать представление из CardView. По какой-то причине, когда мой взгляд внутри CardView, он не анимируется, он просто останавливается на границе.

Мой файл макета очень просто, просто LinearLayout, некоторые виды и cardview с точки зрения оживляющий внутри что:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:orientation="vertical" 
android:clipChildren="false" 
android:clipToPadding="false"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Hello World!" /> 

<android.support.v7.widget.CardView 
    android:layout_width="350dp" 
    android:layout_height="200dp" 
    android:clipChildren="false" 
    android:clipToPadding="false"> 
    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:clipChildren="false" 
     android:clipToPadding="false"> 
     <View 
      android:id="@+id/animate" 
      android:layout_width="25dp" 
      android:layout_height="25dp" 
      android:background="@android:color/holo_red_light"/> 
    </LinearLayout> 
</android.support.v7.widget.CardView> 

</LinearLayout> 

код я использую для анимации:

View view = findViewById(R.id.animate); 
    ObjectAnimator animation2 = ObjectAnimator.ofFloat(view, "translationY", -500); 
    animation2.setDuration(5000); 
    animation2.setTarget(view); 
    animation2.start(); 

Проблема прямо сейчас заключается в том, что при использовании CardView вид прекращает анимацию на границе. Он просто исчезает. Когда я использую обычный FrameLayout, он выполняет анимацию из родителя.

Есть ли странное поведение, которое я пропускаю с помощью CardView и оживляю из него?

ответ

2

Оказывается, что на CardView

cardView.setClipToOutline(false); 

должен быть вызван. Это предотвращает исчезновение предмета на границе.

+1

Требуется минимум API 21, мне нужно решение для API 16 –