Баг при появлении и исчезновении картинки
Написал, код который через сервис создает картинку и делает эффект анимации вне зависимости, в каком активити его запустить, он должен быть, как баннер, поверх всего. Но там баг при появлении и исчезновении:
1) при появлении видно черный Layout. Его надо убрать. Но простой background Transparent не работает почему-то;
2) при исчезновении картинка не исчезает, потому что нужно как-то обновлять Layout, похожий эффект в OpenGL, когда что-то рисуешь, то на экране остается предыдущий рисунок. Вот из-за этого и не видно, что он исчезает, хотя он исчезает.
Код:
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:startOffset="2000"
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="2000"/>
</set>
public class ToastService extends Service {
private ImageView imageViewYota,imageViewBanner;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
@Override
public void onCreate() {
super.onCreate();
imageViewBanner=new ImageView(getApplicationContext());
imageViewYota=new ImageView(getApplicationContext());
imageCreate(imageViewBanner,Gravity.BOTTOM ,R.drawable.auto_banner);
imageCreate(imageViewYota, Gravity.CENTER,R.drawable.yota);
TimerYota(3,R.anim.show_yota);
}
public void imageCreate(ImageView imageView, int winParamsGravity, int drawableImage) {
WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
FrameLayout frameLayout = new FrameLayout(getApplicationContext());
WindowManager.LayoutParams WinParams = new WindowManager.LayoutParams(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
WinParams.width = ViewGroup.LayoutParams.WRAP_CONTENT;
WinParams.height = ViewGroup.LayoutParams.WRAP_CONTENT;
WinParams.flags = WinParams.FLAG_NOT_FOCUSABLE;
WinParams.gravity = winParamsGravity;
imageView.setImageResource(drawableImage);
frameLayout.addView(imageView, WinParams);
windowManager.addView(frameLayout, WinParams);
}
public void TimerYota(int timeStart, final int anim){
Timer timer=new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
Animation animationShow = AnimationUtils.loadAnimation(getApplicationContext(), anim);
animationShow.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
imageViewYota.startAnimation(animationShow);
}
},timeStart);
}
}
Источник: Stack Overflow на русском