Android – 点击列表项时滑动片段

我正在尝试实现滑动动画从fragment1转换到fragment2,如
this image.

首先,我尝试用set和translate实现xml,但是我得到了RuntimeException“Unknown animator name translate”.

<?xml version="1.0" encoding="utf-8"?>
<set
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:interpolator="@android:anim/accelerate_interpolator">
     <translate
       android:fromXDelta="0%p"
       android:toXDelta="-100%p"
       android:duration="500">
     </translate>
</set>

其次,我试图通过使用扩展framelayout的类来解决问题,并添加“getXFraction”和“setXFraction”方法,如this post

public class SlidingFrameLayout extends FrameLayout
{
    private static final String TAG = SlidingFrameLayout.class.getName();
    public SlidingFrameLayout(Context context) {
        super(context);
    }

    public SlidingFrameLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public float getXFraction()
    {
        final int width = getWidth();  
        if(width != 0) return getX() / getWidth();  
        else return getX();  
    }

    public void setXFraction(float xFraction) {
        final int width = getWidth();  
        setX((width > 0) ? (xFraction * width) : -9999);  
    }

    public float getYFraction()
    {
        final int height = getHeight();  
        if(height != 0) return getY() / getHeight(); else return getY();   
    }

    public void setYFraction(float yFraction) {
        final int height = getHeight();  
        setY((height > 0) ? (yFraction * height) : -9999);  
    }
}

但我仍然不知道我应该如何使用SlidingFrameLayout?
请帮我. T___T

最佳答案 您需要使用objectAnimator而不是translate.以下是一些带有示例的帖子:
Animate the transition between fragments
Android Fragments and animation

点赞