android:如何从某一点开始动画

时间:2016-07-14 09:51:09

标签: android android-animation

我的线性布局大约有一半的屏幕宽度

我正在使用此代码进行翻译

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

但我的问题是线性布局从屏幕的末尾翻译,我在最后有另一张图片,所以我不希望布局在动画时与该图像重叠

所以我希望它从该图像的左侧开始翻译

 <LinearLayout
                android:id="@+id/row"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@android:color/transparent"
                android:orientation="horizontal"
                android:clipToPadding="false"
                android:padding="3dp"


                android:layout_alignParentBottom="true" android:layout_alignParentLeft="true"
                android:layout_alignParentStart="true">
                <LinearLayout
                    android:id="@+id/items"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:visibility="invisible"
                    android:background="@android:color/transparent"
                    android:orientation="horizontal"
                    android:padding="3dp">
                <ImageButton
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:background="@android:color/transparent"

                    android:paddingBottom="5dp"
                    android:paddingLeft="16dp"
                    android:paddingRight="16dp"
                    android:paddingTop="5dp"
                    android:src="@drawable/search"
                    android:text="Android Custom Horizontal Dropdown Menu Icons" />

                <ImageButton
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:layout_marginLeft="2dp"
                    android:background="@android:color/transparent"

                    android:paddingBottom="5dp"
                    android:paddingLeft="16dp"
                    android:paddingRight="16dp"
                    android:paddingTop="5dp"
                    android:src="@drawable/search"
                    android:text="Android Custom Horizontal Dropdown Menu Icons" />

                <ImageButton
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:layout_marginLeft="2dp"
                    android:background="@android:color/transparent"

                    android:paddingBottom="5dp"
                    android:paddingLeft="16dp"
                    android:paddingRight="16dp"
                    android:paddingTop="5dp"
                    android:src="@drawable/search"
                    android:text="Android Custom Horizontal Dropdown Menu Icons" />

                <ImageButton
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:layout_marginLeft="2dp"
                    android:background="@android:color/transparent"

                    android:paddingBottom="5dp"
                    android:paddingLeft="16dp"
                    android:paddingRight="16dp"
                    android:paddingTop="5dp"
                    android:src="@drawable/search"
                    android:text="Android Custom Horizontal Dropdown Menu Icons" />
</LinearLayout>
                <ImageButton
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:layout_marginLeft="2dp"
                    android:background="@android:color/transparent"
android:id="@+id/widget"
                    android:paddingBottom="5dp"
                    android:paddingLeft="16dp"
                    android:paddingRight="16dp"
                    android:paddingTop="5dp"
                    android:src="@drawable/three"
                    android:layout_marginBottom="30dp"
                    android:text="Android Custom Horizontal Dropdown Menu Icons" />

            </LinearLayout>

        </RelativeLayout>

I want to animate the Linear Layout with id items

2 个答案:

答案 0 :(得分:2)

以下是这些翻译..

  

从顶部移动到底部

    android:fromYDelta="-75%p"
    android:toYDelta="0%p"
  

从底部移动到顶部....

    android:fromYDelta="75%p"
    android:toYDelta="0%p"
  

从右向左移动

    android:fromXDelta="75%p"
    android:toXDelta="0%p"
  

试试这个......... 从左到右 ........

<translate
    android:duration="2000"
    android:fillAfter="true"
    android:fromXDelta="-75%p"
    android:toXDelta="0%p"
    android:interpolator="@android:anim/decelerate_interpolator"
    xmlns:android="http://schemas.android.com/apk/res/android"/>

享受编码..........

答案 1 :(得分:1)

您可以使用ViewPropertyAnimator

在Java代码中轻松完成此操作
LinearLayout ll = (LinearLayout) findViewById(R.id.row); 
ll.animate().translationX(toX).setDuration(2000).setInterpolator(new DecelerateInterpolator());

其中(toX)是LinearLayout将在屏幕的X轴上移动的浮点值。它总是从当前位置开始。

另一种方法是:

ll.animate().translationXBy(byX);

动画LinearLayout BY (byX)值。

检查所有可用方法的docs,您可以使用ViewPropertyAnimator进行各种动画。