Translate and Scale animation in parallel

前端 未结 2 1285
一生所求
一生所求 2020-12-15 23:38

I want to move some view from any position to center of screen and scale in parallel. If that\'s too complicated, translate and sca

相关标签:
2条回答
  • 2020-12-16 00:29

    The core idea is:

    AnimationSet animationSet = new AnimationSet(true);
    
    animationSet.addAnimation(
      new TranslateAnimation(0f, 64f, 0f, 32f),
      new ScaleAnimation(1f, 0f, 1f, 0f, ScaleAnimation.RELATIVE_TO_PARENT, 0f, ScaleAnimation.RELATIVE_TO_PARENT, 0f););
    
    myView.startAnimation(
      animationSet);
    
    0 讨论(0)
  • After quite a few hopeless trials, I made it, which is too astonishing.

    Below is the code, it can be used to move any view in a layout to the center of that layout:

    private void moveViewToScreenCenter( final View view ){
        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics( dm );
    
        int originalPos[] = new int[2];
        view.getLocationOnScreen( originalPos );
    
        int xDelta = (dm.widthPixels - view.getMeasuredWidth() - originalPos[0])/2;
        int yDelta = (dm.heightPixels - view.getMeasuredHeight() - originalPos[1])/2;
    
        AnimationSet animSet = new AnimationSet(true);
        animSet.setFillAfter(true);
        animSet.setDuration(1000);
        animSet.setInterpolator(new BounceInterpolator());
        TranslateAnimation translate = new TranslateAnimation( 0, xDelta , 0, yDelta);
        animSet.addAnimation(translate);
        ScaleAnimation scale = new ScaleAnimation(1f, 2f, 1f, 2f, ScaleAnimation.RELATIVE_TO_PARENT, .5f, ScaleAnimation.RELATIVE_TO_PARENT, .5f);
        animSet.addAnimation(scale);
        view.startAnimation(animSet);
    }
    
    0 讨论(0)
提交回复
热议问题