Facebook lide slideout menu (Не использовать эту библиотеку)

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

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

Content when menu is not pressed

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

Content when menu is pressed and menu layout is shown

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

Я хочу сместить оба макета с некоторой анимацией. Поэтому, когда я аниматирую макет меню и макет контента, анимация для обоих макетов не имеет такой же скорости, даже если я применяю к ней одну и ту же анимацию. Поэтому я попытался Сжать 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);
}

Ответ 1

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

@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 в моем случае.