Android 平移视图动画跳到终点

Android 平移视图动画跳到终点,android,animation,android-view,android-recyclerview,Android,Animation,Android View,Android Recyclerview,我正在尝试创建一个动画,其中显示了一个布局,当我按下它时,另一个布局会在下面淡出 因为我想把它放在一个回收视图中,所以我想在第二个布局显示之前,分隔器向下滑动 我遇到的问题是,分割线没有设置向下移动的动画,它只是直接向下跳 这是我的密码: package com.example.itayrabin.layouttest; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; im

我正在尝试创建一个动画,其中显示了一个布局,当我按下它时,另一个布局会在下面淡出

因为我想把它放在一个回收视图中,所以我想在第二个布局显示之前,分隔器向下滑动

我遇到的问题是,分割线没有设置向下移动的动画,它只是直接向下跳

这是我的密码:

package com.example.itayrabin.layouttest;

import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AccelerateInterpolator;
import android.widget.LinearLayout;

import butterknife.ButterKnife;
import butterknife.InjectView;

public class rvAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>     implements View.OnClickListener {

private Context mContext;

public rvAdapter(Context context) {
    mContext = context;
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    final View view = LayoutInflater.from(mContext).inflate(R.layout.layout,parent,false);
    final TestViewHolder holder = new TestViewHolder(view);
    holder.llContent.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            holder.llExpendedContent.setVisibility(View.INVISIBLE);

            holder.vDivider.animate()
                    .translationY(holder.llExpendedContent.getMeasuredHeight())
                    .setDuration(500)
                    .setListener(new AnimatorListenerAdapter() {
                        @Override
                        public void onAnimationEnd(Animator animation) {
                            super.onAnimationEnd(animation);

                            holder.llExpendedContent.setVisibility(View.VISIBLE);
                        }
                    }).start();
        }
    });
    return holder;
}

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
}

@Override
public int getItemCount() {
    return 20;
}

@Override
public void onClick(View v) {
    if (v.getId() == R.id.llContent){

    }
}


public static class TestViewHolder extends RecyclerView.ViewHolder {


    @InjectView(R.id.llExpendedContent)
    LinearLayout llExpendedContent;
    @InjectView(R.id.vDivider)
    View vDivider;
    @InjectView(R.id.llContent)
    LinearLayout llContent;

    public TestViewHolder(View view) {
        super(view);

        ButterKnife.inject(this,view);

    }

}
}
package com.example.itayrabin.layouttest;
导入android.animation.Animator;
导入android.animation.AnimatorListenerAdapter;
导入android.content.Context;
导入android.support.v7.widget.RecyclerView;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.view.animation.AccelerateInterpolator;
导入android.widget.LinearLayout;
进口毛刀,毛刀;
导入butterknife.InjectView;
公共类rvAdapter扩展了RecyclerView。适配器实现了View.OnClickListener{
私有上下文;
公共rvAdapter(上下文){
mContext=上下文;
}
@凌驾
public RecyclerView.ViewHolder onCreateViewHolder(视图组父级,int-viewType){
最终视图=LayoutFlater.from(mContext)。充气(R.layout.layout,parent,false);
最终TestViewHolder=新的TestViewHolder(视图);
holder.llContent.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
holder.lExpendedContent.setVisibility(View.INVISIBLE);
holder.vDivider.animate()
.translationY(holder.lExpendedContent.getMeasuredHeight())
.设定持续时间(500)
.setListener(新的AnimatorListenerAdapter(){
@凌驾
AnimationEnd上的公共无效(Animator动画){
super.onAnimationEnd(动画);
holder.lExpendedContent.setVisibility(View.VISIBLE);
}
}).start();
}
});
报税表持有人;
}
@凌驾
BindViewHolder上的公共无效(RecyclerView.ViewHolder,int位置){
}
@凌驾
public int getItemCount(){
返回20;
}
@凌驾
公共void onClick(视图v){
if(v.getId()==R.id.llContent){
}
}
公共静态类TestViewHolder扩展了RecyclerView.ViewHolder{
@InjectView(R.id.lExpendedContent)
线性布局,包括详细内容;
@InjectView(R.id.vDivider)
视图驱动器;
@InjectView(R.id.llContent)
线性布局内容;
公共TestViewHolder(视图){
超级(视图);
注入(这个,视图);
}
}
}
这是单行的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="wrap_content" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
android:orientation="vertical" android:id="@+id/llContent" android:clickable="true">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:id="@+id/llMainContent"
    android:layout_weight="1">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:text="Bread(5)"
        android:textColor="@color/abc_primary_text_material_light"
        android:textStyle="bold" />

    <View
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:text="15.3 Dollars"/>
</LinearLayout>

<LinearLayout
    android:id="@+id/llExpendedContent"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:orientation="horizontal"
    android:layout_weight="1"
    android:visibility="gone">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:text="Milk(10)"
        android:textColor="@color/abc_primary_text_material_light"
        android:textStyle="bold" />

    <View
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:text="60 Dollars"/>

    </LinearLayout>

<View
    android:id="@+id/vDivider"
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:background="#eeeeee" />

(如您所见,我使用的是ButterKnife,因为它易于使用。)


在动画持续时间之后,第二个布局确实出现了,因此它不像动画没有播放或什么的,只是它直接向下跳。

您是否尝试过使用
y(float)
?还有,<代码>开始()是多余的

        holder.vDivider.animate()
                .y(holder.llExpendedContent.getMeasuredHeight())
                .setDuration(500)
                .setListener(new AnimatorListenerAdapter() {
                    @Override
                    public void onAnimationEnd(Animator animation) {
                        super.onAnimationEnd(animation);

                        holder.llExpendedContent.setVisibility(View.VISIBLE);
                    }
                });

它会上升而不是下降,即使我将值设置为负值,但由于某种原因它会消失,或者至少看起来是这样@机器