有个问题,一波表情执行完后,view还在,导致控件不断重绘制
EmotionRainView在一波表情执行完毕后,onDraw一直空绘制,浪费资源。然后由于EmotionRainView全屏布局,没法消失,导致界面遮挡。所以最好是表情雨执行完毕后,自动停止。如下:
将 ondraw方法最后一行
//重绘 postInvalidate();
改造为:
if(end()){
LogUtil.i("========运行结束========");
stopRain();
}else {
//重绘
postInvalidate();
LogUtil.i("=====重绘=======");
}
end()方法如下:
private boolean end(){
for (int i = 0; i < mEmotionList.size(); i++) {
Emotion emotion=mEmotionList.get(i);
if(emotion.getY()<ScreenUtil.getHeight()){
return false;
}
}
return true;
}当然,在MainActivity的ondestroy方法中依然要执行停止方法:
@Override
protected void onDestroy() {
super.onDestroy();
if(mEmotionView!=null){
mEmotionView.stopRain();
}
}