I am working with facebook like Sliding Menu, but i am facing a small problem, don't know how to add Sliding Menu in each and every Activity, like showing menu in PrincipalActivity like this:
PrincipalActivity.java:
public class PrincipalActivity extends Activity {
public static final String ID = "id";
public static final String ICON = "icon";
public static final String TITLE = "title";
public static final String DESCRIPTION = "description";
private RelativeLayout layout;
private MenuLazyAdapter menuAdapter;
private boolean open = false;
private final Context context = this;
private ListView listMenu;
private TextView appName;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.principal);
this.listMenu = (ListView) findViewById(R.id.listMenu);
this.layout = (RelativeLayout) findViewById(R.id.layoutToMove);
this.appName = (TextView) findViewById(R.id.appName);
this.menuAdapter = new MenuLazyAdapter(this, MenuEventController.menuArray.size() == 0 ? MenuEventController.getMenuDefault(this) : MenuEventController.menuArray);
this.listMenu.setAdapter(menuAdapter);
this.layout.setOnTouchListener(new OnSwipeTouchListener() {
public void onSwipeRight() {
if(!open){
open = true;
MenuEventController.open(context, layout, appName);
MenuEventController.closeKeyboard(context, getCurrentFocus());
}
}
public void onSwipeLeft() {
if(open){
open = false;
MenuEventController.close(context, layout, appName);
MenuEventController.closeKeyboard(context, getCurrentFocus());
}
}
});
this.listMenu.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//Your intent object is null, you need set a intent to this object,
//like in 0 position
Intent intent = null;
if(position == 0){
//action
//Here you need create the intent
//LOOK
intent = new Intent(PrincipalActivity.this, org.shipp.activity.Test.class);
} else if(position == 1){
//action
//Here you need create the intent
intent = new Intent(PrincipalActivity.this, org.shipp.activity.Test2.class);
} else if(position == 2){
//if activity is this just close menu before verify if menu is open
if(open){
open = false;
MenuEventController.close(context, layout, appName);
MenuEventController.closeKeyboard(context, view);
}
} else if(position == 3){
//Here you need create the intent
//intent = new Intent(this, MyNewActivity3.class);
} else if(position == 4){
//Here you need create the intent
//intent = new Intent(this, MyNewActivity4.class);
} else if(position == 5){
//Here you need create the intent
//intent = new Intent(this, MyNewActivity5.class);
} else if(position == 6){
//Here you need create the intent
//intent = new Intent(this, MyNewActivity6.class);
} else if(position == 7){
//Here you need create the intent
//intent = new Intent(this, MyNewActivity7.class);
}
//Check the position if different of current a intent are started else menu just closed
if(position != 2){
startActivity(intent);
PrincipalActivity.this.finish();
overridePendingTransition(R.anim.slide_left, R.anim.slide_left);
}
}
});
}
public void openCloseMenu(View view){
if(!this.open){
this.open = true;
MenuEventController.open(this.context, this.layout, this.appName);
MenuEventController.closeKeyboard(this.context, view);
} else {
this.open = false;
MenuEventController.close(this.context, this.layout, this.appName);
MenuEventController.closeKeyboard(this.context, view);
}
}
}
principal.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/menu_bg"
tools:context=".PrincipalActivity" >
<include layout="@layout/actionbar_menu" android:id="@+id/actionBarMenu"/>
<ListView
android:id="@+id/listMenu"
android:layout_below="@+id/actionBarMenu"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:divider="#282828"
android:dividerHeight="1dip"
android:background="#3F3F3F"
android:fadingEdge="none"
android:listSelector="@drawable/list_selector">
</ListView>
<RelativeLayout
android:id="@+id/layoutToMove"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/actionBar"
android:background="#282828">
<include layout="@layout/actionbar_layout" android:id="@+id/actionBar"/>
<ImageButton
android:id="@+id/menuButton"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_alignBottom="@+id/actionBar"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:onClick="openCloseMenu"
android:src="@drawable/menu"
android:background="@android:color/transparent" />
<Button
android:id="@+id/separator"
android:layout_width="1dp"
android:layout_height="50dp"
android:layout_toRightOf="@+id/menuButton"
android:background="@drawable/custom_button_black" />
</RelativeLayout>
</RelativeLayout>
Here in Test Activity i also want to show Sliding Menu
Test.java:
public class Test extends PrincipalActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
}
}
test.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="186dp"
android:text="Test" />
</RelativeLayout>
So please tell me how my code should look like, what code i need to add in my all activity's to show Sliding Menu.
I think you may want to rethink your design. I have made quite a few commercial apps for clients using sliding menus. In such apps I usually have a central activity, and all else is fragments, the activity itself might have a title bar, or tabs, or a menu, or nothing, but all the complex views are fragments. Generally you want to have the activity implement the most common views and controls in all the screens that will have the same functionality no matter what.
If you really must do it this way I suggest making a parent class to deal with all the sliding functionality, and have your activities that need the sliding functionality inherit from it.
In any case you are going to want to use fragments, whether from the support library, or if you target API is high enough, just the regular ones.
Then what you should look into is fragment transaction animations, and changing the position of the fragments views.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With