【问题标题】:How to hide layout with right to left translation如何使用从右到左的翻译隐藏布局
【发布时间】:2016-09-28 07:13:42
【问题描述】:

我想用从右到左的动画隐藏点击按钮的布局。在显示视图时,我已经将动画添加到相同的布局。现在我想用动画隐藏那个视图。

 //on appearing view
 Animation anim = AnimationUtils.loadAnimation(this, R.anim.left_to_right);
 mylayout.startAnimation(anim1); 

现在我想用从右到左的动画隐藏相同的布局。然后我想设置可见性 GONE。

【问题讨论】:

  • 你尝试了什么/什么不起作用?请分享一些代码
  • 我已经为动画添加了代码,但它无法正常工作 mylayout.animate().translationX(-mylayout.getWidth());
  • 我想知道,因为您似乎设法为布局设置动画,所以我只需执行相反的操作即可将其设置为动画,就像 @Akshay Panchal 建议的那样。

标签: android android-layout animation android-transitions


【解决方案1】:

您可以创建一个animation resource 并在您的startActivity 上使用

活动

Intent intent = new Intent(this, ActivityB.class);
startActivity(intent);
overridePendingTransition(R.anim.right_left_in, R.anim.right_left_out);
finish();

动画资源----> ../anim/right_left_in.xml

<?xml version="1.0" encoding="utf-8"?>
    <translate 
          xmlns:android="http://schemas.android.com/apk/res/android"
          android:duration="300"
          android:fromXDelta="100%p" 
          android:toXDelta="0%p">
    </translate>

动画资源----> ../anim/right_left_out.xml

<?xml version="1.0" encoding="utf-8"?>
<translate 
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:duration="300"
      android:fromXDelta="0%p" 
      android:toXDelta="100%p">
</translate>

===========================

其他动画

../anim/move_left_in_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<translate 
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:duration="300"
      android:fromXDelta="-100%p" 
      android:toXDelta="0%p">
</translate>

../anim/move_left_out_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<translate 
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:duration="300"
      android:fromXDelta="0%p" 
      android:toXDelta="-100%p">
</translate>

../anim/slid_in.xml

<?xml version="1.0" encoding="utf-8"?>
    <translate
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="@android:integer/config_longAnimTime"
        android:fromXDelta="100%p"
        android:toXDelta="0%p">
    </translate>

../anim/slid_out.xml

<?xml version="1.0" encoding="utf-8"?>
    <translate
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="@android:integer/config_longAnimTime"
        android:fromXDelta="0%p"
        android:toXDelta="-100%p">
    </translate>

../anim/zoom_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:fillAfter="true" >
    <scale
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="1000"
        android:fromXScale="1"
        android:fromYScale="1"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="3"
        android:toYScale="3" >
    </scale>
</set>

【讨论】:

    【解决方案2】:

    您可以从右到左为动画制作相同的 XML,然后像您一样应用动画并添加如下动画侦听器,然后在 onAnimationEnd 中将 Visibility 设置为您的视图

     anim .setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {
    
            }
    
            @Override
            public void onAnimationEnd(Animation animation) {
    
            }
    
            @Override
            public void onAnimationRepeat(Animation animation) {
    
            }
        });
    

    【讨论】:

      【解决方案3】:

      在 res 文件夹下创建“anim”Android 资源目录

      然后创建一个名为 slide_left_out.xml 的新动画文件并编写以下代码:

      <?xml version="1.0" encoding="utf-8"?>
      <set
          xmlns:android="http://schemas.android.com/apk/res/android"
          android:ordering="together"
          android:duration="350">
          <translate
              android:fromXDelta="0"
              android:toXDelta="-100%p"
              android:fromYDelta="0"
              android:toYDelta="50%p"/>
          <scale
              android:fromXScale="1"
              android:toXScale="0.5"
              android:fromYScale="1"
              android:toYScale="0.5"/>
          <alpha
              android:fromAlpha="1"
              android:toAlpha="0"/>
      </set>
      

      然后将动画应用到视图

      Animation anim = AnimationUtils.loadAnimation(MainActivity.this, R.anim.slide_left_out);
      mylayout.startAnimation(anim);
      

      【讨论】:

        猜你喜欢
        • 2021-01-26
        • 2015-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-10
        • 1970-01-01
        • 1970-01-01
        • 2013-10-02
        相关资源
        最近更新 更多