Привет, мне нужен плавающий пузырь поверх моей активности, и я решил использовать сервис для этого. Все работает хорошо, за исключением того, что в устройствах Android 4.xx изображениеView не анимируется. Я добавил слушателей в анимацию, и анимация запускается (она запускается, повторяется ... и также меняются значения), но изображение не перемещается. Он отлично работает на устройствах Android 5.x, но не 4.x. Кто-нибудь может понять, почему?Анимация imageView в WindowManager не работает в android 4.xx
Вот код:
public class SellFloatingBubbleService extends Service {
private WindowManager windowManager;
private ImageView imageView;
@Override
public void onCreate() {
super.onCreate();
imageView = new ImageView(this);
imageView.setImageResource(R.drawable.tabbar_tooltip_v3);
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
final WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT,
LayoutParams.TYPE_PHONE,
LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
layoutParams.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL;
layoutParams.y = (int) TypedValue.applyDimension(TypedValue
.COMPLEX_UNIT_PX, getResources().getDimensionPixelOffset(R.dimen
.sell_button_height), getResources().getDisplayMetrics());
windowManager.addView(imageView, layoutParams);
imageView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
stopSelf();
return true;
}
});
/**
* When these animations will end they will revert and then play endlessly.
*/
AnimatorSet bouncer = new AnimatorSet();
ObjectAnimator animX = ObjectAnimator.ofFloat(imageView, "scaleX", 1f, 0.8f);
animX.setRepeatMode(ValueAnimator.REVERSE);
animX.setRepeatMode(-1);
ObjectAnimator animY = ObjectAnimator.ofFloat(imageView, "scaleY", 1f, 0.8f);
animY.setRepeatMode(ValueAnimator.REVERSE);
animY.setRepeatCount(-1);
bouncer.playTogether(animX, animY);
bouncer.setDuration(1000);
bouncer.setInterpolator(new AccelerateDecelerateInterpolator());
bouncer.start();
}
@Override
public void onDestroy() {
imageView.setVisibility(View.GONE);
windowManager.removeView(imageView);
super.onDestroy();
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
Я попробовал ту же анимацию на другую точку зрения, а не в службе, и она работает. Я также попытался заменить ObjectAnimator на старые анимации, и проблема все та же.
Что-то не так в коде?