2011-12-13 185 views
0

我在嘗試複製Facebook應用程序的新菜單滑塊。創建從左側進入的滑塊很簡單。不過,Facebook應用會採用活動的佈局並將其向右滑動,其左側邊緣的一小部分仍顯示在屏幕的右側。我對如何做到這一點有些困惑。有沒有人有任何想法?屏幕外的偏移活動佈局

我能想到的,我沒有嘗試過的最好的事情是使用Display類來確定屏幕的寬度,將最外側視圖的寬度設置爲該寬度並將其顯示在右側滑塊(顯然由一個RelativeView包裝)。

更新:我試過以下。

我最外面的View是一個RelativeLayout。在這個RelativeLayout中有兩個兄弟視圖。它們都是LinearLayouts。第一個是包含側欄的佈局(在我的XML中,這是通過包含來完成的)。第二個位於頂部的佈局包含Activity的主體(屏幕,因爲我希望用戶通常可以看到它)。

這裏是我的XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@color/black" > 

    <include 
     android:id="@+id/mainnew_slider" 
     layout="@layout/layout_slidermenu" /> 

    <LinearLayout 
     android:id="@+id/mainfeed_mainlayout" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:background="@drawable/loginbg" 
     android:orientation="vertical" > 

     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="64dip" 
      android:background="@drawable/titlebar_background" 
      android:orientation="vertical" 
      android:padding="4dip" > 

      <ImageButton 
       android:id="@+id/mainfeed_slider" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:background="@drawable/selector_titlebar_button" 
       android:src="@drawable/sidebarico" /> 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="1dip" 
      android:background="@color/store_toolbar_bottom_border" /> 
    </LinearLayout> 

</RelativeLayout> 

當用戶單擊ImageButton的,我使用了一些動畫代碼,使主要佈局向右移動。我用動畫主要佈局的代碼是:

 AnimationSet set = new AnimationSet(true); 
     Animation animation = new TranslateAnimation(
      Animation.RELATIVE_TO_PARENT, 0.0f,Animation.RELATIVE_TO_PARENT, 1.0f, 
      Animation.RELATIVE_TO_PARENT, 0.0f,Animation.RELATIVE_TO_PARENT, 0.0f 
     ); 
     animation.setDuration(1000); 
     set.addAnimation(animation); 

     LayoutAnimationController controller = new LayoutAnimationController(set, 0.0f); 
     LinearLayout main = (LinearLayout) findViewById(R.id.mainfeed_mainlayout); 
     main.setLayoutAnimation(controller); 

當我點擊滑塊按鈕,主要佈局向右滑動的兩個孩子,但不是主要的佈局本身(其背景保持靜態)。動畫完成後,所有內容都會恢復到原始位置。

我不明白爲什麼它沒有移動整個主佈局並將其保持在其休息的地方。

回答

1

應用於您的頂級視圖的簡單TranslateAnimation應該這樣做。不要通過佈局來做,它會太慢。

+0

我還是有點迷路。我有一個包含兩個LinearLayout子項的RelativeLayout。其中一個孩子是我的滑塊。另一個是我的主要佈局。我已經將主佈局上的layout_toRightOf設置爲滑塊的ID。該應用只是崩潰。如果我刪除layout_toRightOf,TranslateAnimation會將滑塊帶入視圖中,但主佈局不會像我期望的那樣從屏幕右側推出。 – Andrew 2011-12-13 20:09:21