如何动画滑动抽屉?

时间:2012-08-01 19:09:04

标签: android slidingdrawer

My activity

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

enter image description here

所以,我有滑动抽屉,我需要通过点击开始按钮动画。如您所见,滑动抽屉的上下文包含搜索栏和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);        

怎么可以这样做?

2 个答案:

答案 0 :(得分:1)

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

如果您不希望滑动抽屉完全打开,只需将高度设置为蘸水即可。

答案 1 :(得分:0)

我设法用属性动画来解决这个问题。

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