2012-07-04 4 views
5

私のアプリケーションにはFacebookのようなメニューがあります。これには多くのスレッドがあり、実際には画面のスクリーンショットを取り、その画像を右にスライドさせてメニューを左側に表示し、一部のトランジションでスライド画像を表示するライブラリを使用することをお勧めします。しかし、その場合、右のレイアウトはその画像からクリック可能ではありません。Facebookのスライドスライドアウトメニュー(ライブラリを使用していません)

しかし、私はすでにルートレイアウトメニューレイアウトとコンテンツ・レイアウトを持っています。持っているそれをやっていくつかの他の方法を持っていますしかし、ルートレイアウトは左に向かっていくらかの負のマージンが設定されているため、表示されません。ユーザーは、メニューボタンを押すとthis-

Content when menu is not pressed

、メニューのレイアウトが右とルートレイアウトの左余白にスライドさせるようなので、今、私たちが見たものは0に設定this-

Content when menu is pressed and menu layout is shown

です

さて、本当の問題は、私はいくつかのアニメーションとレイアウトの両方をスライドしたいここ

を開始します。そのため、メニューレイアウト&コンテンツレイアウトをアニメーション化すると、同じアニメーションを適用していても、両方のレイアウトのアニメーションは同じ速度ではありません。だから私はに右に/左にシフトルートレイアウトだけを試してみました。しかしそうすることで、何も画面に表示されません。どこが間違っているのですか?マージンを設定する方法はここに示されています。

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); 
} 
+0

あなたはこれに運がありましたか? – EGHDK

+0

はい、問題は何とか解決されます。以下の答えを確認してください。 – Rajkiran

+0

この質問に対する回答を見てみるといいかもしれません。http://stackoverflow.com/q/17884277/1491212 –

答えて

4

最後に何とか私はそれを行うことができました。

@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

関連する問題