5

携帯電話でスクリーンショットを撮るときのような画面効果を作成したいのですが、ボタンをクリックすると画面が少し点滅し、その点滅の色も変更したいと思います。それは可能ですか?事前にどうもありがとうございました ;)

4

3 に答える 3

13

この効果を得る簡単な方法は、次のようにすることです。

レイアウト上に空の「パネル」を作成します。例えば:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:layout_height="wrap_content"
        android:layout_width="fill_parent">
        <!-- Your normal layout in here, doesn't have to be a LinearLayout -->
    </LinearLayout>
    <FrameLayout
        android:id="@+id/pnlFlash"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="[Set to your desired flash colour, image, etc]"
        android:visibility="gone"
        />
</FrameLayout>

ID が「pnlFlash」の FrameLayout は非表示のままであるため、通常の操作を妨げません。

フラッシュを作成したい場合は、必要なだけパネルを表示するだけです。素敵なフェードオフも常に役立ちます。

pnlFlash.setVisibility(View.VISIBLE);

AlphaAnimation fade = new AlphaAnimation(1, 0);
fade.setDuration(50);
fade.setAnimationListener(new AnimationListener() {
    ...
    @Override
    public void onAnimationEnd(Animation anim) {
        pnlFlash.setVisibility(View.GONE);
    }
    ...
});
pnlFlash.startAnimation(fade);

この種のコードをフラッシュに使用したことがないので、それに応じて持続時間を微調整することをお勧めします。

于 2012-05-07T00:11:31.723 に答える
-1

View.GONE onAnimationEnd の代わりに View.VISIBLE を追加します。

fade.setAnimationListener(new AnimationListener() {
...
@Override
public void onAnimationEnd(Animation anim) {
    pnlFlash.setVisibility(View.VISIBLE);
}
...
});
pnlFlash.startAnimation(fade); 
于 2014-09-23T20:44:18.623 に答える