Получилось синхронизировать состояние бокового меню с кнопкой бургера через ActionBarDrawerToggle. Т.е. иконка бургера превращается в стрелочку при появлении меню. Теперь мне нужно сделать так, что-бы при нажатии на кнопку поиска в toolbar изменялось состояние ActionBarDrawerToggle с бургера на стрелочку и обратно.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mAppBarConfiguration = new AppBarConfiguration.Builder(
R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow,
R.id.nav_tools, R.id.nav_share, R.id.nav_send)
.setDrawerLayout(drawer)
.build();
toggle = new ActionBarDrawerToggle(
this,
drawer,
R.string.navigation_drawer_open,
R.string.navigation_drawer_close);
toggle.setDrawerIndicatorEnabled(true);
//noinspection deprecation
drawer.setDrawerListener(toggle);
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
NavigationUI.setupWithNavController(navigationView, navController);}
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
SearchManager searchManager =
(SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView =
(SearchView) menu.findItem(R.id.app_bar_search).getActionView();
searchView.setSearchableInfo(
searchManager.getSearchableInfo(getComponentName()));
searchView.setMaxWidth(Integer.MAX_VALUE);
return true;
}
@Override
public boolean onSupportNavigateUp() {
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
return NavigationUI.navigateUp(navController, mAppBarConfiguration)
|| super.onSupportNavigateUp();
}
По хорошему этот бургер был создан специально в пару DrawerLayout-у, и привязывать еще что-то к нему не доброе дело. Надо бы свой написать, чтобы избегать всяких странных конфликтов.
А вообще можете ставить ему любое состояние методом toggle.onDrawerSlide(View, Float). Что там за View передается уже не помню, Float значение принимается от 0 до 1, где 0 это бургер, 1 это стрелка, 0.5 это на полпути с одного в другое.
Можете создать VelueAnimator из запускать изменение с 0 до 1, если покопаетесь в исходниках, найдете используемый интерполятор и продолжительность для "выезжания" NavView, чтобы их же использовать на анимации при активации поиска, иначе у вас при клике по бургеру будет одна скорость анимации, а при клике по поиску другая.
Еще надо решить что делать если юзер вытащил NavView жестом, когда выделен поиск и toggle уже в виде стрелочки. Если проигнорировать - будет скачок со стрелки на бургер и начнется анимация обратно к стрелке пропорционально выдвижению NavView
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
На интервью задали такую задачу: дан массив длиной n, необходимо реализовать методы добавления элемента и обнуление(значения всех элементов...
Создал проект с шаблоном Bottom Navigation ActivityФрагменты, которые входят в нижнее меню, плавно сменяют друг друга
Смысл программы, выводить список с животными и их фотографиямиОднако он выводит только название
Есть OpenJDK8Есть пул потоков ExecutorService к примеру размером 40