Facebook-слайд-меню (Не использовать эту библиотеку)

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

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

Содержимое, если меню не нажато

Когда пользователь нажимает кнопку меню, макет меню сдвигается вправо, а левый край корневого макета устанавливается на 0. Итак, теперь мы видим,

Содержимое при нажатии меню и отображение меню

Теперь, настоящая проблема начинается здесь

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

int width = leftLayout.getWidth(); isLayoutShown = !isLayoutShown; if(isLayoutShown){ rootLayoutParams.setMargins(0, 0, 0, 0); rootLayout.setLayoutParams(rootLayoutParams); }else{ rootLayoutParams.setMargins(-width, 0, 0, 0); rootLayout.setLayoutParams(rootLayoutParams); } 

Наконец-то я мог это сделать. Вот код, используемый при нажатии кнопки меню в верхнем левом углу:

 @Override public void onClick(View v) { rootLayoutParams = new LayoutParams(rightLayout.getWidth(), rightLayout.getHeight()); if (lhsMenu.getVisibility() == View.GONE) { lhsMenu.setVisibility(View.VISIBLE); Animation slideRight = setRightSlidingAnimation(); rightLayout.setAnimation(slideRight); lhsMenu.setAnimation(slideRight); } else { Animation slideLeft = setLeftSlidingAnimation(); rightLayout.setAnimation(slideLeft); lhsMenu.setAnimation(slideLeft); lhsMenu.setVisibility(View.GONE); } } 

Обновление. Также задайте маржу слева и справа (если необходимо) rightLayout чтобы rightLayout не уменьшался.

_rightLayoutParams.setMargins(width, 0, -width, 0);

Где width = 200 в моем случае.