弹幕简便模版,
来源:互联网 发布:软件发明专利申请案例 编辑:程序博客网 时间: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();}//sp转px的方法。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; }}
阅读全文
0 0
- 弹幕简便模版,
- 弹幕
- 弹幕
- 弹幕
- 弹幕
- 模版
- 模版
- 模版
- 模版
- 模版
- 模版
- 模版
- 模版
- 模版
- 模版
- 模版
- 模版
- 弹幕效果
- 详解Linux服务器Tcp最大连接数
- 03_张孝祥_Java多线程_传统线程互斥技术_Synchronized
- Java后台常见String、Map、JSONObject,JSONArray之间的转换
- com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
- Web 网站页面的社交分享 (Linkedin, Facebook, Twitter)
- 弹幕简便模版,
- 关于TypeError: strptime() argument 1 must be str, not bytes解析
- java_调用第三方系统时的连接代码
- 抽象类
- 分析Android studio3.0的instant run开启关闭对APK大小的影响
- C strlen( ), sizeof
- eclipse代码中有错误,却不在项目中显示红叉
- 卷积的计算的conv2
- 深度学习引论(二):计算模型