Android 5.0 материал дизайн стиль навигации для KitKat
Я вижу, что Android представил новые иконки навигации ящик, значок ящика и значок стрелки назад. Как мы можем использовать это в приложениях, поддерживаемых Kitkat. Смотрите последнюю версию приложения Newsstand от Google, в котором есть последние значки и анимации навигационного ящика. Как мы можем это реализовать?
Я пробовал установка основным направлением развития операционной системы до 19 и complileSDK до 21, но используя старые иконы стиля. То, что реализовано?
4 ответа:
вам нужно использовать новую панель инструментов в appcompat v21 и новый
ActionBarDrawerToggle
это тоже в этой библиотеке.добавьте зависимость gradle в ваш файл gradle:
compile 'com.android.support:appcompat-v7:21.0.0'
код
activity_main.xml
макет будет выглядеть примерно так:<!--I use android:fitsSystemWindows because I am changing the color of the statusbar as well--> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main_parent_view" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:fitsSystemWindows="true"> <include layout="@layout/toolbar"/> <android.support.v4.widget.DrawerLayout android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- Main layout --> <FrameLayout android:id="@+id/main_fragment_container" android:layout_width="match_parent" android:layout_height="match_parent" /> <!-- Nav drawer --> <fragment android:id="@+id/fragment_drawer" android:name="com.example.packagename.DrawerFragment" android:layout_width="@dimen/drawer_width" android:layout_height="match_parent" android:layout_gravity="left|start" /> </android.support.v4.widget.DrawerLayout> </LinearLayout>
макет панели инструментов будет выглядеть примерно так:
<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/toolbar" app:theme="@style/ThemeOverlay.AppCompat.ActionBar" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="?attr/actionBarSize" android:background="?attr/colorPrimary"/>
ваша деятельность должна распространяться от:
ActionBarActivity
когда вы найдете свои представления (ящик и панель инструментов) в действии набор панель инструментов в качестве панели действий поддержки и установите setDrawerListener:
setSupportActionBar(mToolbar); mDrawerToggle= new ActionBarDrawerToggle(this, mDrawerLayout,mToolbar, R.string.app_name, R.string.app_name); mDrawerLayout.setDrawerListener(mDrawerToggle);
после этого вам просто нужно позаботиться о пунктах меню и состоянии drawerToogle:
@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = new MenuInflater(this); inflater.inflate(R.menu.menu_main,menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } return super.onOptionsItemSelected(item); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); mDrawerToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); mDrawerToggle.onConfigurationChanged(newConfig); } @Override public void onBackPressed() { if(mDrawerLayout.isDrawerOpen(Gravity.START|Gravity.LEFT)){ mDrawerLayout.closeDrawers(); return; } super.onBackPressed(); }
реализация такая же, как и до панели инструментов, и вы получаете анимацию стрелки бесплатно. Никаких головных болей. Для получения дополнительной информации следуйте:
если вы хотите отобразить ящик над панелью инструментов и под строкой состояния, пожалуйста, обратитесь к этот вопрос.
EDIT: используйте NavigationView из библиотеки поддержки проектирования. Учебник, чтобы узнать, как использовать здесь:http://antonioleiva.com/navigation-view/
ответ больше не полезен. Оставив его здесь только для исторической цели, поскольку время публикации Android не имело реализации :)
теперь есть много библиотек, которые могут достичь этого.
выбор 1 -https://github.com/neokree/MaterialNavigationDrawer
другие
поддержка верхнего комментария вместе с новым сгенерированным макетом main_content. Я просто переопределяю включенный макет контента с помощью DrawerLayout. Имейте в виду, что ваш drawerlayout должен иметь этот layout_behavior: appbar_scrolling_view_behavior
макет верхнего контейнера https://github.com/juanmendez/jm_android_dev/blob/master/01.fragments/06.fragments_with_rx/app/src/main/res/layout/activity_recycler.xml#L17
включено содержание макет https://github.com/juanmendez/jm_android_dev/blob/master/01.fragments/06.fragments_with_rx/app/src/main/res/layout/content_recycler.xml#L9