2012-08-01 152 views
0

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);   

這怎麼辦?

回答

1

如果您使用findViewById獲取SlidingDrawer的句柄,您可以調用animateOpen和animateClose函數。 http://developer.android.com/reference/android/widget/SlidingDrawer.html#animateOpen()

如果您不希望滑動抽屜一直打開,只需將高度設置爲驟降。

+0

嗨,但問題是我不想完全關閉它,看到第二張圖片,搜索欄必須可見。 – sekula87 2012-08-02 06:52:27

+0

如果有人有一個想法,怎麼可以做到這一點讓我知道,請。 – sekula87 2012-08-02 15:57:36

+0

Humm。我想知道你是否可以添加填充。爲什麼滑動抽屜中的控件?看起來很動人。也許你應該考慮重新設計。您可以將控件始終放在底部,然後將滑動抽屜放在底部。 – 2012-08-02 17:07:41

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);