如何实现幻灯片在android中显示动画?

时间:2015-07-05 08:30:54

标签: android animation

我创建了5个活动,每个活动都有一个仅包含图像的ListView。我使用了一个简单的滑动动画来改变活动。

以下是相关代码:

@Override
public boolean onTouchEvent(MotionEvent event) {
    if (gestureDetector.onTouchEvent(event)) {
        return true;
    }
    return super.onTouchEvent(event);
}

private void onLeftSwipe() {
    Intent intent = new Intent(HimachalActivity.this, IndianWildlifeActivity.class);
    startActivity(intent);
    overridePendingTransition(R.anim.slide_left_in, R.anim.slide_left_out);
}

private void onRightSwipe() {
    Intent intent = new Intent(HimachalActivity.this, BaseActivity.class);
    startActivity(intent);
    overridePendingTransition(R.anim.slide_right_in, R.anim.slide_right_out);
}

private class SwipeGestureDetector extends GestureDetector.SimpleOnGestureListener {
    // Swipe properties, you can change it to make the swipe
    // longer or shorter and speed
    private static final int SWIPE_MIN_DISTANCE = 120;
    private static final int SWIPE_MAX_OFF_PATH = 200;
    private static final int SWIPE_THRESHOLD_VELOCITY = 200;

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2,
                           float velocityX, float velocityY) {
        try {
            float diffAbs = Math.abs(e1.getY() - e2.getY());
            float diff = e1.getX() - e2.getX();

            if (diffAbs > SWIPE_MAX_OFF_PATH)
                return false;

            // Left swipe
            if (diff > SWIPE_MIN_DISTANCE
                    && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
                HimachalActivity.this.onLeftSwipe();

                // Right swipe
            } else if (-diff > SWIPE_MIN_DISTANCE
                    && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
                HimachalActivity.this.onRightSwipe();
            }
        } catch (Exception e) {
            Log.e("BaseActivity", "Error on gestures");
        }
        return false;
    }
}

问题是,只有在完全滑动并且动画感觉不顺畅之后,下一个活动或上一个活动才会打开。

我想要一个动画,当我开始滑动时,下一个活动或上一个活动开始显示自己。是否有可以应用的内置动画。如果没有,请指出我自己创建一个相关资源,可能是一个不需要我修改现有代码的资源。谢谢。

2 个答案:

答案 0 :(得分:2)

据我所知,这个功能在Lollipop材料设计模块中很容易获得。

答案 1 :(得分:1)

我估计,如果你遵循@Whitney的建议会更容易。将您的片段放入视图寻呼机中,如下所述:http://developer.android.com/training/animation/screen-slide.html

它不适用于您当前的实现的原因是,只有在您 flinged 之后,设备才会理解手势。此后,动画发生。实时未检测到Fling。如果您想实现实时投掷,可能必须覆盖触摸事件,如下所述:http://developer.android.com/training/custom-views/making-interactive.html