2012-08-01 31 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);