Баг при появлении и исчезновении картинки

Рейтинг: 1Ответов: 0Опубликовано: 29.11.2014

Написал, код который через сервис создает картинку и делает эффект анимации вне зависимости, в каком активити его запустить, он должен быть, как баннер, поверх всего. Но там баг при появлении и исчезновении:

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);
    }
}

Ответы

Ответов пока нет.