大家好,欢迎来到IT知识分享网。
1、首先,在项目中添加依赖:
implementation 'com.github.ctiao:DanmakuFlameMaster:0.5.3'
其次,就在xml文件中添加覆盖的透明View
<master.flame.danmaku.ui.widget.DanmakuView android:id="@+id/danmaku_view" android:layout_width="match_parent" android:layout_height="match_parent" />
最后就是在Activity中的逻辑:
public class MainActivity extends AppCompatActivity {
//引入弹幕所需变量 private DanmakuView danmakuView; private DanmakuContext danmakuContext; private boolean showDanmaku; //发送弹幕的输入框和按钮 private EditText editText; private Button btl; private BaseDanmakuParser parser = new BaseDanmakuParser() {
@Override protected IDanmakus parse() {
return new Danmakus(); } }; @Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); danmakuView = (DanmakuView) findViewById(R.id.danmaku_view); editText = findViewById(R.id.et); btl = findViewById(R.id.bt); danmakuView.enableDanmakuDrawingCache(true); //点击发送按钮监听 btl.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View view) {
String str = editText.getText().toString(); if (!TextUtils.isEmpty(str)) {
//添加弹幕,str为内容。true为是自己发送的,添加方框 addDanmaku(str, true); editText.setText(""); } } }); 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); } / * 添加一条弹幕 * * @param content 弹幕的具体内容 * @param 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.BLACK; danmaku.setTime(danmakuView.getCurrentTime()); if (withBorder) {
danmaku.borderColor = Color.GREEN; } danmakuView.addDanmaku(danmaku); } / * sp转px的方法。 */ public int sp2px(float spValue) {
final float fontScale = getResources().getDisplayMetrics().scaledDensity; return (int) (spValue * fontScale + 0.5f); } @Override protected void onPause() {
super.onPause(); if (danmakuView != null && danmakuView.isPrepared()) {
danmakuView.pause(); } } @Override protected void onResume() {
super.onResume(); if (danmakuView != null && danmakuView.isPrepared() && danmakuView.isPaused()) {
danmakuView.resume(); } } @Override protected void onDestroy() {
super.onDestroy(); showDanmaku = false; if (danmakuView != null) {
danmakuView.release(); danmakuView = null; } } }
至此。基本的弹幕的功能就算现完成了。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/126444.html