自定义数据解析器,不显示弹幕,急需,谢谢
private fun createParser( context: Context, stream: InputStream? ): BaseDanmakuParser? { val parser: BaseDanmakuParser = object : BaseDanmakuParser() { override fun parse(): Danmakus { return Danmakus() } } if (stream == null) return parser val loader = DanmakuLoaderFactory.create(DanmakuLoaderFactory.TAG_ACFUN) val funParser = AcFunDanmuParser(context) try { loader.load(stream) funParser.load(loader.dataSource) return funParser } catch (e: IllegalDataException) { e.printStackTrace() } return parser }
class AcFunDanmuParser(val context: Context) : BaseDanmakuParser() {
override fun parse(): IDanmakus {
return if (this.mDataSource != null && this.mDataSource is JSONSource) {
val jsonSource = this.mDataSource as JSONSource
doParse(jsonSource.data())
} else {
Danmakus()
}
}
private fun doParse(data: JSONArray?): Danmakus {
var danmakus = Danmakus()
return if (data != null && data.length() != 0) {
for (i in 0 until data.length()) {
try {
val jsonObj = data.getJSONObject(i)
if (jsonObj != null) {
danmakus = realParse(i, jsonObj, danmakus)
}
} catch (e: JSONException) {
e.printStackTrace()
}
}
danmakus
} else {
danmakus
}
}
private fun realParse(index: Int, obj: JSONObject, danmakus: Danmakus): Danmakus {
if (obj.length() != 0) {
try {
//{"content":"真好看","picUrl":"http://...png"}
val content = obj.optString("content")
val picUrl = obj.optString("picUrl")
val item = this.mContext.mDanmakuFactory.createDanmaku(BaseDanmaku.TYPE_SCROLL_RL,this.mContext)
…
内容来源: bilibili/DanmakuFlameMaster