【问题标题】:How to animate Sliding Drawer?如何动画滑动抽屉?
【发布时间】:2012-08-08 17:37:03
【问题描述】:

当我按下按钮开始时,我需要得到这个:

:

所以,我有滑动抽屉,我需要通过单击开始按钮来制作动画。如您所见,滑动抽屉的上下文包含搜索栏和 3 个按钮。当用户单击开始按钮动画应该开始应该隐藏按钮。

我的 xml 文件如下所示:

<SlidingDrawer
    android:id="@+id/slidingDrawer1"
    android:layout_width="match_parent"
    android:layout_height="140dp"
    android:layout_alignParentBottom="true"
    android:layout_x="3dp"
    android:layout_y="374dp"
    android:content="@+id/content"
    android:handle="@+id/handle" >

    <Button
        android:id="@+id/handle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Handle" />

    <RelativeLayout
        android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="84dp" >

        <LinearLayout
            android:id="@+id/linearLayout1"
            android:layout_width="wrap_content"
            android:layout_height="47dp"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:background="@drawable/bcg9" >

            <Button
                android:id="@+id/button1"
                android:layout_width="106.6dp"
                android:layout_height="match_parent"
                android:layout_alignParentBottom="true"
                android:layout_alignParentLeft="true"
                android:layout_marginTop="0dp"
                android:background="@drawable/rev" />

            <Button
                android:id="@+id/button2"
                android:layout_width="106.6dp"
                android:layout_height="match_parent"
                android:layout_marginTop="0dp"
                android:background="@drawable/pause" />

            <Button
                android:id="@+id/button3"
                android:layout_width="106.6dp"
                android:layout_height="match_parent"
                android:layout_alignParentBottom="true"
                android:layout_marginTop="0dp"
                android:layout_toRightOf="@+id/button2"
                android:layout_weight="1"
                android:background="@drawable/forv" />
        </LinearLayout>

        <SeekBar
            android:id="@+id/seekBar1"
            android:layout_width="match_parent"
            android:layout_height="11dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:background="@null"
            android:progressDrawable="@drawable/seekbar_progress"
            android:thumb="@drawable/thumb_drawable" />
    </RelativeLayout>
</SlidingDrawer>

<SeekBar
    android:id="@+id/seekBar2"
    android:layout_width="match_parent"
    android:layout_height="15px"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="62dp"
    android:maxHeight="3dp"
    android:progressDrawable="@drawable/seekbar_progress"
    android:thumb="@drawable/thumb_drawable" />

<Button
    android:id="@+id/animate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:text="start" />

</RelativeLayout>

我尝试使用翻译动画,但是当我点击开始按钮滑动抽屉下降时,它实际上消失了。

int topOfsd = getWindowManager().getDefaultDisplay().getHeight()-sd.getHeight();
                Animation animation = new TranslateAnimation(0,            0,topOfsd,topOfsd-100);
                animation.setDuration(1000);
                animation.setFillAfter(true);
                sd.startAnimation(animation);
                sd.setVisibility(0);        

这是怎么做到的?

【问题讨论】:

    标签: android slidingdrawer


    【解决方案1】:

    如果您使用 findViewById 获得了 SlidingDrawer 的句柄 您可以只调用 animateOpen 和 animateClose 函数。 http://developer.android.com/reference/android/widget/SlidingDrawer.html#animateOpen()

    如果您不希望滑动抽屉一直打开,只需将高度设置为倾角即可。

    【讨论】:

    • 嗨,但问题是我不想完全关闭它,看第二张图片,搜索栏必须可见。
    • 如果有人知道如何做到这一点,请告诉我。
    • 嗯。我想知道你是否可以添加填充。为什么控件在滑动抽屉中?移动它们似乎非常具有破坏性。也许你应该考虑重新设计。您可以将控件始终放在底部,然后将滑动抽屉放在上面。
    • 因为客户的要求,我决定用滑动抽屉,他问:上滑音乐控制弹起来,下滑音乐控制隐藏,但同时他又增加了一个要求。如果播放歌曲并且没有触摸事件,然后应该开始动画,如上图所示(音乐控制下降,音乐控制的唯一可见部分是搜索栏)。你知道如何在不滑动抽屉的情况下做到这一点(我有 ideto 在一些 viewGroup 中包装音乐控件并翻译动画)?
    • 更新了答案。只需将高度设置为倾斜的东西。那应该行得通。标记是否有,如果没有,请告诉我,我会通过我的应用进行更多挖掘。
    【解决方案2】:

    我设法通过属性动画解决了这个问题。

    Display display = getWindowManager().getDefaultDisplay(); 
            int y = display.getHeight();
    android.widget.SlidingDrawer  sd;
    sd = (android.widget.SlidingDrawer)findViewById(R.id.slidingDrawer1);
    sd.animate().translationY(someValue);
    

    【讨论】:

      猜你喜欢
      • 2012-12-04
      • 1970-01-01
      • 2014-07-29
      • 2013-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多