弹幕简便模版,

来源:互联网 发布:软件发明专利申请案例 编辑:程序博客网 时间:2024/05/01 23:24

直接上依赖:

compile 'com.github.ctiao:DanmakuFlameMaster:0.5.3'

控件:

<master.flame.danmaku.ui.widget.DanmakuView    android:layout_marginTop="650dp"    android:id="@+id/danmakuview_show"    android:layout_width="match_parent"    android:layout_height="350dp" />


主的:

全局变量:

@BindView(R.id.danmakuview_show)DanmakuView danmakuView;private boolean showDanmaku;private DanmakuContext danmakuContext;private BaseDanmakuParser parser = new BaseDanmakuParser() {    @Override    protected IDanmakus parse() {        return new Danmakus();    }};int h = 0;String ss = "这件商品不错!";

Activity的代码:
//弹幕danmakuView.enableDanmakuDrawingCache(true);danmakuView.setCallback(new DrawHandler.Callback() {    @Override    public void prepared() {        showDanmaku = true;        danmakuView.start();        generateSomeDanmaku();    }    @Override    public void updateTimer(DanmakuTimer timer) {    }    @Override    public void danmakuShown(BaseDanmaku danmaku) {    }    @Override    public void drawingFinished() {    }});danmakuContext = DanmakuContext.create();danmakuView.prepare(parser, danmakuContext);



/** 向弹幕View中添加一条弹幕* content  弹幕的具体内容* withBorder 弹幕是否有边框* *///弹幕private void addDanmaku(String content, boolean withBorder) {    BaseDanmaku danmaku = danmakuContext.mDanmakuFactory.createDanmaku(BaseDanmaku.TYPE_SCROLL_RL);    danmaku.text = content;    danmaku.padding = 5;    danmaku.textSize = sp2px(20);    danmaku.textColor = Color.BLUE;    danmaku.setTime(danmakuView.getCurrentTime());    if (withBorder) {        danmaku.borderColor = Color.GREEN;    }    danmakuView.addDanmaku(danmaku);}//随机生成一些弹幕内容以供测试private void generateSomeDanmaku() {    new Thread(new Runnable() {        @Override        public void run() {            while(showDanmaku) {                h++;                if(h==1){                    ss = "这件商品很好!";                }                if(h==2){                    ss = "下次还来.";                }                if(h==3){                    ss = "商品非常好,已经介绍给我的朋友了!";                }                if(h==4){                    ss = "if有点多了,该还原了,附加:还要买!!!";                    h = 1;                }                int time = new Random().nextInt(300);                String content = ss+time;                addDanmaku(content, true);                try {                    Thread.sleep(time);                } catch (InterruptedException e) {                    e.printStackTrace();                }            }        }    }).start();}//sppx的方法。public int sp2px(float spValue) {    final float fontScale = getResources().getDisplayMetrics().scaledDensity;    return (int) (spValue * fontScale + 0.5f);}//以下,运用Activity的生命周期,来进行运行弹幕内存的优化@Overrideprotected void onPause() {    super.onPause();    if (danmakuView != null && danmakuView.isPrepared()) {        danmakuView.pause();    }}@Overrideprotected void onResume() {    super.onResume();    if (danmakuView != null && danmakuView.isPrepared() && danmakuView.isPaused()) {        danmakuView.resume();    }}@Overrideprotected void onDestroy() {    super.onDestroy();    rp.detach();    showDanmaku = false;    if (danmakuView != null) {        danmakuView.release();        danmakuView = null;    }}


原创粉丝点击