Android删除屏幕外的imageViews

时间:2015-07-18 18:26:29

标签: java android

所以我在LinearLayout中有一个以编程方式创建的ImageView,并且有两个按钮。

一个按钮使用TranslateAnimation使ImageView向左移动。 另一个按钮使用TranslateAnimation使ImageView向右移动。

我想要它,以便当ImageView离开屏幕时,它会被删除。

我知道有一个名为removeView的方法,你可以将视图传递给它的参数并删除视图,但我不知道如何检查ImageView是否在屏幕外。

简而言之,这就是我想做的事情

if(imageView.isOffScreen()){
     linearLayout.removeView(imageView);
}

除了isOffScreen()不是一个真正的方法,我找不到任何可以检查它是否在屏幕外的ImageViews方法。

TLDR: 如何检查ImageView是否在屏幕外? (在屏幕外,我的意思是你不能在手机屏幕上看到它。)

1 个答案:

答案 0 :(得分:0)

由于您正在使用TranslateAnimation,如果您已经知道在动画结束时您的视图将不在屏幕上,那么您可以设置一个AnimationListener,它将从视图树中删除视图动画结束了。

yourAnimation.setAnimationListener(new AnimationListener() {

    public void onAnimationStart(Animation anim) {};

    public void onAnimationRepeat(Animation anim) {};

    public void onAnimationEnd(Animation anim) {
        linearLayout.removeView(imageView);
    };

});      

这样您就不必在任何时候检查视图的位置,您可以在动画完成时将其删除。

顺便说一句,是否有理由要删除视图,而不是将Visibilty设置为GONE?