【问题标题】:How to do animations in views in Android?如何在 Android 的视图中制作动画?
【发布时间】:2012-03-07 13:35:08
【问题描述】:

我为我的要求浏览了很多 tuts 和示例,但我仍然认为我在某个地方遗漏了一些东西。我正在尝试使用上滑和下滑动画来隐藏和显示视图。

这就是我要找的东西

图 1(在单击按钮 1 之前)

============================
|       view1              |
============================
| button 1 |
============

图2(点击按钮1后)

============================
|       view1              |
============================
|                          | 
|       view 2             |
|                          |
============================
| button 1 |
============

如您所见,我想在单击按钮 1 时显示和隐藏 view2。

我已经通过以下代码做到了这一点。隐藏:

TranslateAnimation slide = new TranslateAnimation(0, 0,0,-200);
slide.setDuration(1000);
slide.setFillAfter(true);
view2.startAnimation(slide);
view2.setVisibility(View.GONE);

显示:

TranslateAnimation slide = new TranslateAnimation(0, 0,-200,0);
slide.setDuration(1000);
slide.setFillAfter(true);
view2.startAnimation(slide);
view2.setVisibility(View.VISIBLE);

这工作正常,但两个代码中的唯一问题是“Gone”和“Visible”代码在动画完成之前完成。即“按钮 1”在单击以显示时向下移动,动画稍后完成。隐藏也是如此,如果完成,“按钮 1”会在动画之前向上移动。

我想随动画一起移动按钮。

【问题讨论】:

    标签: android animation view show-hide


    【解决方案1】:

    试用此代码:来自 GitHub 的 ExpandAnimationExample。 我遇到了同样的问题,这个例子解决了我的问题——也许它也会对你有所帮助。

    【讨论】:

      【解决方案2】:

      动画有方法setAnimationListener(AnimationListener)。 AnimationListener 有树回调

      1. onAnimationStart
      2. onAnimationRepeat
      3. onAnimationEnd

      您可以在调用 onAnimationEnd 时更改可见性。

      例如:

      slide.setAnimationListener(new AnimationListener() {
      
              @Override
              public void onAnimationStart(Animation animation) {
      
              }
      
              @Override
              public void onAnimationRepeat(Animation animation) {
              }
      
              @Override
              public void onAnimationEnd(Animation animation) {
                                    // here you can change the visibility
              }
      );
      

      【讨论】:

      • 对不起...我试过了...但它没有按我想要的方式工作。我想将按钮与动画视图一起滑动。您的解决方案将按钮保持在原位,然后在动画结束时将其显示
      • 在 onAnimationEnd() 中调用 yourbutton.layout() 以便随意放置。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-16
      • 2012-05-04
      相关资源
      最近更新 更多