Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Slide menu can be done using animation classes </p> <pre><code>//Declare inside activity private LinearLayout slidingPanel; private boolean isExpanded; private DisplayMetrics metrics; //private ListView listView; private RelativeLayout headerPanel,menuPanel; private int panelWidth; private ImageView menuViewButton; FrameLayout.LayoutParams menuPanelParameters; FrameLayout.LayoutParams slidingPanelParameters; LinearLayout.LayoutParams headerPanelParameters ; LinearLayout.LayoutParams listViewParameters; //Initialize inside oncreate metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); panelWidth = (int) ((metrics.widthPixels)*0.45); 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.width = panelWidth; menuPanel.setLayoutParams(menuPanelParameters); slidingPanel = (LinearLayout) findViewById(R.id.slidingPanel); slidingPanelParameters = (FrameLayout.LayoutParams) slidingPanel.getLayoutParams(); slidingPanelParameters.width = metrics.widthPixels; slidingPanel.setLayoutParams(slidingPanelParameters); //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_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.45f, 0, 0.0f, 0, 0.0f); //Toast.makeText(getApplicationContext(), "expand", 0).show(); }else{ isExpanded = false; //Collapse new CollapseAnimation(slidingPanel,panelWidth, TranslateAnimation.RELATIVE_TO_SELF, 0.45f, TranslateAnimation.RELATIVE_TO_SELF, 0.0f, 0, 0.0f, 0, 0.0f); //Toast.makeText(getApplicationContext(), "Collapse", 0).show(); } } }); //collapse animation class 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); //slidingLayout.setBackgroundColor(); //slidingLayout.setBackgroundColor(R.string.white); } @Override public void onAnimationEnd(Animation arg0) { // TODO Auto-generated method stub } @Override public void onAnimationRepeat(Animation arg0) { // TODO Auto-generated method stub } @Override public void onAnimationStart(Animation arg0) { // TODO Auto-generated method stub } } //expande animation class 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); //slidingLayout.setBackgroundColor(panelWidth); } @Override public void onAnimationEnd(Animation animation) { // TODO Auto-generated method stub //Create margin and align left LayoutParams params = (LayoutParams) slidingLayout.getLayoutParams(); params.leftMargin = panelWidth; params.gravity = Gravity.LEFT; slidingLayout.clearAnimation(); slidingLayout.setLayoutParams(params); slidingLayout.requestLayout(); } @Override public void onAnimationRepeat(Animation animation) { // TODO Auto-generated method stub } @Override public void onAnimationStart(Animation animation) { // TODO Auto-generated method stub } } ///here is the xml &lt;FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" &gt; &lt;!-- Menu Panel --&gt; &lt;RelativeLayout android:id="@+id/menuPanel" android:layout_width="wrap_content" android:layout_height="match_parent" android:background="@drawable/gray_bg" android:gravity="right" android:orientation="vertical" &gt; &lt;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:background="#353535" android:gravity="center_vertical" android:paddingLeft="15dp" android:text="@string/menu_title" android:textColor="@android:color/white" &gt; &lt;/TextView&gt; &lt;View android:id="@+id/menu_item_divider_1" android:layout_width="fill_parent" android:layout_height="0.5dp" android:layout_below="@+id/menu_title_1" android:layout_marginLeft="0dp" android:layout_marginRight="0dp" android:background="#b5b5b5" /&gt; &lt;TextView android:id="@+id/menu_item_1" android:layout_width="fill_parent" android:layout_height="50dp" android:layout_below="@+id/menu_item_divider_1" android:layout_marginLeft="15dp" android:gravity="center_vertical" android:text="@string/korean" &gt; &lt;/TextView&gt; &lt;View android:id="@+id/menu_item_divider_2" android:layout_width="fill_parent" android:layout_height="0.5dp" android:layout_below="@+id/menu_item_1" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:background="#b5b5b5" /&gt; &lt;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/english" &gt; &lt;/TextView&gt; &lt;!-- Sliding Panel --&gt; &lt;LinearLayout android:id="@+id/slidingPanel" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@android:color/white" android:gravity="left" android:orientation="vertical" &gt; &lt;View android:id="@+id/dividerHeaderBottom" android:layout_width="fill_parent" android:layout_height="1dp" android:background="#414141" /&gt; &lt;RelativeLayout android:id="@+id/header" android:layout_width="match_parent" android:layout_height="45dp" android:background="@color/whitec" &gt; &lt;Button android:id="@+id/buttonback" android:layout_width="40dp" android:layout_height="40dp" android:layout_alignBottom="@+id/buttonperson" android:layout_alignParentTop="true" android:layout_marginRight="14dp" android:layout_toLeftOf="@+id/buttonperson" android:background="@drawable/back" /&gt; &lt;ImageView android:id="@+id/menuViewButton" android:layout_width="40dp" android:layout_height="40dp" android:layout_centerVertical="true" android:layout_marginLeft="27dp" android:layout_toRightOf="@+id/buttonyummy" android:clickable="true" android:contentDescription="@string/description" android:src="@drawable/lin" android:visibility="visible" /&gt; &lt;/RelativeLayout&gt; &lt;/LinearLayout&gt; &lt;/FrameLayout&gt; </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload