簡介
彈幕動(dòng)畫通過重寫RecyclerView的默認(rèn)動(dòng)畫"DefaultItemAnimator"來實(shí)現(xiàn)精续,更改默認(rèn)動(dòng)畫過后的文件地址在DmItemAnimator,里面的作用我簡單的注釋了一下柳畔。
Github地址:https://github.com/xujiaji/DMView
如有使用過程中出現(xiàn)bug歡迎私信!
英語不好剥哑,英文文檔有些地方讓人不好理解掠拳,也歡迎糾正。
DMView
dmlib類庫可以幫助你只需要簡單的幾步就可以添加展示彈幕筐赔,本類庫由RecyclerView為基礎(chǔ)完成铣猩,使用Glide
加載頭像。
版本
2.0.0
演示
安裝
將類庫添加到您的項(xiàng)目中茴丰,只需要在您的項(xiàng)目buil.gradle文件中的dependency{}中添加如下信息:
dependencies {compile 'com.github.xujiaji:dmlib:1.1.1'}
使用(總共四步哦4锩蟆)
1. 需要在布局中添加RecyclerView(因?yàn)橐訰ecyclerView為主體)
<android.support.v7.widget.RecyclerView
android:id="@+id/rvBarrage"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="90dp"
android:layout_marginBottom="90dp"
android:overScrollMode="never" />
2.初始化 "DanMu" 在獲取了RecyclerView之后
①初始化-方法一 : 使用“dmlib”默認(rèn)的布局和行數(shù)
rvBarrage = (RecyclerView) findViewById(R.id.rvBarrage);
DanMu.init(rvBarrage);
②初始化-方法二: 配置您想要的布局
Config config = new Config(
R.layout.item,
R.id.tvName,
R.id.tvMsg,
R.id.imgHead);
config.setRowNum(5);//設(shè)置您要設(shè)置的行數(shù)
DanMu.init(rvBarrage, config);
-
這是上面的運(yùn)行結(jié)果,代碼請轉(zhuǎn)到sample項(xiàng)目贿肩。
備注: 如果您不想要其中一個(gè)布局峦椰,比如說您不需要名字,那么對應(yīng)設(shè)置成0汰规。
Config config = new Config(
R.layout.item,
0,
R.id.tvMsg,
R.id.imgHead);
③初始化-方法三:設(shè)置彈幕的行數(shù)
Config config = new Config();
config.setRowNum(3);
DanMu.init(rvBarrage, config);
④初始化-方法四:設(shè)置彈幕的展示時(shí)間
Config config = new Config();
config.setDuration(10000);
DanMu.init(rvBarrage, config);
3.添加一個(gè)彈幕
DanMu.call()
.picUrl("https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=150237755,4294706681&fm=116&gp=0.jpg")
.name("xujiaji")
.msg("Bullet screen massage show ...")
.show();
- 注意: 如果您使用的是默認(rèn)布局汤功,那么您也可以通過以下方式展示不同的效果。
No.1
DanMu.call()
.picUrl("https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=150237755,4294706681&fm=116&gp=0.jpg")
.msg("Bullet screen massage show ...")
.show();
No.2
DanMu.call()
.msg("Bullet screen massage show ...")
.show();
No.3
javaDanMu.call()
.name("xujiaji")
.msg("Bullet screen massage show ...")
.show();
No.4
DanMu.call()
.picUrl("https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=150237755,4294706681&fm=116&gp=0.jpg")
.show();
3. 銷毀彈幕
@Override
protected void onDestroy() {
DanMu.destroy();
super.onDestroy();
}
Activity中所有的代碼
public class MainActivity extends AppCompatActivity {
private RecyclerView rvBarrage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rvBarrage = (RecyclerView) findViewById(R.id.rvBarrage);
//sample.1: default init
DanMu.init(rvBarrage);
//sample.2: config yourself layout
// Config config = new Config(
// R.layout.item,
// R.id.tvName,
// R.id.tvMsg,
// R.id.imgHead);
// config.setRowNum(5); // setting bullet screen's rows
// DanMu.init(rvBarrage, config);
//sample.3: setting bullet screen's rows
// Config config = new Config();
// config.setRowNum(3);
// DanMu.init(rvBarrage, config);
//sample.4 setting bullet screen's animator duration
// Config config = new Config();
// config.setDuration(10000);
// DanMu.init(rvBarrage, config);
}
public void onAddClick(View view) {
DanMu.call()
.picUrl("https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=150237755,4294706681&fm=116&gp=0.jpg")
.name("xujiaji")
.msg("Bullet screen massage show ...")
.show();
}
@Override
protected void onDestroy() {
DanMu.destroy();
super.onDestroy();
}
}
“dmlib”更新日志
v2.0.0
更改了動(dòng)畫庫溜哮,原先是從github上面的一個(gè)RecyclerView動(dòng)畫類庫里面拉下來的幾個(gè)文件滔金,如今已經(jīng)刪掉。現(xiàn)在的實(shí)現(xiàn)介紹在:本文頂部簡介茂嗓。
添加了設(shè)置動(dòng)畫展示時(shí)間的功能餐茵。
現(xiàn)在可以銷毀動(dòng)畫。
v1.1.1
進(jìn)行了大面積的更改述吸。
修改優(yōu)化了添加彈屏的模式忿族,并且可以添加自定義布局。
可以設(shè)置RecyclerView行數(shù),默認(rèn)為6行道批。
v1.0.0
第一版本错英,僅僅實(shí)現(xiàn)了發(fā)送彈幕的功能
License
Copyright 2016 xujiaji
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.