当前位置: 首页 > 知识库问答 >
问题:

用于隐藏视图而不改变可视性的Android翻译动画

诸葛卜霸
2023-03-14

我需要动画方面的帮助。(我的观点更加复杂,我只向您展示了我的布局xml的主要元素)

<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true" >

        <LinearLayout
            android:id="@+id/oneBigView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_centerVertical="true"
            android:gravity="center_vertical"
            android:orientation="vertical">


        </LinearLayout>

        <LinearLayout
            android:id="@+id/fourSmallViews"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:gravity="center_vertical"
            android:orientation="vertical" >

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:weightSum="2" >

                <RelativeLayout
                    android:id="@+id/topLeft"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1" >                       
                </RelativeLayout>

                <RelativeLayout
                    android:id="@+id/topRight"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1">
                </RelativeLayout>
            </LinearLayout>

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:visibility="invisible"
                android:weightSum="2" >

                <RelativeLayout
                    android:id="@+id/bottomLeft"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1" >


                </RelativeLayout>

                <RelativeLayout
                    android:id="@+id/bottomRight"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1" >


                </RelativeLayout>
            </LinearLayout>
        </LinearLayout>
    </RelativeLayout>

我想显示和隐藏一些视图:

  1. 没有可见视图
  2. 从边缘(从左到左,从右到右)移到屏幕中心(父级)。
  3. 上左和上右移动一半时,上左和下右显示与上左和上右完全相同
  4. 所有四个视图在几秒钟内保持可见。
  5. top左和topright从屏幕中心(父级)移到边缘(从顶部左到左,从顶部右到右侧)。
  6. 上左和上右移动到下左和下右的一半时,上左和下右移动到与上左和上右完全相同的位置
  7. 当所有视图都消失时,oneBigView从左边缘移动并填满屏幕。
  8. oneBigView会停留几秒钟。
  9. oneBigView从屏幕中心移动到左边缘。
  10. 当oneBigView消失时,一切都从1开始。

我试着这样做,但总是有些不对劲:

  1. 我尝试添加一些翻译动画并更改可见性(我尝试了视图.不可见和视图。消失) onAnimation结束:

显示

    <set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/decelerate_interpolator">
    <translate 
    android:fromXDelta="-100%p" 
    android:toXDelta="0"
    android:duration="500" />
    </set>

隐藏

    <set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/decelerate_interpolator">
        <translate 
        android:fromXDelta="0"
        android:toXDelta="-100%p"
        android:duration="500" />

    </set>

。.java

final Animation leftIn=AnimationUtils.loadAnimation(this, R.anim.show);
final Animation leftOut=AnimationUtils.loadAnimation(this, R.anim.hide);
leftIn.setAnimationListener(new Animation.AnimationListener() {

        @Override
        public void onAnimationStart(Animation animation) {
            // TODO Auto-generated method stub

            //start animation for showing topRight bottomLeft and bottomRight 
            //with propper startOffset
        }

        @Override
        public void onAnimationRepeat(Animation animation) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onAnimationEnd(Animation animation) {
            // TODO Auto-generated method stub
            left1.setVisibility(View.VISIBLE);
            leftOut.setStartOffset(4000);
            left1.startAnimation(leftOut);

        }
    });
leftOut.setAnimationListener(new Animation.AnimationListener() {

        @Override
        public void onAnimationStart(Animation animation) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onAnimationRepeat(Animation animation) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onAnimationEnd(Animation animation) {
            // TODO Auto-generated method stub

            left1.setVisibility(View.INVISIBLE);
        }
    });

等等...它完美地实现了可视性,但是动画一点也不流畅(大多数时候它就像我没有使用过动画一样)。当我停止改变可视性动画工作正常,但它不工作。

有什么想法吗?

共有2个答案

越学文
2023-03-14

您应该尝试将< code>fillAfter添加到您的< code >中

<set 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/decelerate_interpolator"
    android:fillAfter="true">

使用“不可见视图”“视图”设置可见性通常不适用于动画。您唯一的其他选择是将Alpha动画添加到两者

<alpha
    android:fromAlpha="1.0"
    android:toAlpha="0.0"
    android:duration="200"
    android:interpolator="@android:anim/accelerate_interpolator"/>

根据您的需要进行调整。避免设置可见性。

章子航
2023-03-14

您可以尝试更改视图的alpha值,而不是使其不可见或消失。

 类似资料:
  • 问题内容: 在iOS 11中,a中的隐藏动画的行为已更改,但是我无法在任何地方找到该文档。 iOS 10 iOS 11 两者中的代码是这样的: 如何在iOS 11上还原以前的行为? 问题答案: 只是有同样的问题。该修复程序将添加到动画块中。您要隐藏的物品的容器在哪里? 不确定为什么这在iOS 11中突然成为一个问题,但公平地说,这一直是推荐的方法。

  • 我想添加一个headerview,当用户向下滚动时隐藏,当用户向上滚动时再次显示。 例子:https://imgur.com/a/tTq70B0 正如你在链接中看到的“你写的是……”pharase仅在用户滚动到顶部时显示。Android sdk中有类似的东西吗? 我怎样才能做到同样的事?

  • 对不起,我的英语…我会试着解释我想做什么。我有一个项目。它可以在链接上下载: < Li > https://drive . Google . com/file/d/0 bxhio ufkk 3 upcxjngtmvkg 4 tdq/view?usp =共享 正如你看到的截图: http://pixs.ru/showimage/Screenshot_9509352_15647059.png “隐藏/

  • 仍然像这样显示和隐藏视图: 但如果我必须使用向上滑动和向下滑动动画来显示和隐藏,该怎么办

  • 我已经在IB中设计了我的自定义单元,将其子类化,并将我的插座连接到我的自定义类。我在单元格内容中有三个子视图,它们是:UIView(cdView)和两个标签(titleLabel和emailLabel)。根据每行可用的数据,有时我希望在单元格中显示UIView和两个标签,有时只显示两个标签。我想做的是这样设置约束,如果我将UIView属性设置为hidden,或者将其从superview中删除,则两

  • 我想在其中一个视图隐藏时制作可调整大小的视图。下面的链接已经针对iOS提出了这个问题。我想为Android制作。感谢任何帮助。我想在将可见性设置为隐藏计数和折扣后,为三个TextViev:position、stat_name、price添加空闲空间 我在这里的风格是: