有个问题,一波表情执行完后,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(); } }