Move an ImageView to different position in Animated way in Android

后端 未结 4 569
轻奢々
轻奢々 2020-12-04 17:00

I have several ImageViews in a RelativeLayout. now, when user taps any of the ImageView, I want it to be moved to a specified location with subtle

4条回答
  •  爱一瞬间的悲伤
    2020-12-04 17:22

    In below code I am adding a image view in center on frame layout dynamically. After add I am increase scaling and set alpha to give zoom effect and after complete animation I am just translate my image view one position to another position.

    Add image view on framelayout

        imgHeart = new ImageView(getBaseContext());
        imgHeart.setId(R.id.heartImage);
        imgHeart.setImageResource(R.drawable.material_heart_fill_icon);
        imgHeart.setLayoutParams(new FrameLayout.LayoutParams(50, 50, Gravity.CENTER));
        mainFrameLaout.addView(imgHeart);
    

    Add animation on image view

           imgHeart.animate()
                .scaleXBy(6)
                .scaleYBy(6)
                .setDuration(700)
                .alpha(2)
                .setListener(new Animator.AnimatorListener() {
                    @Override
                    public void onAnimationStart(Animator animation) {
    
                    }
    
                    @Override
                    public void onAnimationEnd(Animator animation) {
                        imgHeart.animate()
                                .scaleXBy(-6f).scaleYBy(-6f)
                                .alpha(.1f)
                                .translationX((heigthAndWidth[0] / 2) - minusWidth)
                                .translationY(-((heigthAndWidth[1] / 2) - minusHeight))
                                .setDuration(1000)
                                .setListener(new Animator.AnimatorListener() {
                                    @Override
                                    public void onAnimationStart(Animator animation) {
                                    }
    
                                    @Override
                                    public void onAnimationEnd(Animator animation) {
                                    // remove image view from framlayout
                                    }
                                    @Override
                                    public void onAnimationCancel(Animator animation) {
                                    }
    
                                    @Override
                                    public void onAnimationRepeat(Animator animation) {
                                    }
                                }).start();
                    }
    
                    @Override
                    public void onAnimationCancel(Animator animation) {
    
                    }
    
                    @Override
                    public void onAnimationRepeat(Animator animation) {
    
                    }
                }).start();
    

提交回复
热议问题