[关闭]
@myron-lee 2015-09-01T07:13:49.000000Z 字数 2885 阅读 1652

弹幕控件文档

实习


Android 弹幕显示组件

场景

 用于生活圈现场评论显示

功能

将评论以弹幕形势显示

使用方法

添加依赖

  1. <dependency>
  2. <groupId>com.alipay.android.phone.businesscommon</groupId>
  3. <artifactId>beehive-compositeui</artifactId>
  4. <version>1.3.2.20151015-SNAPSHOT</version>
  5. <scope>provided</scope>
  6. </dependency>

使用控件的大概流程是,创建弹幕对象、将弹幕对象传入弹幕视图,控制弹幕视图显示

1.创建弹幕

  1. //弹幕的创建采用Builder模式,其中必需参数——弹幕内容以构造器形参形式传入,
  2. //其它非必需参数(有默认值的参数,可自定义的参数)通过对应的函数进行配置。
  3. //示例如下:
  4. //创建一个默认样式的弹幕,弹幕内容为“1584个收藏是闹那样”,对长度不做限制,如需控制在15个字符以内,请在传入之间做截取
  5. BaseDanmaku danmaku1 = new AlipayDanmaku.Builder("1584个收藏是闹那样")
  6. .build();
  7. //此弹幕自定义了显示时间(弹幕从出现到消失所用的时间),默认为3秒
  8. BaseDanmaku danmaku2 = new AlipayDanmaku.Builder("。。。。。。。。。。。。。。。")
  9. .duration(1500)
  10. .build();
  11. //此弹幕自定义了文字颜色,默认为白色
  12. BaseDanmaku danmaku3 = new AlipayDanmaku.Builder(" 暖被窝一次一千円节假日半价 /")
  13. .textColor(Color.YELLOW)
  14. .build();
  15. //此弹幕自定义了文字大小,默认为18dp
  16. BaseDanmaku danmaku4 = new AlipayDanmaku.Builder("1耶耶耶耶耶耶耶耶耶耶耶耶")
  17. .textSize(32)
  18. .build();
  19. //此弹幕自定义了显示时间、文字颜色、文字大小
  20. BaseDanmaku danmaku5 = new AlipayDanmaku.Builder("我是小伙伴! 我是小伙伴!")
  21. .duration(1500)
  22. .textColor(Color.YELLOW)
  23. .textSize(32)
  24. .build();

2.将弹幕传入弹幕视图

  1. //现在的弹幕显示逻辑跟流操作很像,具体如下:
  2. // 弹幕打开时,添加弹幕:
  3. // 如果没有弹幕等待显示,弹幕将直接显示
  4. // 如果有弹幕等待显示,此条弹幕排在这些弹幕之后显示
  5. // 弹幕关闭时,添加弹幕,弹幕进入缓冲期,弹幕出现时间由弹幕缓冲区中弹幕数量决定,弹幕打开时,将显示缓冲区中的弹幕
  6. //API:
  7. public void addDanmaku(BaseDanmaku item);
  8. public void addDanmaku(Collection<BaseDanmaku> items);
  9. //示例:
  10. mDanmakuView.addDanmaku(new AlipayDanmaku.Builder("~~~~~~~~~~~~~~~~").textColor(Color.YELLOW).build());
  11. mDanmakuView.addDanmaku(getDanmukus());
  12. private Collection<BaseDanmaku> getDanmukus() {
  13. List<BaseDanmaku> danmakus = new ArrayList<BaseDanmaku>();
  14. for (int i = 0; i < 9; i++) {
  15. danmakus.add(new AlipayDanmaku.Builder("1584个收藏是闹那样")
  16. .build());
  17. danmakus.add(new AlipayDanmaku.Builder("。。。。。。。。。。。。。。。")
  18. .duration(2000)
  19. .build());
  20. danmakus.add(new AlipayDanmaku.Builder(" 暖被窝一次一千円节假日半价 /")
  21. .textColor(Color.YELLOW)
  22. .build());
  23. danmakus.add(new AlipayDanmaku.Builder("1耶耶耶耶耶耶耶耶耶耶耶耶")
  24. .textSize(32)
  25. .build());
  26. danmakus.add(new AlipayDanmaku.Builder("我是小伙伴! 我是小伙伴!")
  27. .duration(1500)
  28. .textColor(Color.YELLOW)
  29. .textSize(32)
  30. .build());
  31. }
  32. return danmakus;
  33. }

3.控制弹幕视图显示/隐藏

  1. //显示
  2. mDanmakuView.show();
  3. //隐藏
  4. mDanmakuView.hide();
  5. //toggle
  6. if (v == mBtnToggleDanmaku) {
  7. if (mDanmakuView.isShown()) {
  8. mDanmakuView.hide();
  9. mBtnToggleDanmaku.setText("打开弹幕");
  10. } else {
  11. mDanmakuView.show();
  12. mBtnToggleDanmaku.setText("关闭弹幕");
  13. }
  14. }

4.控制弹幕视图生命周期

  1. //示例
  2. @Override
  3. protected void onPause() {
  4. super.onPause();
  5. if (mDanmakuView != null && mDanmakuView.isPrepared()) {
  6. mDanmakuView.pause();
  7. }
  8. }
  9. @Override
  10. protected void onResume() {
  11. super.onResume();
  12. if (mDanmakuView != null && mDanmakuView.isPrepared() && mDanmakuView.isPaused()) {
  13. mDanmakuView.resume();
  14. }
  15. }
  16. @Override
  17. protected void onDestroy() {
  18. super.onDestroy();
  19. if (mDanmakuView != null) {
  20. // dont forget release!
  21. mDanmakuView.release();
  22. mDanmakuView = null;
  23. }
  24. }

5.控制弹幕密度

可以通过调整两条弹幕的间隔时间来控制。默认两条弹幕间隔200ms,间隔时间越长,弹幕密度越低。注意!设置只对之后添加到弹幕视图的弹幕起效。

  1. //示例
  2. if(v == mBtnRaiseDensity){
  3. mDanmakuView.setDanmukuInterval(mDanmakuView.getDanmukuInterval()-40);
  4. } else if (v == mBtnReduceDanmaku){
  5. mDanmakuView.setDanmukuInterval(mDanmakuView.getDanmukuInterval()+40);
  6. }

技术支持:九二

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注