android:我如何从特定点开始动画?

4

我的线性布局占据了大约一半的屏幕宽度。

我正在使用这段代码进行翻译。

<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个回答

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"/>

享受编程..........


这是用于右翻转动画的代码...我所做的是左翻转。 - MrRobot9
你想要从顶部到当前位置吗? - sushildlh
实际上,我希望它从屏幕中心开始,而不是从屏幕末端开始,只能从左到右。 - MrRobot9
我在末尾有一个按钮,我不希望它与那个重叠,所以在按钮旁边,它应该开始动画。 - MrRobot9
所以你想要按钮到当前位置?我是对的吗?或者您可以发布您的布局图像和XML,这有助于快速解决.... - sushildlh
不,我想从右到左……但不是极端的右边,离屏幕有一点间隔。 - MrRobot9

1

您可以轻松使用Java代码完成此操作,使用ViewPropertyAnimator

LinearLayout ll = (LinearLayout) findViewById(R.id.row); 
ll.animate().translationX(toX).setDuration(2000).setInterpolator(new DecelerateInterpolator());

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

另一种方法是:

ll.animate().translationXBy(byX);

通过 (byX) 值来使 LinearLayout 动画化。

查看 文档 以获取所有可用的方法,您可以使用 ViewPropertyAnimator 进行各种动画。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接