2013-02-10 3 views
2

Я пытался с помощью раздвижного меню из приведенного ниже примера.Скользящее меню - справа налево

https://github.com/eddieringle/android-undergarment

Но это имеет скользящую реализацию слева направо. Как я могу изменить это на право налево. Может ли кто-нибудь помочь мне понять это?

ответ

3

я знаю, что вы получите ответ на свой вопрос, но если вы не хотите использовать внешнюю библиотеку, вы можете использовать это:

этот код существует на gitHub

но этот проект используется для левого меню справа, с небольшим изменением, которое вы можете открыть справа налево, я скопирую код с изменениями. со следующим кодом вы можете иметь обе боковое меню.

CollapseAnimation.java

import android.view.animation.AccelerateDecelerateInterpolator; 
import android.view.animation.Animation; 
import android.view.animation.TranslateAnimation; 
import android.widget.FrameLayout.LayoutParams; 
import android.widget.LinearLayout; 


public class CollapseAnimation extends TranslateAnimation implements TranslateAnimation.AnimationListener{ 

    private LinearLayout slidingLayout; 
    int panelWidth; 

    public CollapseAnimation(LinearLayout layout, int width, int fromXType, float fromXValue, int toXType, 
      float toXValue, int fromYType, float fromYValue, int toYType, float toYValue) { 

     super(fromXType, fromXValue, toXType, toXValue, fromYType, fromYValue, toYType, toYValue); 

     //Initialize 
     slidingLayout = layout; 
     panelWidth = width; 
     setDuration(400); 
     setFillAfter(false); 
     setInterpolator(new AccelerateDecelerateInterpolator()); 
     setAnimationListener(this); 

     //Clear left and right margins 
     LayoutParams params = (LayoutParams) slidingLayout.getLayoutParams(); 
     params.rightMargin = 0; 
     params.leftMargin = 0; 
     slidingLayout.setLayoutParams(params); 
     slidingLayout.requestLayout();  
     slidingLayout.startAnimation(this); 

    } 
    public void onAnimationEnd(Animation animation) { 

    } 

    public void onAnimationRepeat(Animation animation) { 

    } 

    public void onAnimationStart(Animation animation) { 

    } 

} 

ExpandAnimation.java

import android.view.Gravity; 
import android.view.animation.AccelerateDecelerateInterpolator; 
import android.view.animation.Animation; 
import android.view.animation.TranslateAnimation; 
import android.widget.FrameLayout.LayoutParams; 
import android.widget.LinearLayout; 

public class ExpandAnimation extends TranslateAnimation implements Animation.AnimationListener{ 

    private LinearLayout slidingLayout; 
    int panelWidth; 

    public ExpandAnimation(LinearLayout layout, int width, int fromXType, float fromXValue, int toXType, 
      float toXValue, int fromYType, float fromYValue, int toYType, float toYValue) { 

     super(fromXType, fromXValue, toXType, toXValue, fromYType, fromYValue, toYType, toYValue); 

     //Initialize 
     slidingLayout = layout; 
     panelWidth = width; 
     setDuration(400); 
     setFillAfter(false); 
     setInterpolator(new AccelerateDecelerateInterpolator()); 
     setAnimationListener(this); 
     slidingLayout.startAnimation(this); 
    } 


    public void onAnimationEnd(Animation arg0) { 

     //Create margin and align left 
     LayoutParams params = (LayoutParams) slidingLayout.getLayoutParams(); 
     params.rightMargin = panelWidth; 
     params.gravity = Gravity.RIGHT;  
     slidingLayout.clearAnimation(); 
     slidingLayout.setLayoutParams(params); 
     slidingLayout.requestLayout(); 

    } 

    public void onAnimationRepeat(Animation arg0) { 

    } 

    public void onAnimationStart(Animation arg0) { 

    } 

} 

LayerStack.java

import android.os.Bundle; 
import android.app.Activity; 
import android.util.DisplayMetrics; 
import android.view.Gravity; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.animation.Animation; 
import android.view.animation.TranslateAnimation; 
import android.widget.FrameLayout; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 
import android.widget.RelativeLayout; 
import android.widget.ListView; 

public class LayerStack extends Activity { 

    //Declare 
    private LinearLayout slidingPanel; 
    private boolean isExpanded; 
    private DisplayMetrics metrics; 
    private ListView listView; 
    private RelativeLayout headerPanel; 
    private RelativeLayout menuPanel; 
    private int panelWidth; 
    private ImageView menuViewButton; 

    FrameLayout.LayoutParams menuPanelParameters; 
    FrameLayout.LayoutParams slidingPanelParameters; 
    LinearLayout.LayoutParams headerPanelParameters ; 
    LinearLayout.LayoutParams listViewParameters; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_layer_stack); 

     //Initialize 
     metrics = new DisplayMetrics(); 
     getWindowManager().getDefaultDisplay().getMetrics(metrics); 
     panelWidth = (int) ((metrics.widthPixels)*0.33); 

     headerPanel = (RelativeLayout) findViewById(R.id.header); 
     headerPanelParameters = (LinearLayout.LayoutParams) headerPanel.getLayoutParams(); 
     headerPanelParameters.width = metrics.widthPixels; 
     headerPanel.setLayoutParams(headerPanelParameters); 

     menuPanel = (RelativeLayout) findViewById(R.id.menuPanel); 
     menuPanelParameters = (FrameLayout.LayoutParams) menuPanel.getLayoutParams(); 
     menuPanelParameters.gravity = Gravity.RIGHT; 
     menuPanelParameters.width = panelWidth; 

     menuPanel.setLayoutParams(menuPanelParameters); 

     slidingPanel = (LinearLayout) findViewById(R.id.slidingPanel); 
     slidingPanelParameters = (FrameLayout.LayoutParams) slidingPanel.getLayoutParams(); 
     slidingPanelParameters.width = metrics.widthPixels; 
     slidingPanelParameters.gravity = Gravity.LEFT; 
     slidingPanel.setLayoutParams(slidingPanelParameters); 

     listView = (ListView) findViewById(R.id.list); 
     listViewParameters = (LinearLayout.LayoutParams) listView.getLayoutParams(); 
     listViewParameters.width = metrics.widthPixels; 
     listView.setLayoutParams(listViewParameters); 


     //Slide the Panel 
     menuViewButton = (ImageView) findViewById(R.id.menuViewButton); 
     menuViewButton.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       if(!isExpanded){ 
        isExpanded = true;            

        //Expand 
        new ExpandAnimation(slidingPanel, panelWidth, 
        Animation.RELATIVE_TO_PARENT, 0.0f, 
        Animation.RELATIVE_TO_PARENT, -0.33f, 0, 0.0f, 0, 0.0f); 
        // if you want left to right just remove (-) before 0.33f           
       }else{ 
        isExpanded = false; 

        //Collapse 
        new CollapseAnimation(slidingPanel,panelWidth, 
        TranslateAnimation.RELATIVE_TO_PARENT,-0.33f, 
        TranslateAnimation.RELATIVE_TO_PARENT, 0.0f, 0, 0.0f, 0, 0.0f); 
        // if you want left to right just remove (-) before 0.33f 

       }    
      } 
     }); 

    }  
} 

деятельность_layer_stack.xml

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="match_parent" 
    android:layout_weight="1" 
    android:background="@drawable/blue_bg"> 

    <!-- Menu Panel --> 
    <RelativeLayout 
      android:id="@+id/menuPanel" 
      android:layout_height="match_parent" 
      android:layout_width="wrap_content" 
      android:gravity="right" 
      android:background="@drawable/gray_bg" 
      android:orientation="vertical" > 

      <TextView 
       android:id="@+id/menu_title_1" 
       android:layout_width="fill_parent" 
       android:layout_height="50dp" 
       android:layout_alignParentTop="true" 
       android:layout_marginLeft="0dp" 
       android:paddingLeft="15dp"    
       android:gravity="center_vertical" 
       android:background="#353535" 
       android:textColor="@android:color/white" 
       android:text="@string/menu_title">  
      </TextView> 

      <View 
       android:id="@+id/menu_item_divider_1" 
       android:layout_width="fill_parent" 
       android:layout_height="0.5dp" 
       android:layout_marginLeft="0dp" 
       android:layout_marginRight="0dp" 
       android:layout_below="@+id/menu_title_1" 
       android:background="#b5b5b5"/> 

      <TextView 
       android:id="@+id/menu_item_1" 
       android:layout_width="fill_parent" 
       android:layout_height="50dp" 
       android:layout_marginLeft="15dp"    
       android:gravity="center_vertical" 
       android:layout_below="@+id/menu_item_divider_1" 
       android:text="@string/item_1">  
      </TextView>  
      <View 
       android:id="@+id/menu_item_divider_2" 
       android:layout_width="fill_parent" 
       android:layout_height="0.5dp" 
       android:layout_marginLeft="5dp" 
       android:layout_marginRight="5dp" 
       android:layout_below="@+id/menu_item_1" 
       android:background="#b5b5b5"/> 
      <TextView 
       android:id="@+id/menu_item_2" 
       android:layout_width="fill_parent" 
       android:layout_height="50dp" 
       android:layout_below="@+id/menu_item_divider_2" 
       android:layout_marginLeft="15dp" 
       android:gravity="center_vertical" 
       android:text="@string/item_2"> 
      </TextView> 
      <View 
       android:id="@+id/menu_item_divider_3" 
       android:layout_width="fill_parent" 
       android:layout_height="0.5dp" 
       android:layout_marginLeft="5dp" 
       android:layout_marginRight="5dp" 
       android:layout_below="@+id/menu_item_2" 
       android:background="#b5b5b5" />   
      </RelativeLayout> 

     <!-- Sliding Panel -->  
     <LinearLayout 
       android:id="@+id/slidingPanel" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:gravity="right" 
       android:orientation="vertical" 
       android:background="@android:color/white" > 

       <RelativeLayout 
        android:id="@+id/header" 
        android:layout_width="match_parent" 
        android:layout_height="50dp" 
        android:background="@drawable/blue_bg" > 

         <View 
          android:id="@+id/header_vertical_divider_1" 
          android:layout_width="2dp" 
          android:layout_height="fill_parent" 
          android:layout_alignParentTop="true" 
          android:layout_toLeftOf="@+id/menuViewButton" 
          android:background="@drawable/engraved_bg" /> 

         <ImageView 
          android:id="@+id/menuViewButton" 
          android:layout_width="wrap_content" 
          android:layout_height="wrap_content" 
          android:layout_alignParentRight="true" 
          android:layout_alignParentTop="true" 
          android:clickable="true" 
          android:contentDescription="@string/description" 
          android:src="@drawable/icon_menu" 
          android:visibility="visible" /> 

       </RelativeLayout> 

       <View 
        android:id="@+id/dividerHeaderBottom" 
        android:layout_width="fill_parent" 
        android:layout_height="1dp" 
        android:background="#414141" /> 
       <ListView 
        android:id="@+id/list" 
        android:layout_width="match_parent" 
        android:layout_height="fill_parent" 
        android:divider="#b5b5b5" 
        android:dividerHeight="0.5dp" 
        android:background="@android:color/white" 
        > 
       </ListView> 

     </LinearLayout> 
</FrameLayout> 
Смежные вопросы