Как показать DrawerLayout при скольжении слева направо, независимо от того, где?

задний план

Google представил DrawerLayout, который показывает меню в левой части экрана, когда вы нажимаете кнопку «вверх» на панели действий.

поскольку библиотека еще не поддерживается в actionBarSherlock, уже есть способ преодолеть это с помощью этот проект .

у него уже есть варианты для многих приложений: Currents, Gmail, Hangouts, YouTube...

вопрос

в приложении "currents" (и на youtube), когда пользователь перемещает (самую левую) страницу слева направо, появляется DrawerLayout, независимо от того, где палец начал касание.

как я могу добиться того же эффекта? возможно, мне следует использовать onInterceptTouchEvent ?

не так много документации и руководств о том, какие интересные вещи можно сделать, кроме этого ссылка (хорошо и эта тоже). они говорят (в части «Дайте пользователю быстрый взгляд»), что для этой функции используется около 20 dp слева, но я вижу, что «токи» работают с гораздо большей площадью.

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


РЕДАКТИРОВАТЬ: кажется, что библиотека с открытым исходным кодом. код доступен на:

.../android-sdk\sources\android-18\android\support\v4\widget\DrawerLayout.java
.../android-sdk\sources\android-18\android\support\v4\widget\SlidingPaneLayout.java
.../android-sdk\sources\android-18\android\support\v4\app\ActionBarDrawerToggle.java

теперь вопрос в том, как заставить его работать так, как я написал, чтобы он работал как на youtube, позволяя нам настроить, как он выглядит и откуда разрешить его прокрутку.


person android developer    schedule 17.07.2013    source источник
comment
Я не уверен, правильно ли я понял, я также использую новый ящик навигации, и он всегда работает без каких-либо дополнительных настроек. Я работаю над проектом с: ABS + Navigation Drawer + Fragments + GMaps, и у меня не было проблем с перемещением правого или левого ящика с самой левой или самой правой стороны всего экрана. Вы объявляете ящики в xml как рекомендуется?   -  person unmultimedio    schedule 29.07.2013
comment
я использую то, что я опубликовал. Вы говорите, что мне не нужно смотреть на этот проект, а просто использовать то, что есть в Google? нормально ли он работает с ABS и позволяет ли мне настроить, насколько далеко он будет запускать прокрутку навигационного ящика (например, от середины экрана)? если да, то как? пример приложения, которое у них есть, позволяет прокручивать только тогда, когда вы начинаете касаться самой левой стороны экрана...   -  person android developer    schedule 29.07.2013
comment
Что ж, я абсолютно уверен, что ABS + новый навигационный ящик интегрируются без каких-либо проблем, без какой-либо дополнительной помощи, такой как проект, который вы разместили. Что касается области экрана, которая распознается при скольжении для появления ящика, довольно тонкая, и я не уверен, что ее можно изменить, например, скользящую библиотеку (нет, край, весь экран). Пример, который вы приводите (youtube), недействителен, он не использует навигационный ящик, я бы сказал, что они используют библиотеку скользящего меню. Google+ использует новый навигационный ящик, и если вы попробуете, область экрана для скольжения будет такой же тонкой левой границей.   -  person unmultimedio    schedule 29.07.2013
comment
на ютубе есть панель навигации. может быть, это не выглядит так же, но это работает. возможно вам стоит обновить приложение. в качестве альтернативы вы можете попробовать течения от Google. в любом случае, мой вопрос заключался в том, как я могу сделать его настраиваемым, чтобы я мог контролировать, где запускать прокрутку навигационного ящика?   -  person android developer    schedule 29.07.2013
comment
Хорошо, я нашел ответ. к сожалению не возможно. Всего 20dp от края: Give the user a quick peek If the user touches the very left edge of the screen (within 20 dp from the left), have the drawer peek out as soon as the finger makes contact with the display. This promotes accidental discovery and provides richer feedback. Посмотрите здесь. В этом случае вам нужен другой способ определить касание в области, в которой вы не хотите, и вызвать ящик с помощью mDrawerLayout.openDrawer(mDrawer)   -  person unmultimedio    schedule 29.07.2013
comment
@ khale912 да, это то, что я написал. в любом случае, если они говорят, что мы должны дать это пространство, значит, оно настраиваемое, нет? не является частью руководящих принципов? разрешить хотя бы эту ширину? 20dp очень тонкий, и я не хочу иметь триггер прокрутки всего экрана...   -  person android developer    schedule 29.07.2013
comment
я не хочу открывать ящик. я хочу прокручивать его прикосновением пользователя, чтобы только при полной прокрутке вправо и прекращении касания экрана отображался весь ящик, но если вы находитесь в середине прокрутки, покажите только его часть. пожалуйста, просто попробуйте YouTube или потоки, если вы не можете понять, что я имею в виду.   -  person android developer    schedule 29.07.2013
comment
Я проверил оба из них, они используют весь экран для перемещения левого меню, и это меню находится за представлением (вы можете сказать по тени), а содержимое перемещается вправо. Их вполне можно использовать с помощью библиотеки slidemenu. Посмотрите, если бы они использовали новый навигационный ящик, левое меню (ящик) должно быть над содержимым, оставляя тень между ящиком и содержимым и не сдвигая содержимое вправо, как левый ящик G+ делает. Могу поспорить, что и Currents, и YouTube используют библиотеку slidemenu, и они скользят, используя getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN)   -  person unmultimedio    schedule 29.07.2013
comment
так что никакой настройки, хотя текст намекает на это? очень жаль. Вы можете придумать способ преодолеть это? в этом и был весь смысл моего вопроса, и я подумал, что это возможно, и даже высказал некоторые идеи. даже сама IDE не может правильно отобразить макет.   -  person android developer    schedule 29.07.2013
comment
я также не могу найти, в каком классе есть функция getSlidingMenu()...   -  person android developer    schedule 30.07.2013
comment
getSlidingMenu из библиотеки jfeinstein slidemenu (сторонняя), кстати, я уже получил ответ, чтобы настроить 20dp по умолчанию, я опубликую его через пару минут, пока я попробую некоторые детали.   -  person unmultimedio    schedule 30.07.2013
comment
Похоже, что Google не хочет, чтобы это 20dp было изменено, поэтому они не предоставляют доступ к этому свойству легко. Но есть способ изменить это, проверьте ответ, который я только что опубликовал. Уже попробовал, работает.   -  person unmultimedio    schedule 30.07.2013
comment
ответ не работает, как ожидалось. плюс я заметил, что это не имеет такого же эффекта прокрутки, как на YouTube. на YouTube правая область находится над левым ящиком, и при прокрутке отображается часть ящика. используя обычную библиотеку, все наоборот. интересно, почему навигационный ящик не с открытым исходным кодом.   -  person android developer    schedule 30.07.2013
comment
Если вам действительно нужен эффект YouTube или Currents, рассмотрите возможность реализации библиотеки jfeinstein... Это потрясающе, я пробовал, и он работает гладко, единственная проблема в том, что это немного сложно, когда вы хотите использовать карты в качестве основного содержимого/фрагмента... поэтому я перешел на официальный навигационный ящик   -  person unmultimedio    schedule 30.07.2013


Ответы (8)


SlidingMenu — лучшая библиотека для слайдов, которую я когда-либо встречал. Это очень хорошая библиотека.
Вы можете установить getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN) включение броска для всего экрана.

person Sadegh    schedule 23.07.2013
comment
Я хочу настроить разрешенную область. Кроме того, поддерживает ли эта библиотека actionBarSherlock? - person android developer; 23.07.2013
comment
Да! Он интегрирован с библиотекой actionbarsherlock, как я сказал в своем ответе, вы можете `setTouchModeAbove (SlidingMenu.TOUCHMODE_FULLSCREEN), который контролирует, можно ли открыть SlidingMenu жестом смахивания - person Sadegh; 23.07.2013
comment
Другие варианты настройки: mSlidingMenu.setShadowWidthRes(), mSlidingMenu.setShadowDrawable(), mSlidingMenu.setBehindWidthRes(), mSlidingMenu.setFadeDegree() и тому подобное. Я перепробовал почти все библиотеки скользящих меню на github. SlidingMenu намного лучше - person Sadegh; 23.07.2013
comment
так что я могу сделать, чтобы, если (например) я хочу, чтобы когда палец касается левой части половины экрана, он показывал ящик, а если он находился в правой половине экрана, он не будет? - person android developer; 23.07.2013
comment
Я также хочу иметь возможность настроить ящик так, чтобы он имел любой вид, который я хочу. поддерживает ли он это, как библиотека, которую я показал? - person android developer; 23.07.2013
comment
что я могу сделать, чтобы он мог скользить с половины экрана, но не более того? Кроме того, можно ли сделать так, чтобы правая область была сверху, и она просто сдвигала ее в сторону и показывала ящик, как на YouTube? - person android developer; 30.07.2013
comment
Для половины экрана, я думаю, вы должны рассчитать размер экрана и DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); int width = metrics.widthPixels;, а затем mSlidingMenu..setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); и mSlidingMenu.setTouchmodeMarginThreshold(width/2); - person Sadegh; 30.07.2013
comment
и если вы не хотите перемещать ActionBar, установите это: setSlidingActionBarEnabled(false); - person Sadegh; 30.07.2013
comment
я думаю, что я буду использовать эту библиотеку вместо той, которую предоставляет Google, хотя я думаю, что можно как-то использовать их. очень жаль, что у них нет javaDocs (API). Спасибо. - person android developer; 31.07.2013

Проблема в том, что DrawerLayout использует ViewDragHelper, у которого есть EDGE_SIZE по умолчанию, равный 20dp, который используется для расчета mEdgeSize следующим образом:

mEdgeSize = (int) (EDGE_SIZE * density + 0.5f);

Вот функция, которая устанавливает mEdgeSize в процентах от ширины экрана:

public static void setDrawerLeftEdgeSize(Activity activity, DrawerLayout drawerLayout, float displayWidthPercentage) {
    if (activity == null || drawerLayout == null)
        return;

    try {
        // find ViewDragHelper and set it accessible
        Field leftDraggerField = drawerLayout.getClass().getDeclaredField("mLeftDragger");
        leftDraggerField.setAccessible(true);
        ViewDragHelper leftDragger = (ViewDragHelper) leftDraggerField.get(drawerLayout);
        // find edgesize and set is accessible
        Field edgeSizeField = leftDragger.getClass().getDeclaredField("mEdgeSize");
        edgeSizeField.setAccessible(true);
        int edgeSize = edgeSizeField.getInt(leftDragger);
        // set new edgesize
        Point displaySize = new Point();
        activity.getWindowManager().getDefaultDisplay().getSize(displaySize);
        edgeSizeField.setInt(leftDragger, Math.max(edgeSize, (int) (displaySize.x * displayWidthPercentage)));
    } catch (NoSuchFieldException e) {
        // ignore
    } catch (IllegalArgumentException e) {
        // ignore
    } catch (IllegalAccessException e) {
        // ignore
    }
}

Итак, допустим, вы хотите, чтобы 30% вашего левого края реагировали на события слайдов и открывали панель навигации, а затем просто вызовите:

mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
setDrawerLeftEdgeSize(this, mDrawerLayout, 0.3f);
person Espen Riskedal    schedule 14.11.2013
comment
он все еще работает дурацким образом. попробуйте установить размер 0.5f , а затем только долго щелкните по левой стороне. он по-прежнему вызывает отображение ящика, и показывает его очень быстро. Кстати, вы использовали слишком высокий API для получения ширины экрана. вместо этого вы можете использовать: activity.getResources().getDisplayMetrics().widthPixels - person android developer; 16.11.2013
comment
Я пробовал с 0.7f здесь и долгим кликом. Скорость анимации меня по-прежнему устраивает (у меня S3). Но я предполагаю, что продолжительность анимации фиксирована, и, следовательно, чтобы анимировать ящик гораздо больше за то же время - он просто должен двигаться быстрее. Примечание. Я специально использовал «getSize (..)», поскольку я нахожусь на последнем уровне API. - person Espen Riskedal; 18.11.2013
comment
длительное нажатие не должно вызывать отображение выдвижного ящика. движение ящика движется странным образом, и мне трудно объяснить. У меня тоже СГС3. о getSize(), вы должны включить проверки Lint при сохранении, чтобы он предупреждал вас об использовании слишком новых функций/классов. targetSdk в манифесте должен быть последним (на данный момент 19), а minSdk может быть любым, который вы хотите поддерживать (8 или 9 покрывает почти 100%). - person android developer; 18.11.2013
comment
Да, длинный щелчок должен открыть ящик - это упоминается здесь, например, plus.google.com/ +АдамВПауэлл/posts/8j2GVw72i1E. Или вы имеете в виду, что он должен заглядывать только при нажатии на краю? И да, я специально установил minSdkVersion=14. В наши дни установка API 8 (или 9) создает слишком много проблем с совместимостью по сравнению с долей рынка IMO. - person Espen Riskedal; 18.11.2013

Я попытался изменить решение EDGE_SIZE по умолчанию и столкнулся с проблемой долгого щелчка. Наконец, я обнаружил, что переопределяет dispatchTouchEvent и открывает ящик в зависимости от направления скольжения, вычисляя смещение по оси X.

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    int action = ev.getAction();
    switch (action) {
        case MotionEvent.ACTION_DOWN:
            startX = ev.getX();
            startY = ev.getY();
            break;
        case MotionEvent.ACTION_UP:
            endX = ev.getX();
            endY = ev.getY();

            float sensitivity = 5;
            // From left to right
            if (endX - startX >= sensitivity) {
                if (mDrawerLayout.isDrawerOpen(Gravity.RIGHT)) {
                    mDrawerLayout.closeDrawer(Gravity.RIGHT);
                } else {
                    mDrawerLayout.openDrawer(Gravity.LEFT);
                }
            }

            // From right to left
            if (startX - endX >= sensitivity) {
                if (mDrawerLayout.isDrawerOpen(Gravity.LEFT)) {
                    mDrawerLayout.closeDrawer(Gravity.LEFT);
                } else {
                    mDrawerLayout.openDrawer(Gravity.RIGHT);
                }
            }

            break;
    }
person seauniv    schedule 19.12.2014

Используя помощь других: (first) (секунда)

Я обнаружил, что с помощью отражений можно изменить 20dp-экранный край по умолчанию, чтобы меню ящика скользило.

После объявления содержимого и ящиков вы можете сделать это:

public class MainActivity extends Activity {
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    mDrawerList = (ListView) findViewById(R.id.left_drawer);

    // set a custom shadow that overlays the main content when the drawer opens
    mDrawerLayout.setDrawerShadow(R.drawable.your_drawer_shadow, GravityCompat.START);
    // set up the drawer's list view with items and click listener
    mDrawerList.setAdapter(new ArrayAdapter<String>(this,
            R.layout.your_drawer_list, yourItems));
    mDrawerList.setOnItemClickListener(new DrawerItemClickListener());

    // enable ActionBar app icon to behave as action to toggle nav drawer
    getActionBar().setDisplayHomeAsUpEnabled(true);
    getActionBar().setHomeButtonEnabled(true);

    Field mDragger = null;
    try {
        mDragger = mDrawerLayout.getClass().getDeclaredField(
                "mLeftDragger"); //mRightDragger for right obviously
    } catch (NoSuchFieldException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    mDragger.setAccessible(true);
    ViewDragHelper draggerObj = null;
    try {
        draggerObj = (ViewDragHelper) mDragger
                .get(mDrawerLayout);
    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    Field mEdgeSize = null;
    try {
        mEdgeSize = draggerObj.getClass().getDeclaredField(
                "mEdgeSize");
    } catch (NoSuchFieldException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    mEdgeSize.setAccessible(true);
    int edge = 0;
    try {
        edge = mEdgeSize.getInt(draggerObj);
    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    try {
        mEdgeSize.setInt(draggerObj, edge * 5); //optimal value as for me, you may set any constant in dp
        //You can set it even to the value you want like mEdgeSize.setInt(draggerObj, 150); for 150dp
    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    // ActionBarDrawerToggle ties together the the proper interactions
    // between the sliding drawer and the action bar app icon
    mDrawerToggle = new ActionBarDrawerToggle(
            this,                  /* host Activity */
            mDrawerLayout,         /* DrawerLayout object */
            R.drawable.ic_drawer,  /* nav drawer image to replace 'Up' caret */
            R.string.drawer_open,  /* "open drawer" description for accessibility */
            R.string.drawer_close  /* "close drawer" description for accessibility */
            ) {
        public void onDrawerClosed(View view) {

        }

        public void onDrawerOpened(View drawerView) {

        }
    };
    mDrawerLayout.setDrawerListener(mDrawerToggle);

}
}

Ну, это работает для меня человек!

person unmultimedio    schedule 29.07.2013
comment
хорошая работа, но: 1. не слишком ли рискованно использовать отражение? нельзя ли расширить класс и использовать то, что уже есть? может просто скопировать его код (где код вообще?)? 2. это не работает, так как перестает прокручиваться до того, как содержимое отображается полностью. 3. Вы можете поместить весь новый код в один try-catch, так как если один из них потерпит неудачу, то и остальные тоже потерпят неудачу. - person android developer; 30.07.2013
comment
ну, 1. да, это рискованно, пока вы не поймаете должным образом все исключения, в случае, если что-то не работает, как ожидалось, вам нужно быть готовым с планом B (в данном случае это будет 20 дп по умолчанию , или просто кнопку домой). Было бы здорово расширить и переопределить методы, проблема в том, что у нас нет полного доступа к ним, а не с открытым исходным кодом. :( 2. Я тоже это заметил, после прокрутки отображается дополнительное пространство 3. Вы можете попробовать это, но вы потеряете пространство присваивания в памяти, инициализируя все переменные, которые вы собираетесь использовать внутри части try {} , хотя и не большая часть. - person unmultimedio; 30.07.2013
comment
1. на самом деле это с открытым исходным кодом. я обновил вопрос, чтобы указать путь к файлам. 2. Должен быть лучший способ. 3. в этом небольшом примере вам не нужны переменные на случай, если на каком-либо из шагов произойдет сбой. - person android developer; 30.07.2013
comment
Этот пример кода сразу переходит к NoSuchFieldException на моем HTC One kitkat. - person Timothy Miller; 09.11.2014

Вы можете использовать это с Navigation Drawer

DrawerLayout mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
Field mDragger = mDrawerLayout.getClass().getDeclaredField(
    "mLeftDragger");//mRightDragger or mLeftDragger based on Drawer Gravity
mDragger.setAccessible(true);
ViewDragHelper draggerObj = (ViewDragHelper) mDragger
    .get(mDrawerLayout);

Field mEdgeSize = draggerObj.getClass().getDeclaredField(
    "mEdgeSize");
mEdgeSize.setAccessible(true);
int edge = mEdgeSize.getInt(draggerObj);

mEdgeSize.setInt(draggerObj, edge * 3); 
person moallemi    schedule 04.11.2013
comment
это работает, но это дурацко. если я изменю его на 30 вместо 3, это будет работать очень странно. - person android developer; 10.11.2013
comment
Спасибо за эту подсказку! Я немного улучшил его в отдельном ответе ниже. - person Espen Riskedal; 14.11.2013

Во-первых, я не уверен, что вы имеете в виду, говоря, что ActionBarSherlock не поддерживает DrawerLayout. Вы вполне можете работать с DrawerLayout и ActionBarSherlock, у меня есть приложения, которые используют эту комбинацию. Вам нужно будет изменить версию jar поддержки, но я обнаружил, что у ActionbarSherlock нет проблем с этим.

Реализуйте DrawerLayout обычным способом. Затем в вашем фрагменте реализуйте onTouchEvent или interceptTouchEvent, и когда тип представляет собой событие типа «перемещение», скользящее слева направо, вы можете вызвать метод openDrawer в DrawerLayout. Вам нужно будет добавить обработку расстояния, на которое перемещается палец, чтобы убедиться, что вызов для открытия ящика не слишком чувствителен.

person Phil H    schedule 25.07.2013
comment
пожалуйста, покажите пример кода, как это сделать. обратите внимание, что я не хочу просто открывать ящик. я хочу переместить его, как в приложениях, которые я упомянул, и если пользователь перестанет касаться, он решает, должен ли он прокрутить назад или прокрутить, чтобы показать ящик. - person android developer; 25.07.2013
comment
Эта функциональность отличается от функциональности DrawerLayout. Есть ли особая причина, по которой вы не хотите использовать макет ящика? Вы сильно усложните себе жизнь, пытаясь реализовать свой собственный ящик. Для получения некоторой информации о том, как подойти к этому, взгляните на эту серию сообщений от Сирила Моттье о том, как он реализовал ящик в Prixing. cyrilmottier.com /2012/05/22/ - person Phil H; 25.07.2013
comment
я не говорил, что не хочу его использовать. на самом деле, я спросил, как его использовать И иметь эту функцию выбора, где начать перетаскивание. - person android developer; 27.07.2013

Когда мы переопределяем крайнюю сторону по умолчанию, наш экран той части, на которой он перекрывается, перестает работать, я использовал приведенный выше код в viewpager, но теперь, когда я прокручиваю влево вправо вместо перехода на следующую страницу просмотра, он остается постоянным. Что будет решением для него? Я использовал setDrawerLeftEdgeSize(this,mDrawerLayout,distance );

public static void setDrawerLeftEdgeSize(Activity activity,
            DrawerLayout drawerLayout, float displayWidthPercentage) {
        if (activity == null || drawerLayout == null)
            return;

        try {
            // find ViewDragHelper and set it accessible
            Field leftDraggerField = drawerLayout.getClass().getDeclaredField(
                    "mLeftDragger");
            leftDraggerField.setAccessible(true);
            ViewDragHelper leftDragger = (ViewDragHelper) leftDraggerField
                    .get(drawerLayout);
            // find edgesize and set is accessible
            Field edgeSizeField = leftDragger.getClass().getDeclaredField(
                    "mEdgeSize");
            edgeSizeField.setAccessible(true);
            int edgeSize = edgeSizeField.getInt(leftDragger);
            // set new edgesize
            Point displaySize = new Point();
            activity.getWindowManager().getDefaultDisplay()
                    .getSize(displaySize);
            edgeSizeField.setInt(leftDragger, Math.max(edgeSize,
                    (int) (displaySize.x * displayWidthPercentage)));
        } catch (NoSuchFieldException e) {
            // ignore
        } catch (IllegalArgumentException e) {
            // ignore
        } catch (IllegalAccessException e) {
            // ignore
        }
    }

то же, что и выше..

person Durgesh Kumar    schedule 06.01.2015

Используя этот проект SlidingMenu, вы можете добиться этого эффекта и интегрироваться с ActionBarSherlock.

Чтобы двигать меню слева направо, просто настройте меню при его создании и добавьте:

slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);

Надеюсь это поможет.

person Mikel    schedule 17.07.2013
comment
я не понимаю. где я могу установить здесь размер области, которая позволит перетаскивать DrawerLayout? Кроме того, я думаю, что это совершенно другая библиотека. - person android developer; 17.07.2013
comment
Область — это край экрана, просто проведите пальцем по краю или за пределами экрана, и он работает как шарм. Это действительно другая библиотека, я использовал ее еще до того, как Google представил DrawerLayout, и она очень хороша. Вы сказали, что ваша библиотека еще не совсем закончена, поэтому я предоставил вам только альтернативу. - person Mikel; 17.07.2013
comment
я хочу настроить его, например, как на текущем и youtube. - person android developer; 17.07.2013