Анимация ImageView внутри WindowManager - Android

Я хочу анимировать ImageView внутри WindowManager. Но это не работает. Пожалуйста, найдите мой код ниже. Здесь вы можете видеть, что я получил системный менеджер оконного менеджера и добавил изображение. Теперь я пытаюсь повернуть после добавления изображения в диспетчере окон.

Он прекрасно работает внутри деятельности.



    public class FloatingImageAnimationService extends Service {

        private WindowManager windowManager;
        private static ImageView chatHead;

        @Override
        public IBinder onBind(Intent arg0) {
            // TODO Auto-generated method stub
            return null;
        }
     @Override 
         public void onCreate() {
             super.onCreate();
             windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);

             chatHead = new ImageView(this);

             chatHead.setImageResource(R.drawable.image_small);


             final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                             WindowManager.LayoutParams.WRAP_CONTENT,
                             WindowManager.LayoutParams.WRAP_CONTENT,
                             WindowManager.LayoutParams.TYPE_PHONE,
                             WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
                             PixelFormat.TRANSLUCENT);


             params.gravity = Gravity.TOP | Gravity.LEFT;
             params.x = 0;
             params.y = 100;

             windowManager.addView(chatHead, params);


             RotateAnimation ra = new RotateAnimation(
                    0, 
                    -80,
                    Animation.RELATIVE_TO_SELF, 0.5f, 
                    Animation.RELATIVE_TO_SELF,
                    0.5f);

            // how long the animation will take place
            ra.setDuration(210);

            // set the animation after the end of the reservation status
            ra.setFillAfter(true);
            // Start the animation
            chatHead.startAnimation(ra);
         }
    }

Пожалуйста, дайте мне знать, какие дополнительные шаги мне нужно сделать, чтобы это работало.

Спасибо вам,

Бикаш

2 ответа

Вы можете анимировать, добавив макет примерно так.

//..at your onCreate() method
super.onCreate();
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);

chatHead = new ImageView(this);
chatHead.setImageResource(R.drawable.image_small);

// Create an additional layout for your animation.
LinearLayout layout = new LinearLayout(this);
layout.addView(chatHead); // And attach your objects 

final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                         WindowManager.LayoutParams.WRAP_CONTENT,
                         WindowManager.LayoutParams.WRAP_CONTENT,
                         WindowManager.LayoutParams.TYPE_PHONE,
                         WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
                         PixelFormat.TRANSLUCENT);


params.gravity = Gravity.TOP | Gravity.LEFT;
params.x = 0;
params.y = 100;

// Add your layout to the windowManager instead of your object.
windowManager.addView(layout, params); 

//.. Add animations what you want.

Это сработало для меня, когда я перенес точно такой же случай.

Установить это разрешение:

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
Другие вопросы по тегам