Wie hat Google das geschafft? Slide ActionBar in Android-Anwendung

Ich möchte dies (die Seitennavigation) wirklich in einer eigenen App implementieren, weiß jemand, wie Google das geschafft hat?

Sie scheinen das aktuelle Fenster zur Seite gezogen zu haben und eine eigene Flugnavigation eingebaut zu haben.

Solutions Collecting From Web of "Wie hat Google das geschafft? Slide ActionBar in Android-Anwendung"

In der Tat gibt es einen Weg, dies zu tun. Auch ohne eigene ActionBar zu implementieren.

Schauen Sie sich den hierachyviewer ! (Befindet sich im Tools-Verzeichnis)

Da ist das DecorView und ein LinearLayout als Kind. Dieses LinearLayout enthält sowohl die ActionBar als auch den anderen Inhalt. Sie können also einfach einige FrameLayout.LayoutParams auf dieses LinearLayout und auf diese Weise etwas Platz auf der linken Seite erhalten. Dann können Sie diesen Bereich mit Ihrem menu-ListView füllen und den anderen Inhalt mit einem FrameLayout überlagern, das, wenn es angeklickt wird, das Menü zusammenklappt. Also, hier ist ein Code:

Zuerst die class zum Kollabieren / Erweitern (SlideMenu.java):

 package your.cool.app; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.graphics.Rect; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.Window; import android.view.animation.TranslateAnimation; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; public class SlideMenu { //just a simple adapter public static class SlideMenuAdapter extends ArrayAdapter { Activity act; SlideMenu.SlideMenuAdapter.MenuDesc[] items; class MenuItem { public TextView label; public ImageView icon; } static class MenuDesc { public int icon; public String label; } public SlideMenuAdapter(Activity act, SlideMenu.SlideMenuAdapter.MenuDesc[] items) { super(act, R.id.menu_label, items); this.act = act; this.items = items; } @Override public View getView(int position, View convertView, ViewGroup parent) { View rowView = convertView; if (rowView == null) { LayoutInflater inflater = act.getLayoutInflater(); rowView = inflater.inflate(R.layout.menu_listitem, null); MenuItem viewHolder = new MenuItem(); viewHolder.label = (TextView) rowView.findViewById(R.id.menu_label); viewHolder.icon = (ImageView) rowView.findViewById(R.id.menu_icon); rowView.setTag(viewHolder); } MenuItem holder = (MenuItem) rowView.getTag(); String s = items[position].label; holder.label.setText(s); holder.icon.setImageResource(items[position].icon); return rowView; } } private static boolean menuShown = false; private static View menu; private static LinearLayout content; private static FrameLayout parent; private static int menuSize; private static int statusHeight = 0; private Activity act; SlideMenu(Activity act) { this.act = act; } //call this in your onCreate() for screen rotation public void checkEnabled() { if(menuShown) this.show(false); } public void show() { //get the height of the status bar if(statusHeight == 0) { Rect rectgle = new Rect(); Window window = act.getWindow(); window.getDecorView().getWindowVisibleDisplayFrame(rectgle); statusHeight = rectgle.top; } this.show(true); } public void show(boolean animate) { menuSize = Functions.dpToPx(250, act); content = ((LinearLayout) act.findViewById(android.R.id.content).getParent()); FrameLayout.LayoutParams parm = (FrameLayout.LayoutParams) content.getLayoutParams(); parm.setMargins(menuSize, 0, -menuSize, 0); content.setLayoutParams(parm); //animation for smooth slide-out TranslateAnimation ta = new TranslateAnimation(-menuSize, 0, 0, 0); ta.setDuration(500); if(animate) content.startAnimation(ta); parent = (FrameLayout) content.getParent(); LayoutInflater inflater = (LayoutInflater) act.getSystemService(Context.LAYOUT_INFLATER_SERVICE); menu = inflater.inflate(R.layout.menu, null); FrameLayout.LayoutParams lays = new FrameLayout.LayoutParams(-1, -1, 3); lays.setMargins(0,statusHeight, 0, 0); menu.setLayoutParams(lays); parent.addView(menu); ListView list = (ListView) act.findViewById(R.id.menu_listview); list.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView< ?> parent, View view, int position, long id) { //handle your menu-click } }); if(animate) menu.startAnimation(ta); menu.findViewById(R.id.overlay).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { SlideMenu.this.hide(); } }); Functions.enableDisableViewGroup((LinearLayout) parent.findViewById(android.R.id.content).getParent(), false); ((ExtendedViewPager) act.findViewById(R.id.viewpager)).setPagingEnabled(false); ((ExtendedPagerTabStrip) act.findViewById(R.id.viewpager_tabs)).setNavEnabled(false); menuShown = true; this.fill(); } public void fill() { ListView list = (ListView) act.findViewById(R.id.menu_listview); SlideMenuAdapter.MenuDesc[] items = new SlideMenuAdapter.MenuDesc[5]; //fill the menu-items here SlideMenuAdapter adap = new SlideMenuAdapter(act, items); list.setAdapter(adap); } public void hide() { TranslateAnimation ta = new TranslateAnimation(0, -menuSize, 0, 0); ta.setDuration(500); menu.startAnimation(ta); parent.removeView(menu); TranslateAnimation tra = new TranslateAnimation(menuSize, 0, 0, 0); tra.setDuration(500); content.startAnimation(tra); FrameLayout.LayoutParams parm = (FrameLayout.LayoutParams) content.getLayoutParams(); parm.setMargins(0, 0, 0, 0); content.setLayoutParams(parm); Functions.enableDisableViewGroup((LinearLayout) parent.findViewById(android.R.id.content).getParent(), true); ((ExtendedViewPager) act.findViewById(R.id.viewpager)).setPagingEnabled(true); ((ExtendedPagerTabStrip) act.findViewById(R.id.viewpager_tabs)).setNavEnabled(true); menuShown = false; } } 

Einige Hilfsmethoden (für mich, in statischen functionen.java):

  public static int dpToPx(int dp, Context ctx) { Resources r = ctx.getResources(); return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, r.getDisplayMetrics()); } //originally: http://stackoverflow.com/questions/5418510/disable-the-touch-events-for-all-the-views //modified for the needs here public static void enableDisableViewGroup(ViewGroup viewGroup, boolean enabled) { int childCount = viewGroup.getChildCount(); for (int i = 0; i < childCount; i++) { View view = viewGroup.getChildAt(i); if(view.isFocusable()) view.setEnabled(enabled); if (view instanceof ViewGroup) { enableDisableViewGroup((ViewGroup) view, enabled); } else if (view instanceof ListView) { if(view.isFocusable()) view.setEnabled(enabled); ListView listView = (ListView) view; int listChildCount = listView.getChildCount(); for (int j = 0; j < listChildCount; j++) { if(view.isFocusable()) listView.getChildAt(j).setEnabled(false); } } } } 

Dann die Layouts:

Layout des Menüs (res / layout / menu.xml)

        

Layout der Listenelemente (res / layout / menu_listitem.xml):

     

Wie man es benutzt:

In Ihrem onCreate() :

 private SlideMenu slidemenu; @Override public void onCreate(Bundle savedInstanceState) { //your onCreate code slidemenu = new SlideMenu(this); slidemenu.checkEnabled(); } 

Im Handler für den ActionBar Homebutton:

 slidemenu.show(); 

Das ist es!

Und jetzt, ein kleiner Screenshot davon in Aktion:

SlideMenu

Soweit ich weiß, funktioniert es. Wenn Sie irgendwelche Probleme haben oder meine Erklärungen nicht klar sind, kontaktieren Sie mich bitte!

Bearbeiten: ExtendedViewPager & ExtendedPagerStrip :

ExtendedViewPager:

 package your.cool.app; //source: http://blog.svpino.com/2011/08/disabling-pagingswiping-on-android.html import android.content.Context; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.view.MotionEvent; public class ExtendedViewPager extends ViewPager { private boolean enabled; public ExtendedViewPager(Context context, AttributeSet attrs) { super(context, attrs); this.enabled = true; } @Override public boolean onTouchEvent(MotionEvent event) { if (this.enabled) { return super.onTouchEvent(event); } return false; } @Override public boolean onInterceptTouchEvent(MotionEvent event) { if (this.enabled) { return super.onInterceptTouchEvent(event); } return false; } public void setPagingEnabled(boolean enabled) { this.enabled = enabled; } } 

ExtendedPagerTabStrip:

 package your.cool.app; //source: http://blog.svpino.com/2011/08/disabling-pagingswiping-on-android.html import android.content.Context; import android.support.v4.view.PagerTabStrip; import android.util.AttributeSet; import android.view.MotionEvent; public class ExtendedPagerTabStrip extends PagerTabStrip { private boolean enabled; public ExtendedPagerTabStrip(Context context, AttributeSet attrs) { super(context, attrs); this.enabled = true; } @Override public boolean onTouchEvent(MotionEvent event) { if (this.enabled) { return super.onTouchEvent(event); } return false; } @Override public boolean onInterceptTouchEvent(MotionEvent event) { if (this.enabled) { return super.onInterceptTouchEvent(event); } return false; } public void setNavEnabled(boolean enabled) { this.enabled = enabled; } } 

Ich benutze dieses SlideMenu für eine Aktivität mit einem ViewPager mit PagerTabStrip für Tabs wie Talk, Market usw. Sie können diese Views nicht auf einfache Weise deaktivieren, so dass die beiden obigen classn sie nur erweitern, um das onTouch Event zu stoppen, wenn es deaktiviert ist.

Es gibt mehrere Versuche , dies zu tun, aber ich habe noch eine Lib oder Quellcode zu finden, wie es erfolgreich mit Actionbar über alle API-Ebenen zu implementieren. Eine vielversprechende Bibliothek ist hier

https://github.com/jfeinstein10/SlidingMenu

Hier ist ein Video der Beispiel-App .

Hier ist der Google Play App-Link.

Dies funktioniert mit ActionbarSherlock. Sie müssen die SlidingMenu-Bibliothek mit ABS bauen, damit es funktioniert. functioniert und sieht gut aus!

Hat eine Zusammenfassung der ursprünglichen Implementierung und hinzugefügt XML-Parsing sowie autodetection einer möglicherweise vorhandenen actionbar , so dass es mit der actionbar sowie eine Unterstützung ActionBarSherlock wie ActionBarSherlock .

Das Ganze ist jetzt ein Bibliotheksprojekt zusammen mit einer Beispiel App und wird im Sliding Menu für Android beschrieben. Danke an scirocco für die erste Idee und den Code!

LibSlideMenu Screenshot

Wenn Sie API-Level größer als 11 verwenden, können Sie einen viel einfacheren Ansatz verwenden, der von der Antwort von @Scirocco inspiriert ist

 // get content parent that is basically the whole // app screen (viewed from hierarchy viewer) final LinearLayout content = (LinearLayout) findViewById(android.R.id.content).getParent(); // make new value animator with range from 0 to 1 final ValueAnimator animator = ValueAnimator.ofFloat(0, 1); // set custom duration animator.setDuration(500); // on update is called for every value in the // given range in time frame defined by the duration animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { public void onAnimationUpdate(ValueAnimator animation) { // get the current value float value = ((Float) (animation.getAnimatedValue())).floatValue(); // translate by that value, minus means translate left content.setTranslationX(-250 * value); } }); // start the animator animator.start(); // make or inflate custom view for test purposes Button textView = new Button(this); textView.setText("TestButton"); // add it to the frame layout that is the parent of the content on position 0 FrameLayout parent = (FrameLayout) content.getParent(); parent.addView(textView, 0); 

Die Idee hier ist, ValueAnimator zu verwenden, der das ValueAnimator mit der Aktionsleiste transformiert und nicht nur animiert, sodass Sie mit der aufgeblähten Ansicht interagieren können, die Sie als verschiebbares Panel verwenden möchten. Sie sollten die fest codierten Werte durch etwas ersetzen, das für Ihre App von Nutzen ist.

Ich hoffe das hilft 🙂

Momentan arbeite ich an einem Projekt und bin auf das Sliding-Menü gestoßen. Ich habe gegoogelt, bin aber sehr enttäuscht, dass niemand ein Stück Code oder einen Hinweis gegeben hat, wie man ein gleitendes Menü macht, aber jeder hat einen Link zu einigen githubs projekte / bibliotheken zu benutzen, habe ich mich entschieden, es selbst zu machen und endlich habe ich mein eigenes Sliding Menu Ready …

Ich habe zwei Tage darauf verbracht

1. um Animationen des Schiebens zu machen

2. dass es mit allen Bildschirmauflösungen funktioniert

Es ist wirklich einfach und einfach, wenn Sie eine Idee über Animationen haben , habe ich einige wo gelesen, es ist nicht sinnvoll, das Rad neu zu erfinden (Leute, die Github Quellcode des gleitenden Menüs beziehen), aber ich glaube, dass Sie atleast einmal versuchen Sie, Ihre eigenen zu erstellen, damit Sie eine Vorstellung davon bekommen, wie es tatsächlich funktioniert und funktioniert: P

Das ist ein Bild davon, wie mein Sliding-Menü funktionieren wird

1.Find.xml //later in the code it will be refer as findLayout

 < ?xml version="1.0" encoding="utf-8"?>                  //here i included the filter.xml, which is on top of find.xml layout and is initially invisible  

Bildbeschreibung hier eingeben

2.Filter.xml //later in code refer as FilterLayout

 < ?xml version="1.0" encoding="utf-8"?>                             

Bildbeschreibung hier eingeben

In find.xml habe ich anfangs filter.xml eingefügt, was unsichtbar ist

Jetzt FilterAnimation.java

 package matchat.helpers; import com.s3.matchat.R; import android.content.Context; import android.util.DisplayMetrics; import android.view.View; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; import android.view.animation.AnimationUtils; import android.widget.RelativeLayout; public class FilterAnimation implements AnimationListener { Context context; RelativeLayout filterLayout, otherLayout; private Animation filterSlideIn, filterSlideOut, otherSlideIn, otherSlideOut; private static int otherLayoutWidth, otherLayoutHeight; private boolean isOtherSlideOut = false; private int deviceWidth; private int margin; public FilterAnimation(Context context) { this.context = context; DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); deviceWidth = displayMetrics.widthPixels; // as my animation is x-axis related so i gets the device width and will use that width,so that this sliding menu will work fine in all screen resolutions } public void initializeFilterAnimations(RelativeLayout filterLayout) { this.filterLayout = filterLayout; filterSlideIn = AnimationUtils.loadAnimation(context, R.anim.filter_slide_in); filterSlideOut = AnimationUtils.loadAnimation(context, R.anim.filter_slide_out); } public void initializeOtherAnimations(RelativeLayout otherLayout) { this.otherLayout = otherLayout; otherLayoutWidth = otherLayout.getWidth(); otherLayoutHeight = otherLayout.getHeight(); otherSlideIn = AnimationUtils.loadAnimation(context, R.anim.other_slide_in); otherSlideIn.setAnimationListener(this); otherSlideOut = AnimationUtils.loadAnimation(context, R.anim.other_slide_out); otherSlideOut.setAnimationListener(this); } public void toggleSliding() { if(isOtherSlideOut) //check if findLayout is already slided out so get so animate it back to initial position { filterLayout.startAnimation(filterSlideOut); filterLayout.setVisibility(View.INVISIBLE); otherLayout.startAnimation(otherSlideIn); } else //slide findLayout Out and filterLayout In { otherLayout.startAnimation(otherSlideOut); filterLayout.setVisibility(View.VISIBLE); filterLayout.startAnimation(filterSlideIn); } } @Override public void onAnimationEnd(Animation animation) { if(isOtherSlideOut) //Now here we will actually move our view to the new position,because animations just move the pixels not the view { RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(otherLayoutWidth, otherLayoutHeight); otherLayout.setLayoutParams(params); isOtherSlideOut = false; } else { margin = (deviceWidth * 80) / 100; //here im coverting device percentage width into pixels, in my other_slide_in.xml or other_slide_out.xml you can see that i have set the android:toXDelta="80%",so it means the layout will move to 80% of the device screen,to work across all screens i have converted percentage width into pixels and then used it RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(otherLayoutWidth, otherLayoutHeight); params.leftMargin = margin; params.rightMargin = -margin; //same margin from right side (negavite) so that our layout won't get shrink otherLayout.setLayoutParams(params); isOtherSlideOut = true; dimOtherLayout(); } } @Override public void onAnimationRepeat(Animation animation) { } @Override public void onAnimationStart(Animation animation) { } private void dimOtherLayout() { AlphaAnimation alphaAnimation = new AlphaAnimation(1.0f, 0.5f); alphaAnimation.setFillAfter(true); otherLayout.startAnimation(alphaAnimation); } } 

Jetzt Finde.java

 package main.matchat.activities; import matchat.helpers.FilterAnimation; import com.s3.matchat.R; import android.app.Activity; import android.os.Bundle; import android.util.DisplayMetrics; import android.view.View; import android.view.ViewTreeObserver; import android.view.View.OnClickListener; import android.view.ViewTreeObserver.OnGlobalLayoutListener; import android.widget.Button; import android.widget.RelativeLayout; public class Find extends Activity implements OnClickListener { RelativeLayout filterLayout, findLayout; Button btFilter; FilterAnimation filterAnimation; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.find); filterLayout = (RelativeLayout)findViewById(R.id.filter_layout); findLayout = (RelativeLayout)findViewById(R.id.find_layout); btFilter = (Button)findViewById(R.id.filter); btFilter.setOnClickListener(this); filterAnimation = new FilterAnimation(this); initializeAnimations(); } private void initializeAnimations() { //Setting GlobolLayoutListener,when layout is completely set this function will get called and we can have our layout onbject with correct width & height,else if you simply try to get width/height of your layout in onCreate it will return 0 final ViewTreeObserver filterObserver = filterLayout.getViewTreeObserver(); filterObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { filterLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this); DisplayMetrics displayMetrics = getResources().getDisplayMetrics(); int deviceWidth = displayMetrics.widthPixels; int filterLayoutWidth = (deviceWidth * 80) / 100; //here im coverting device percentage width into pixels, in my other_slide_in.xml or other_slide_out.xml you can see that i have set the android:toXDelta="80%",so it means the layout will move to 80% of the device screen,to work across all screens i have converted percentage width into pixels and then used it RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(filterLayoutWidth, RelativeLayout.LayoutParams.MATCH_PARENT); filterLayout.setLayoutParams(params);//here im setting the layout params for my filter.xml because its has width 260 dp,so work it across all screen i first make layout adjustments so that it work across all screens resolution filterAnimation.initializeFilterAnimations(filterLayout); } }); final ViewTreeObserver findObserver = findLayout.getViewTreeObserver(); findObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { findLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this); filterAnimation.initializeOtherAnimations(findLayout); } }); } @Override public void onClick(View v) { int id = v.getId(); switch(id) { case R.id.filter: filterAnimation.toggleSliding(); break; } } } 

Hier sind die Animationen res / anim

1.filter_slide_in.xml

 < ?xml version="1.0" encoding="utf-8"?>    

2.filter_slide_out.xml

 < ?xml version="1.0" encoding="utf-8"?>    

3.other_slide_in.xml

 < ?xml version="1.0" encoding="utf-8"?>    

4.other_slide_out.xml

 < ?xml version="1.0" encoding="utf-8"?>    

Sie gehen ein komplettes funktionierendes und funktionierendes Sliding Menu, und Sie können es anpassen, um Ihre Anforderungen zu erfüllen, wenn jemand noch einige Probleme beim Einrichten hat, fühlen Sie sich frei zu fragen, ich fühle mich Vergnügen, Ihnen zu helfen 🙂

Ich habe meine eigene Lösung geschaffen, um die Ansicht wegzuschieben und ein Menü darunter zu enthüllen, da viele andere Lösungen anscheinend bei älteren Android-Versionen nicht funktionierten oder keine korrekten statementen zur Verwendung hatten.

Meine Lösung hat folgende Eigenschaften:

  • Bietet Unterstützung für das Verschieben einer Ansicht, um ein darunter liegendes Menü anzuzeigen
  • Sowohl das Menü als auch die Ansicht oben können beliebige benutzerdefinierte Ansichten sein
  • Unterstützt auf alten Android-Versionen (getestet, um mindestens auf Android 2.2 zu funktionieren)
  • functioniert mit PhoneGap / Cordova Projekten

Die Lösung verwendet ein benutzerdefiniertes Layout namens “SlidingMenuLayout”, dem Sie zwei Ansichten hinzufügen müssen. Die erste Ansicht, die Sie hinzufügen, ist das Menü, die zweite ist die Hauptansicht.

Die einfachste Möglichkeit, das Layout zu Ihrem bestehenden Projekt hinzuzufügen, besteht darin, die setContentView() -Methode Ihrer Aktivität zu setContentView() :

 @Override public void setContentView(View view) { SlidingMenuLayout layout = new SlidingMenuLayout(this); layout.setLayoutParams(new LinearLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT, 0.0F)); layout.addView(new MenuView(this)); layout.addView(view); super.setContentView(layout); } 

In diesem Beispiel ist MenuView die Ansicht, die das Menü tatsächlich MenuView . Es liegt an Ihnen, diese Ansicht zu implementieren.
Schließlich können Sie eine Schaltfläche hinzufügen (normalerweise in der oberen linken Ecke der Hauptansicht), die je nach openMenu() oder closeMenu() im Layout closeMenu() .
Der Code für SlidingMenuLayout befindet sich auf der GitHub- Projektseite .

Für diejenigen von euch, die die SlidingMenu- Bibliothek verwenden ( https://github.com/jfeinstein10/SlidingMenu ), gibt es eine Möglichkeit, es zu übernehmen und es scheint zu funktionieren! Mit Hilfe von @Scirocco legen Sie dies in Ihr onCreate für die Aktivität:

 ViewGroup decorView = (ViewGroup) getWindow().getDecorView(); mSlidingMenu = new SlidingMenu(this); ViewGroup mainContent = (ViewGroup) decorView.getChildAt(0); decorView.removeView(mainContent); mSlidingMenu.setContent(mainContent); decorView.addView(mSlidingMenu); mMenu = (LinearLayout) View.inflate(this, R.layout.menuview, null); mSlidingMenu.setMenu(mMenu); mSlidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); mSlidingMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset); 

Grundsätzlich ersetzt es stattdessen das slidingmenu linearlayout in der linearlayout durch das linearlayout slidingmenu .

Hinweis: Ich habe es nur leicht getestet, aber es scheint zu funktionieren.

  public class ImprovedSlidingPaneLayout extends SlidingPaneLayout { Context context; FrameLayout left; FrameLayout right; Boolean canOpen = true; public ImprovedSlidingPaneLayout(Context context) { super(context); this.context = context; this.left = new FrameLayout(context); this.right = new FrameLayout(context); this.addView(left); this.addView(right); } public ImprovedSlidingPaneLayout(Context context, AttributeSet attrs) { super(context, attrs); this.context = context; } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { if (canOpen) return super.onInterceptTouchEvent(ev); else return false; } public ImprovedSlidingPaneLayout canOpen(Boolean canOpen) { this.canOpen = canOpen; return this; } public ImprovedSlidingPaneLayout makeActionBarSlide(Window window){ ViewGroup decorView = (ViewGroup) window.getDecorView(); ViewGroup mainContent = (ViewGroup) decorView.getChildAt(0); decorView.removeView(mainContent); setContentView(mainContent); decorView.addView(this); return this; } public ImprovedSlidingPaneLayout setMenuView(View view){ if((left.getChildCount()== 1)){ left.removeView(left.getChildAt(0)); } left.addView(view); return this; } public ImprovedSlidingPaneLayout setContentView(View view){ if((right.getChildCount()== 1)){ right.removeView(right.getChildAt(0)); } right.addView(view); return this; } public ImprovedSlidingPaneLayout setMenuWidth(int width){ left.setLayoutParams(new SlidingPaneLayout.LayoutParams(width, ViewGroup.LayoutParams.MATCH_PARENT)); return this; } } 

Das ist meine class verlängert SlidingPaneLayout . Kann mit actio gleiten