2012-08-01 1 views
0

My activity서랍을 움직이게하는 방법?</p> <p>: <img src="https://i.stack.imgur.com/aWWCm.png" alt="enter image description here"></p> <p>그래서, 내가 시작 버튼을 클릭하여 애니메이션을 필요 서랍 슬라이딩 한

는 나는이를 얻을 필요가 버튼 시작을 누르면. 볼 수 있듯이 슬라이딩 서랍의 컨텍스트는 검색 막대와 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

+0

누군가에게 이것이 어떻게 이루어질 수 있었는지 알고 있다면 알려주십시오. – sekula87

+0

Humm. 네가 패딩을 추가 할 수 있을지 궁금해. 슬라이딩 서랍의 컨트롤이 왜입니까? 그들을 움직 이기에 매우 혼란스럽게 보입니다. 아마도 당신은 재 설계에 대해 생각해야합니다. 컨트롤을 항상 맨 아래에 놓고 슬라이딩 서랍을 놓을 수 있습니다. –

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