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);
}
});
它会上升而不是下降,即使我将值设置为负值,但由于某种原因它会消失,或者至少看起来是这样@机器