2013-06-25 2 views
8

Я работаю с facebook, как раздвижное меню, но я столкнулся с небольшой проблемой, не знаю, как добавить раздвижное меню в каждый вид деятельности, например, показ меню в PrincipalActivity как это:Как показать раздвижное меню в каждом действии

enter image description here

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> 

Здесь в тесте активности я также хочу показать 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> 

S o Пожалуйста, скажите мне, как должен выглядеть мой код, какой код мне нужно добавить во все мои действия, чтобы показать Скользящее меню.

+0

Кажется, вам нужно реализовать навигационный ящик. Оформить заказ [этот учебник] (http://developer.android.com/design/patterns/navigation-drawer.html) на нем. Кроме того, [это 2013 I/O] (http://youtu.be/Jl3-lzlzOJI?t=5m15s) видео содержит часть с хорошим описанием ее использования. – sandrstar

ответ

2

Возможно, вы захотите переосмыслить свой дизайн. Я сделал несколько коммерческих приложений для клиентов, использующих скользящие меню. В таких приложениях у меня обычно есть центральное действие, а все остальное - фрагменты, у самой активности может быть строка заголовка, или вкладки, или меню, или ничего, но все сложные представления являются фрагментами. Как правило, вы хотите, чтобы активность реализовала наиболее распространенные виды и элементы управления на всех экранах, которые будут иметь одинаковую функциональность, независимо от того, что.

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

В любом случае вы захотите использовать фрагменты, будь то из библиотеки поддержки, или если вы нацеливаете API достаточно высоко, просто обычные.

Тогда вы должны изучить фрагментацию транзакций и изменить положение фрагментов.

0

вы достигли максимума, некоторые изменения нужно в вас код ....

Шаг 1: сохранить ваш супер активность (PrincipalActivity) содержит только идентификаторы меню (идентификаторы actionbar_layout), и элементы (удалить относительное расположение, список просмотра и т.д. идентификаторы)

Шаг 2: удалить метод на создание вашей супер активности (PrincipalActivity) ...

SETP 3: создать метод с именем initmenu и инициализировать точку в этом методе

public void initmenu(){ 
this.listMenu = (ListView) findViewById(R.id.listMenu); 
    ... 
} 

Этап 4: в тестовой деятельности используется setContetView(R.layout.principal); Шаг 5: вызов метода initmenu() после представления setcontet в тестовой активности ... вы почти сделали сейчас ..возможны некоторые изменения:

Смежные вопросы