创建一个较慢的过渡.TransitionManager.beginDelayedTransition(); 太快了

Eva*_*Dix 8 java animation android transitions

我正在创建一个过渡.单击按钮时,将执行以下方法.该方法改变了图像视图的大小,位置,并将其淡化.我正在用它TransitionManager.beginDelayedTransition(); is too fast.来减缓过渡..但它仍然太快了.我该怎么做才能减缓过渡期.谢谢.

private void moveIcon() {
    View moveableIcon = findViewById(R.id.moveableImageView);

    TransitionManager.beginDelayedTransition(myLayout);

    // change the position of the icon

    RelativeLayout.LayoutParams positionRule = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT ,

            RelativeLayout.LayoutParams.WRAP_CONTENT);
    positionRule.addRule(RelativeLayout.ALIGN_PARENT_TOP , RelativeLayout.TRUE);

    positionRule.addRule(RelativeLayout.ALIGN_PARENT_LEFT , RelativeLayout.TRUE);

    moveableIcon.setLayoutParams(positionRule);

    // change the size of the button

    ViewGroup.LayoutParams sizeRules = moveableIcon.getLayoutParams();
    sizeRules.width = 50;
    sizeRules.height = 50;
    moveableIcon.setLayoutParams(sizeRules);

    fadeOutAndHideImage(image);
}

private void fadeOutAndHideImage(final ImageView img)
{
    Animation fadeOut = new AlphaAnimation(1, 0);
    fadeOut.setInterpolator(new AccelerateInterpolator());
    fadeOut.setDuration(1000);

    fadeOut.setAnimationListener(new Animation.AnimationListener()
    {
        public void onAnimationEnd(Animation animation)
        {
            img.setVisibility(View.GONE);
        }
        public void onAnimationRepeat(Animation animation) {}
        public void onAnimationStart(Animation animation) {}
    });

    img.startAnimation(fadeOut);
}
Run Code Online (Sandbox Code Playgroud)

小智 22

尝试使用此方法: beginDelayedTransition(android.view.ViewGroup, android.transition.Transition)

AutoTransition autoTransition = new AutoTransition();
autoTransition.setDuration(3000);

TransitionManager.beginDelayedTransition(myLayout, autoTransition);
Run Code Online (Sandbox Code Playgroud)


dr_*_*lli 2

而不是使用TransitionManager.beginDelayedTransition(myLayout);使用TransitionManager.go().

最有可能使用的 TransitionTransitionManager.beginDelayedTransition(myLayout);ChangeBounds。您可以轻松地设置此 ChangeBounds 转换的持续时间,然后告诉 TransitionManager 运行它:

private void moveIcon() {
    View moveableIcon = findViewById(R.id.moveableImageView);

    // change the position of the icon 

    RelativeLayout.LayoutParams positionRule = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.WRAP_CONTENT ,

            RelativeLayout.LayoutParams.WRAP_CONTENT);
    positionRule.addRule(RelativeLayout.ALIGN_PARENT_TOP , RelativeLayout.TRUE);

    positionRule.addRule(RelativeLayout.ALIGN_PARENT_LEFT , RelativeLayout.TRUE);

    moveableIcon.setLayoutParams(positionRule);

    // change the size of the button 

    ViewGroup.LayoutParams sizeRules = moveableIcon.getLayoutParams();
    sizeRules.width = 50;
    sizeRules.height = 50;
    moveableIcon.setLayoutParams(sizeRules);

    ChangeBounds myTransition = new ChangeBounds();
    myTransition.setDuration(1000L);
    TransitionManager.go(new Scene(myLayout), myTransition);

    fadeOutAndHideImage(image);
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。