Слайд в стиле Android для Facebook - PullRequest
281 голосов
/ 28 декабря 2011

Новое приложение Facebook и его навигация так круты.Я просто пытался увидеть, как это может быть воспроизведено в моем приложении.

Кто-нибудь знает, как этого достичь?

enter image description here

При нажатии на верхнюю левую кнопку открывается слайд страницы и отображается следующий экран:

enter image description here

YouTube Video

Ответы [ 25 ]

8 голосов
/ 20 апреля 2012

Пока не комментируете ответ, данный @Paul Grime, в любом случае я представил в его проекте github исправление проблемы с мерцанием ....

Я выложу исправление здесь,может кому-то это нужно.Вам просто нужно добавить две строки кода.Первый под вызовом anim.setAnimationListener:

anim.setFillAfter(true);

А второй после вызова app.layout ():

app.clearAnimation();

Надеюсь, это поможет:)

6 голосов
/ 09 января 2012

Я реализовал это с AbsoluteLayout и простым контроллером слайдов, который перемещает вид на отрицательное смещение, чтобы скрыть.

Если кому-то интересно, я могу очистить код / ​​макет и опубликовать.Я знаю, что AbsoluteLayout устарела, но это была очень прямолинейная реализация.Вид слева / вид справа, и, когда «скользит в открытом положении», просто переместите вид слева от смещения -X на ширину устройства - все, что вы хотите показать на правом просмотре

4 голосов
/ 11 апреля 2013

Здравствуйте, это лучший пример демонстрационного приложения, которое предоставляет слайд-меню на Facebook.Проверьте код здесь

enter image description here

enter image description here

3 голосов
/ 04 апреля 2013

В составе моей общей библиотеки Android (ACL) я реализовал собственный SideBar. Основные преимущества:

  1. Боковая панель может быть установлена ​​в любое положение: слева, сверху, снизу, справа
  2. Кликабельны и основной, и скользящий вид
  3. Боковая панель может быть частично показана
  4. Стили атрибутов для SideBar упрощают изменение его стиля
  5. Артефакт в репо Maven
  6. Часть большой библиотеки

Исходный код: https://github.com/serso/android-common/tree/master/views/src/main/java/org/solovyev/android/view/sidebar

Использование: https://github.com/serso/android-common/blob/master/samples/res/layout/acl_view_layout.xml

3 голосов
/ 19 мая 2013

Недавно я работал над версией моего скользящего меню. Используется популярная Android-библиотека J.Feinstein SlidingMenu.

Пожалуйста, проверьте исходный код на GitHub:

https://github.com/baruckis/Android-SlidingMenuImplementation

Загрузите приложение прямо на устройство, чтобы попробовать:

https://play.google.com/store/apps/details?id=com.baruckis.SlidingMenuImplementation

Код должен быть понятен из-за комментариев. Я надеюсь, что это будет полезно! ;)

3 голосов
/ 11 апреля 2016

Я нашел самый простой способ для этого и его работы. Используйте простой навигационный ящик и вызовите box.setdrawerListner () и используйте метод mainView.setX () в методе hookSlide ниже или скопируйте мой код.

XML-файл

 <android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000" >

<RelativeLayout
    android:id="@+id/content_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffffff">

  <ImageView
      android:layout_width="40dp"
      android:layout_height="40dp"
      android:id="@+id/menu"
      android:layout_alignParentTop="true"
      android:layout_alignParentLeft="true"
      android:layout_marginTop="10dp"
      android:layout_marginLeft="10dp"
      android:src="@drawable/black_line"
      />
</RelativeLayout>


<RelativeLayout
    android:id="@+id/left_drawer"
    android:layout_width="200dp"
    android:background="#181D21"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    >
    </RelativeLayout>
 </android.support.v4.widget.DrawerLayout>

Java-файл

   public class MainActivity extends AppCompatActivity {
DrawerLayout drawerLayout;
RelativeLayout mainView;
ImageView menu;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    menu=(ImageView)findViewById(R.id.menu);
    drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mainView=(RelativeLayout)findViewById(R.id.content_frame);

    menu.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            drawerLayout.openDrawer(Gravity.LEFT);
        }
    });

    drawerLayout.setDrawerListener(new DrawerLayout.DrawerListener() {
        @Override
        public void onDrawerSlide(View drawerView, float slideOffset) {
            mainView.setX(slideOffset * 300);
        }

        @Override
        public void onDrawerOpened(View drawerView) {

        }

        @Override
        public void onDrawerClosed(View drawerView) {

        }

        @Override
        public void onDrawerStateChanged(int newState) {

        }
    });
 }
}

enter image description here

Спасибо

2 голосов
/ 28 декабря 2011

Я собираюсь сделать некоторые смелые предположения здесь ...

Я предполагаю, что у них есть макет, который представляет меню, которое не видно.При нажатии кнопки меню они анимируют макет / вид сверху, чтобы сместить его, и просто обеспечивают видимость макета меню.Я не думал о том, чтобы это вызывало какие-либо проблемы с z-индексами в представлениях или как они это контролируют.

2 голосов
/ 26 мая 2014

Вот руководство по проектированию и разработке, которое можно найти в официальной документации Android, не нужно добавлять неофициальную внешнюю библиотеку. Подойдет только библиотека поддержки Android. Найти ссылки здесь.

дизайн и разработка .

1 голос
/ 24 августа 2012

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

реализация боковой строки меню с использованием кода Java без XML

1 голос
/ 03 апреля 2014

Android добавил навигационный ящик.Ссылка

ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...