@myron-lee
2015-09-01T07:13:49.000000Z
字数 2885
阅读 1776
实习
用于生活圈现场评论显示
将评论以弹幕形势显示
<dependency><groupId>com.alipay.android.phone.businesscommon</groupId><artifactId>beehive-compositeui</artifactId><version>1.3.2.20151015-SNAPSHOT</version><scope>provided</scope></dependency>
//弹幕的创建采用Builder模式,其中必需参数——弹幕内容以构造器形参形式传入,//其它非必需参数(有默认值的参数,可自定义的参数)通过对应的函数进行配置。//示例如下://创建一个默认样式的弹幕,弹幕内容为“1584个收藏是闹那样”,对长度不做限制,如需控制在15个字符以内,请在传入之间做截取BaseDanmaku danmaku1 = new AlipayDanmaku.Builder("1584个收藏是闹那样").build();//此弹幕自定义了显示时间(弹幕从出现到消失所用的时间),默认为3秒BaseDanmaku danmaku2 = new AlipayDanmaku.Builder("。。。。。。。。。。。。。。。").duration(1500).build();//此弹幕自定义了文字颜色,默认为白色BaseDanmaku danmaku3 = new AlipayDanmaku.Builder(" 暖被窝一次一千円节假日半价 /").textColor(Color.YELLOW).build();//此弹幕自定义了文字大小,默认为18dpBaseDanmaku danmaku4 = new AlipayDanmaku.Builder("1耶耶耶耶耶耶耶耶耶耶耶耶").textSize(32).build();//此弹幕自定义了显示时间、文字颜色、文字大小BaseDanmaku danmaku5 = new AlipayDanmaku.Builder("我是小伙伴! 我是小伙伴!").duration(1500).textColor(Color.YELLOW).textSize(32).build();
//现在的弹幕显示逻辑跟流操作很像,具体如下:// 弹幕打开时,添加弹幕:// 如果没有弹幕等待显示,弹幕将直接显示// 如果有弹幕等待显示,此条弹幕排在这些弹幕之后显示// 弹幕关闭时,添加弹幕,弹幕进入缓冲期,弹幕出现时间由弹幕缓冲区中弹幕数量决定,弹幕打开时,将显示缓冲区中的弹幕//API:public void addDanmaku(BaseDanmaku item);public void addDanmaku(Collection<BaseDanmaku> items);//示例:mDanmakuView.addDanmaku(new AlipayDanmaku.Builder("~~~~~~~~~~~~~~~~").textColor(Color.YELLOW).build());mDanmakuView.addDanmaku(getDanmukus());private Collection<BaseDanmaku> getDanmukus() {List<BaseDanmaku> danmakus = new ArrayList<BaseDanmaku>();for (int i = 0; i < 9; i++) {danmakus.add(new AlipayDanmaku.Builder("1584个收藏是闹那样").build());danmakus.add(new AlipayDanmaku.Builder("。。。。。。。。。。。。。。。").duration(2000).build());danmakus.add(new AlipayDanmaku.Builder(" 暖被窝一次一千円节假日半价 /").textColor(Color.YELLOW).build());danmakus.add(new AlipayDanmaku.Builder("1耶耶耶耶耶耶耶耶耶耶耶耶").textSize(32).build());danmakus.add(new AlipayDanmaku.Builder("我是小伙伴! 我是小伙伴!").duration(1500).textColor(Color.YELLOW).textSize(32).build());}return danmakus;}
//显示mDanmakuView.show();//隐藏mDanmakuView.hide();//toggleif (v == mBtnToggleDanmaku) {if (mDanmakuView.isShown()) {mDanmakuView.hide();mBtnToggleDanmaku.setText("打开弹幕");} else {mDanmakuView.show();mBtnToggleDanmaku.setText("关闭弹幕");}}
//示例@Overrideprotected void onPause() {super.onPause();if (mDanmakuView != null && mDanmakuView.isPrepared()) {mDanmakuView.pause();}}@Overrideprotected void onResume() {super.onResume();if (mDanmakuView != null && mDanmakuView.isPrepared() && mDanmakuView.isPaused()) {mDanmakuView.resume();}}@Overrideprotected void onDestroy() {super.onDestroy();if (mDanmakuView != null) {// dont forget release!mDanmakuView.release();mDanmakuView = null;}}
可以通过调整两条弹幕的间隔时间来控制。默认两条弹幕间隔200ms,间隔时间越长,弹幕密度越低。注意!设置只对之后添加到弹幕视图的弹幕起效。
//示例if(v == mBtnRaiseDensity){mDanmakuView.setDanmukuInterval(mDanmakuView.getDanmukuInterval()-40);} else if (v == mBtnReduceDanmaku){mDanmakuView.setDanmukuInterval(mDanmakuView.getDanmukuInterval()+40);}
技术支持:九二