11

WindowManager にビュー (customView) を追加しました。

WindowManager mWm = (WindowManager)activity.getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
WindowManager.LayoutParams(WindowManager.LayoutParams.FILL_PARENT, 0, PixelFormat.TRANSPARENT);
mWl.dimAmount = 0.0f;
mWm.addView(customView, mWl);

カスタム ビュー内で、閉じるボタンが押されたときに翻訳アニメーションを呼び出します。

//// これはアニメーションのハンドラーです ////

final Handler translateHandler = new Handler();

final Runnable mtranslateUp = new Runnable() {
    public void run() {
        Log.v("TEST","mtranslateUp Runnable");
        startAnimation(translateUp);
    }
};

//// これは閉じるボタンのリスナーです////

View.OnClickListener closeButtonListener = new View.OnClickListener() {         

    public void onClick(View v) {
        translateHandler.post(mtranslateUp);
    }
};

//// 上に移動するアニメーションです ////

translateUp = new TranslateAnimation(0,0,0,-200);
translateUp.setFillAfter(true);
translateUp.setDuration(1000);
translateUp.setAnimationListener(new AnimationListener(){
        @Override
        public void onAnimationEnd(Animation animation) {
            Log.v("TEST","translateUp onAnimationEnd");
        }

        @Override
        public void onAnimationRepeat(Animation animation) {
        }

        @Override
        public void onAnimationStart(Animation animation) {
            Log.v("TEST","translateUp onAnimationStart");
        }}
    );

customView がアクティビティに追加されている場合、これらのコードは正常に機能します。

customView が WindowManager に追加されると、onAnimationStart 内のログは表示されませんでしたが、Runnable 内のログは表示されます。

WindowManager に追加されたビューでアニメーションを行う方法を誰か教えてもらえますか?

4

4 に答える 4

8

WindowManager に接続された View で同様の問題に直面していました。ViewGroup を直接 View よりも WindoManager に追加してみてください。それはうまくいくはずです。

于 2012-03-29T11:29:00.777 に答える
0

windowManagerAndroid システムによるアニメーションが必要です。そのため、カスタム アニメーションは機能しません。

于 2012-08-29T05:05:08.980 に答える