当前位置: 首页 > 面试题库 >

动画后移动imageview(更新位置)

竺承望
2023-03-14
问题内容

我正在尝试从屏幕的底部到中间在图像视图上进行翻译动画。动画完成后,我希望图像视图停留在那里。我不要setFillAfter(true),因为我想更新imageview的实际位置。

目前,我通过具有2个图像视图(在动画开始时一个,在结束时一个)来做到这一点,并且我使用setVisibility来实现此目的。这是做事的正确方法吗?这是我使用的代码:

<ImageView
    android:id="@+id/ivStart"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:background="@drawable/typer_step_1"
    android:gravity="center"
     />



<ImageView
    android:id="@+id/ivMiddle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:background="@drawable/typer_step_1"
    android:gravity="center"
    android:visibility="invisible"
     />








     TranslateAnimation translate = new TranslateAnimation(0, mDestLoc1[0]-mSrcLoc1[0], 0, mDestLoc1[1]-mSrcLoc1[1]);                   
translate.setDuration(2000);
translate.setAnimationListener(new AnimationListener(){

    @Override
    public void onAnimationStart(Animation animation) {}

    @Override
    public void onAnimationEnd(Animation animation) {
        ivMiddle.setVisibility(View.VISIBLE)
                        ivStart.setVisibility(View.INVISIBLE)


    }

    @Override
    public void onAnimationRepeat(Animation animation) {}

});

ivStart.startAnimation(translate);

问题答案:

然后,必须LayoutParams为要设置动画的View 设置new 。动画制作完毕后,请onAnimationEnd设置您的新位置View

     TranslateAnimation translate = new TranslateAnimation(0, mDestLoc1[0]-mSrcLoc1[0], 0, mDestLoc1[1]-mSrcLoc1[1]);                   
     translate.setDuration(2000);
     translate.setAnimationListener(new AnimationListener(){

         @Override
         public void onAnimationStart(Animation animation) {}

         @Override
         public void onAnimationEnd(Animation animation) {
             RelativeLayout.LayoutParams par = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
             par.topMargin = mDestLoc1[1]-mSrcLoc1[1];
             par.leftMargin = mDestLoc1[0]-mSrcLoc1[0];
             view.setLayoutParams(par);              
         }

         @Override
         public void onAnimationRepeat(Animation animation) {}

     });

     view.startAnimation(translate);


 类似资料:
  • 我是新来的动画在Android和搜索了很多关于移动上下一个ImageView,但有很多tuts关于移动左到右.我找不到一个tut向上和向下移动.可以请任何人告诉我如何才能实现这一点?我在这里添加一些代码,我已经学会了从YouTube向左向右移动一个图像(imga是ImageView)-

  • 因此,虽然我的TranslateAnimation经过了10秒的动画,但它的位置实际上根本没有更新。 它唯一更新的时间是动画完成时。 那么,如何让TranslateAnimation在设置动画时更新其位置呢? 通过更新其位置,我的意思是,如果我检查其位置,即;视图的上下左右坐标,如果它移动了,我应该得到一组不同的数字。 但是在这种情况下,我得到了视图的原始位置的位置,这不是我想要的。我想要视图在动

  • 我的RecyclView defaultItemAnimator有问题。当我使用elle fyItemRemve()删除我的一个项目时,我还会在另一个特定索引上调用elle fyItemChanged()来更改其中的文本。在删除动画期间,我在其上调用的项目通知fyItemChanged()会更改其文本,但会做一些看起来很傻的动画,像拇指疼痛一样突出。(它会立即移动到新位置,而其余的则会顺利移动到新

  • 本文向大家介绍JS div匀速移动动画与变速移动动画代码实例,包括了JS div匀速移动动画与变速移动动画代码实例的使用技巧和注意事项,需要的朋友参考一下 1.匀速移动代码 2.变速移动代码 common.js 以上所述是小编给大家介绍的JS div匀速移动动画与变速移动动画详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对呐喊教程网站的支持!

  • 我试图在登录窗口(stage)内创建一个精灵动画,使用JavaFX,一旦用户获得登录和密码信息,就会播放该动画。我试图使用Michael Heinrichs在他的博客文章中发布的关于使用JavaFX的sprite动画的类,但我无法使其工作,主要是因为我不知道如何在ImageView中创建这个动画,而不使用start方法(在我的情况下也不起作用)。 这是我在登录阶段的FXML文件中的代码: 在控制器

  • 嗨,我有一个问题,我的网站上的动画。我有两个div,一个有100%的高度,如果我悬停在它上面,它会下降2个rems,而这个元素下的所有其他内容也会下降。我该怎么修好它?下面是指向简单示例的链接:jsfiddle null null