android imageview幕布样式动画

时间:2014-07-21 16:04:26

标签: android imageview android-animation

在Android应用程序中,我有一个imageview。我想把另一张图片放在上面。当用户触摸图像时,顶部图像将像窗帘一样向上滑动,以显示其下方的图像。当用户移开他的手指时,我将转到另一页

我怎样才能做到这一点?

enter image description here

基本上我知道我必须在" ACTION_DOWN"上实现OnTouch Listener和worl。和" ACTION_UP"案例。但我不知道的是如何做那个幕布滑动动画?因为翻译会翻译整个图像,而不仅仅是图像画布。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

通过ImageViewFrameLayout下的两个<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/parent"> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/solid_blue" android:id="@+id/img_back"/> <ImageView android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/solid_green" android:id="@+id/img_front"/> </FrameLayout> 来实现它是可能的:

ObjectAnimator mSlideAnim; 

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.curtainstyle);

    final ImageView imgFront = (ImageView) findViewById(R.id.img_front);

    FrameLayout parent = (FrameLayout) findViewById(R.id.parent);
    parent.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            int action = event.getAction();
            switch (action) {
                case MotionEvent.ACTION_DOWN:
                    if (mSlideAnim == null) {
                        triggerSlideUpAnimation(imgFront);
                    }
                    break;
                case MotionEvent.ACTION_MOVE:
                    break;
                case MotionEvent.ACTION_UP:
                case MotionEvent.ACTION_CANCEL:
                    goToAnotherPage();
                    break;
            }
            return true;
        }
    });
}

private void triggerSlideUpAnimation(ImageView imgFront) {
    int height = imgFront.getHeight();
    mSlideAnim = ObjectAnimator.ofFloat(imgFront, "translationY", 0, -height);
    mSlideAnim.setDuration(300);
    mSlideAnim.start();
}

private void goToAnotherPage() {
    Toast.makeText(this, "Go to another page", Toast.LENGTH_SHORT).show();
}

在活动中添加onTouchListener并翻译前面的ImageView将完成这项工作:

{{1}}