2

カスタムのスライドアウトメニューの実装(ライブラリを使用しない)があり、レイアウトを右にスライドして左側にメニューを表示します(facebook、google +アプリのように)。メニューが表示されたら、以下のコードに示すように、アルファ値を指定して正しいレイアウトをフェードします。

    <FrameLayout
        android:id="@+id/fl_mask"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:alpha="0.7"
        android:background="@color/black">
    </FrameLayout>

しかし、これはすべて私のメニューが表示されたときに起こります。レイアウトが右にスライドするので、暗くしたいのですが。レイアウトを左端から遠ざけるほど、レイアウトは暗くなります。さらに、レイアウトアニメーションに次のコードを使用して、レイアウトを右にスライドさせます。

public Animation SlidingAnimation(int animateDuration, boolean slideLeftToright, final boolean executeOnAnimEndCode) {
    Animation animation = null;
    AnimationSet set = new AnimationSet(true);

    if (slideLeftToright) {
        animation = new TranslateAnimation(Animation.RELATIVE_TO_SELF, -1.0f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f,
                Animation.RELATIVE_TO_SELF, 0.0f);
    } else {
        animation = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, -1.0f, Animation.RELATIVE_TO_SELF, 0.0f,
                Animation.RELATIVE_TO_SELF, 0.0f);
    }

    animation.setDuration(animateDuration);

    animation.setAnimationListener(new AnimationListener() {

        @Override
        public void onAnimationStart(Animation animation) {
        }

        @Override
        public void onAnimationRepeat(Animation animation) {
        }

        @Override
        public void onAnimationEnd(Animation animation) {
            if (executeOnAnimEndCode) {
                               ... // Some piece of code
            }
        }
    });
    set.addAnimation(animation);

    return animation;
}

レイアウトが右にスライドするときに、レイアウトをフェード/暗くするにはどうすればよいですか?

4

1 に答える 1

1

あなたの中で

public void onAnimationEnd(Animation animation) 
{
            if (executeOnAnimEndCode) 
            {
               AlphaAnimation alphaAnimation = new AlphaAnimation(1.0f, 0.5f);

               alphaAnimation.setFillAfter(true);

               someLayout.startAnimation(alphaAnimation);
            }
        }
    });

または、アニメーションをxmlとして宣言し、それを使用することもできます。

于 2013-04-08T13:16:55.393 に答える