繁体   English   中英

在窗口外对EditText进行动画处理

[英]Animate EditText out of a window

我有一个带有“搜索栏”(EditText)和其下的ListView的RelativeLayout:

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/etSearch"
        android:layout_width="fill_parent"
        android:layout_height="40dp"
        android:inputType="text" >

    <ListView
        android:id="@+id/listView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginTop="0dp"
        android:clipToPadding="false"
        android:listSelector="@drawable/listview_selector" >
    </ListView>
</LinearLayout>

用户“搜索”之后,我希望EditText在屏幕外进行动画处理,并将ListView推到顶部。 我整理了一份我需要的非常粗略的GIF:

在此处输入图片说明

有人对我如何做到这一点有想法吗? 谢谢

UPDATE

我发现了如何使用以下方法使EditText在屏幕外进行动画处理:

slide_out_top.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromYDelta="0%" android:toYDelta="-100%" android:duration="600"/>
</set>

然后像这样在EditText上使用它:

mSlideOutTop = AnimationUtils.loadAnimation(this, R.anim.slide_out_top);
et.startAnimation(mSlideOutTop);

但是ListView保持其当前高度。 我想要的是ListView在EditText动画时扩展到顶部。

您可以将TranslateAnimation添加到ViewGroup(对您来说是LinearLayout),y轴移动距离是editText视图的最高距离。 然后在需要时触发此动画。 (更新:只是认为这种方式可能会在底部创建一个空白栏,不好的主意)

我还有另一个棘手的主意。

在位置0的ListView中设置EditText视图,然后只需调用smoothScrollToPostion(1)方法即可滚动。 看到这可能会帮助您SmoothScrollToPositionFromTop()并非总是像应该的那样工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM