设置最大显示行数为3行,设置是否禁止重叠,并且把过滤掉的弹幕捡回重新发送绘制,但是修改后出现一个问题,当打弹幕速度很快时,打出弹幕较多,此时屏幕上的弹幕会出现卡顿现象?不知道是不是我重新捡起漏掉的弹幕导致的?请指教一下吧。
捡起弹幕我使用广播重新发送出去,又添加到addDanmaku(content, isMyself);中的
捡起过滤掉的方法是:
1.在BaseDanmaku中加一个属性字段:-----通过判断该字段判断是否被过滤
public boolean canDraw = false;
2. //当被过滤掉时drawItem.isFiltered()==ture 会执行此方法-----我们修改改item的变量为true
if (drawItem.time < startRenderTime || (drawItem.priority == 0 && drawItem.isFiltered())) {
Log.d("zssf", "RenderingState draw text : " + drawItem.text);
if (!drawItem.canDraw) {
drawItem.canDraw = true;
}
continue;
}
3.Danmakus中添加adjustItems方法 ----对应的接口中也要注册该方法 ----- public void adjustItems(Context mContext);
public void adjustItems(Context mContext) {
Collection tmps = new ArrayList();
for (BaseDanmaku danmaku : items) {
if (danmaku.canDraw) {
Intent intent = new Intent("com.danmaku.add");
intent.putExtra("text", danmaku.text);
intent.putExtra("textColor", danmaku.textColor);
mContext.sendBroadcast(intent);
Log.e("zssf", "text: " + danmaku.text + ", time: " + danmaku.time + ", id: " + danmaku);
} else {
tmps.add(danmaku);
}
}
items.clear();
items.addAll(tmps);
mSize = items.size();
tmps.clear();
tmps = null;
}