CN108600852A - 一种弹幕效果的实现方法 - Google Patents
一种弹幕效果的实现方法 Download PDFInfo
- Publication number
- CN108600852A CN108600852A CN201810398025.XA CN201810398025A CN108600852A CN 108600852 A CN108600852 A CN 108600852A CN 201810398025 A CN201810398025 A CN 201810398025A CN 108600852 A CN108600852 A CN 108600852A
- Authority
- CN
- China
- Prior art keywords
- barrage
- self
- class
- android system
- variable
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/47—End-user applications
- H04N21/478—Supplemental services, e.g. displaying phone caller identification, shopping application
- H04N21/4788—Supplemental services, e.g. displaying phone caller identification, shopping application communicating with other users, e.g. chatting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/431—Generation of visual interfaces for content selection or interaction; Content or additional data rendering
- H04N21/4312—Generation of visual interfaces for content selection or interaction; Content or additional data rendering involving specific graphical features, e.g. screen layout, special fonts or colors, blinking icons, highlights or animations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/81—Monomedia components thereof
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明涉及一种弹幕效果的实现方法,包括如下步骤:步骤1,自定义弹幕元数据类DanmakuBean,用来存放弹幕的元数据;步骤2,自定义弹幕布局类DanmakuItem,用来显示弹幕;步骤3,自定义弹幕数据类DrawerBean,用来提供弹幕移动相关计算;步骤4,自定义类DanmakuItemDrawer,用来绘制弹幕条目;步骤5,自定义类DanmakuView,用来在线程中绘制和渲染。本发明,采用自定义类来绘制弹幕条目,自定义类中通过子线程对弹幕信息进行局部渲染绘制更新,对整个界面影响较小,提升流畅性,减少卡顿,增强用户体验,同时也节省内存和cpu占用。
Description
技术领域
本发明涉及弹幕效果交互技术领域,具体说是一种弹幕效果的实现方法。
背景技术
现有的直播平台,为了提高播主和直播用户的互动,都提供弹幕效果供播主和直播用户使用。在Android原生系统中,没有提供弹幕相关的控件,需要开发人员自定义。常见的解决方案是:自定义View在主线程对控件进行平移动画来实现弹幕效果,这种方案缺点在于:View的刷新会使整个界面都重新绘制,造成系统资源的大量浪费,cpu使用率高,耗电等问题。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种弹幕效果的实现方法,采用自定义类来绘制弹幕条目,自定义类中通过子线程对弹幕信息进行局部渲染绘制更新,对整个界面影响较小,提升流畅性,减少卡顿,增强用户体验,同时也节省内存和cpu占用。
为达到以上目的,本发明采取的技术方案是:
一种弹幕效果的实现方法,其特征在于,包括如下步骤:
步骤1,自定义弹幕元数据类DanmakuBean,为Android系统提供的Object类型,用来存放弹幕的元数据;
步骤2,自定义弹幕布局类DanmakuItem,继承Android系统提供的线性布局LinearLayout,用来显示弹幕;
所述自定义弹幕布局类DanmakuItem最终返回一个位图,其中包括用户的头像和发表的弹幕内容;
步骤3,自定义弹幕数据类DrawerBean,继承Android系统提供的Object类型,用来提供弹幕移动相关计算;
步骤4,自定义类DanmakuItemDrawer,继承Android系统提供的Object类型,用来绘制弹幕条目;
在自定义类DanmakuItemDrawer中,定义方法initWaitBean,用来把弹幕数据集合添加到等待展示的弹幕链表中;
在自定义类DanmakuItemDrawer中,定义方法draw,用来对正在显示移动的弹幕进行绘制;其中,通过lock方法来加锁,对多线程进行控制,每次只能一个线程进行绘制;通过unlock方法来释放锁资源;
步骤5,自定义类DanmakuView,继承Android系统提供的TextureView,用来在线程中绘制和渲染;
在DanmakuView类中实现TextureView.SurfaceTextureListener接口,在onSurfaceTextureAvailable回调方法中清空画布;
在自定义类DanmakuView中,定义方法start,用来控制开始加载显示弹幕信息;其中,通过内部类DanmakuDrawThread在子线程中绘制弹幕信息。
在上述技术方案的基础上,在自定义弹幕布局类DanmakuItem中,定义方法createItem,用来创建弹幕布局、获取头像文字和背景内容相应的View对象;
在自定义弹幕布局类DanmakuItem中,定义静态方法createBitmapFromView,用来创建Bitmap位图。
在上述技术方案的基础上,在自定义弹幕数据类DrawerBean中,定义方法createBitmap,用来创建弹幕位图,把用户头像和内容绘制到位图中;
在自定义弹幕数据类DrawerBean中,定义方法clean,用来对bitmap位图资源及时进行回收,节约内存防止内存溢出。
在上述技术方案的基础上,步骤1中,所述自定义弹幕元数据类DanmakuBean具体包括:
枚举SOURCE,用来标记弹幕来源,里面有两个常量MY和OTHERS,
变量mSource,用来区分弹幕所发的用户,为枚举SOURCE类型,
变量mWords,用来代表弹幕的内容,为Android系统提供的String类型,
变量mImgUrl,用来代表用户头像的地址,为Android系统提供的String类型。
在上述技术方案的基础上,步骤2中,所述自定义弹幕布局类DanmakuItem具体包括:
变量mText,用来显示弹幕的文字内容,用来显示文字颜色设定选项,为Android系统提供文字展示控件TextView类型,
变量mHeadImage,用来显示用户头像,用来显示用户头像大小设定选项,为Android系统提供的图片展示控件ImageView类型,
变量mDanmakuBean,用来提供弹幕数据,为自定义的DanmakuBean类型,
变量mTextSize,用来控制弹幕字体的大小,为Android系统提供的int类型,
变量mReady,用来标识弹幕头像是否加载成功,为Android系统提供的布尔boolean类型。
在上述技术方案的基础上,步骤3中,所述自定义弹幕数据类DrawerBean具体包括:
变量mX、mY、mTargetX和mStartX,mX用来记录弹幕移动位置的x轴坐标,mY用来记录弹幕移动位置的y轴坐标,mTargetX用来记录弹幕最大移动的位置,mStartX用来记录弹幕的起始点x轴坐标,均为Android系统提供的浮点型类型,
变量mSpeed,用来提供每次移动的距离,为Android系统提供的浮点类型,
变量mBitmap,用来存储弹幕中的头像和内容,为Android系统提供的Bitmap位图类型。
在上述技术方案的基础上,步骤4中,所述自定义类DanmakuItemDrawer具体包括:
链表变量mWaitingDanmakuBean,用来存放弹幕数据集,为Android系统提供的LinkedList类型,
链表变量mRunningBean,用来存放自定义弹幕控件集,为Android系统提供的LinkedList类型,
变量mContext,用来初始化弹幕控件,为Android系统提供的上下文Context类型,
变量mLock,用来进行多线程数据的同步,为Android系统提供ReentrantLock类型。
在上述技术方案的基础上,步骤5中,所述自定义类DanmakuView具体包括:
内部类DanmakuDrawThread,继承Android系统提供的线程类Thread,用来进行刷新绘制,
计时器类型的变量mTimer,是Android系统提供的Timer类型的变量用来,执行定时任务,设置间隔一定时间添加弹幕信息。
本发明所述的弹幕效果的实现方法,采用自定义类(自定义TextureView)来绘制弹幕条目,自定义类中通过子线程对弹幕信息进行局部渲染绘制更新,对整个界面影响较小,提升流畅性,减少卡顿,增强用户体验,同时也节省内存和cpu占用。
附图说明
本发明有如下附图:
图1本发明的流程图。
具体实施方式
以下结合附图对本发明作进一步详细说明。
如图1所示,本发明所述的弹幕效果的实现方法,包括如下步骤:
步骤1,自定义弹幕元数据类DanmakuBean,为Android系统提供的Object类型,用来存放弹幕的元数据;
步骤2,自定义弹幕布局类DanmakuItem,继承Android系统提供的线性布局LinearLayout,用来显示弹幕;
所述自定义弹幕布局类DanmakuItem最终返回一个位图,其中包括用户的头像和发表的弹幕内容;
在自定义弹幕布局类DanmakuItem中,定义方法createItem,用来创建弹幕布局、获取头像文字和背景内容相应的View对象;
方法createItem可采用以下代码实现:
private void createItem(Context context) {
View view = LayoutInflater.from(context).inflate(R.layout.danmu_ksing_danmuku_item, this, true);
mHeadImage = (CircleImageView) view.findViewById(R.id.header_image);
mItemBg = (RelativeLayout) view.findViewById(R.id.danmaku_item_bg);
mText = (TextView) view.findViewById(R.id.comment);
}
其中:
context是Android系统提供的上下文Context类型的对象,用来初始画布,
LayoutInflater是Android系统服务中布局服务,用来实例化xml布局文件对应的View对象,from是LayoutInflater中的静态方法用来获取系统布局服务对象,inflate是LayoutInflater对象中方法,用来加载布局文件实例化其中的对象,
R.layout.danmu_ksing_danmuku_item是在项目中layout文件夹下定义好的布局文件,
findViewById是Android系统提供的View类型对象中的方法,根据Id查找父布局容器中相应的子布局对象;
在自定义弹幕布局类DanmakuItem中,定义静态方法createBitmapFromView,用来创建Bitmap位图;
静态方法createBitmapFromView可采用以下代码实现:
public static Bitmap createBitmapFromView(View v) {
if (v.getMeasuredHeight() == 0 || v.getMeasuredWidth() == 0) {
v.measure(MeasureSpec.makeMeasureSpec(DeviceInfo.HEIGHT / 2,MeasureSpec.AT_MOST),
MeasureSpec.makeMeasureSpec(DeviceInfo.WIDTH / 2, MeasureSpec.AT_MOST));
}
v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());
Bitmap b = Bitmap.createBitmap(v.getMeasuredWidth(),v.getMeasuredHeight(), Bitmap.Config.ARGB_4444);
Canvas c = new Canvas(b);
v.draw(c);
return b;
}
其中:
getMeasuredHeight和getMeasuredWidth方法是Android系统View控件中的方法用来获取控件的宽高,
measure方法也是Android系统View控件中的方法用来测量计算控件的大小,
MeasureSpec是Android系统提供的用来计算控件大小的辅助类,
layout是Android系统View控件中的方法用来定义当前布局在父控件显示的位置,
Bitmap是Android系统提供类型,createBitmap是其中个的方法,用来创建一个图层对象,
Canvas是Android系统提供的画布类型,这里传入一个bitmap,
draw方法是Android系统View控件中的方法,用来在当前画布上进行绘制;
步骤3,自定义弹幕数据类DrawerBean,继承Android系统提供的Object类型,用来提供弹幕移动相关计算;
在自定义弹幕数据类DrawerBean中,定义方法createBitmap,用来创建弹幕位图,把用户头像和内容绘制到位图中;
方法createBitmap可采用以下代码实现:
public void createBitmap() {
mBitmap = DanmakuItem.createBitmapFromView(mDanmakuItem);
}
其中:
mBitmap是Android系统提供Bitmap位图类型的变量,
createBitmapFromView是自定义的弹幕布局DanmaKuItem中的方法用来把弹幕布局生成位图;
在自定义弹幕数据类DrawerBean中,定义方法clean,用来对bitmap位图资源及时进行回收,节约内存防止内存溢出;
方法clean可采用以下代码实现:
public void clear() {
if (mBitmap != null && !mBitmap.isRecycled()) {
mBitmap.recycle();
}
}
其中:
mBitmap是生成好的弹幕布局位图,
isRecycled是Android系统Bitmap类中的方法,用来判断位图是否被系统回收,
recycle是Android系统中Bitmap类中的方法,用来回收位图占用的系统内存资源;
步骤4,自定义类DanmakuItemDrawer,继承Android系统提供的Object类型,用来绘制弹幕条目;
在自定义类DanmakuItemDrawer中,定义方法initWaitBean,用来把弹幕数据集合添加到等待展示的弹幕链表中;
方法initWaitBean可采用以下代码实现:
public void initWaitBean(ArrayList<DanmakuBean> beanList) {
for (DanmakuBean bean : beanList) {
mWaitingDanmakuBean.offer(bean);
}
}
其中:
beanList是传入的弹幕元数据集合,
mWaitingDanmakuBean是等待展示的弹幕链表集合,
offer是Android系统链表LinkedList类中的方法,用来向链表尾部插入一条数据;
在自定义类DanmakuItemDrawer中,定义方法draw,用来对正在显示移动的弹幕进行绘制;
方法draw可采用以下代码实现:
public void draw(Canvas canvas) {
mLock.lock();
canvas.drawPaint(mClearPaint);
for (DrawerBean drawerBean : mRunningBean) {
canvas.drawBitmap(drawerBean.getBitmap(), drawerBean.getX(),drawerBean.getY(), mBitmapPaint);
drawerBean.moveToNextPosition();}
removeDoneItem();
mLock.unlock();
}
其中:
Canvas是Android系统提供的画布用来绘制,
lock方法是Android系统ReentrantLock类中的方法,用来加锁,对多线程进行控制,每次只能一个线程进行绘制,
drawBitmap是Android系统Canvas画布中的方法,用来在画布上绘制位图,
moveToNextPosition是自定义类DrawerBean中的方法用来计算弹幕移动到的位置坐标,
unlock方法是Android系统ReentrantLock类中的方法,用来释放锁资源;
步骤5,自定义类DanmakuView,继承Android系统提供的TextureView,用来在线程中绘制和渲染;
在DanmakuView类中实现TextureView.SurfaceTextureListener接口,在onSurfaceTextureAvailable回调方法中清空画布;
onSurfaceTextureAvailable回调方法可采用以下代码实现:
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width,int height) {
Canvas canvas = lockCanvas();
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
unlockCanvasAndPost(canvas);
}
其中:
Canvas是Android系统提供的画布类型的对象,
lockCanvas是Android系统TextureView类中的方法用来获取画布并对画布对象加锁,
drawColor是Android系统Canvas画布中的方法用来绘制颜色,
TRANSPARENT是Androi系统Color类中的常量用来代表透明颜色,
unlockCanvasAndPost是Android系统TextureView中的方法用来释放画布,
在自定义类DanmakuView中,定义方法start,用来控制开始加载显示弹幕信息;
方法start可采用以下代码实现:
public void start() {
mDrawThread = new DanmakuDrawThread();
mDrawThread.start();
setSurfaceTextureListener(this);
}
其中:
DanmakuDrawThread是DanmakuView的内部类,继承Android系统提供的线程Thread,用来在子线程中绘制弹幕信息,
start方法是Android系统Thread类中的方法,用来开启线程,
setSurfaceTextureListener方法是Android系统提供的TextureView类中的方法,用来监听Surface变化。
在上述技术方案的基础上,步骤1中,所述自定义弹幕元数据类DanmakuBean具体包括:
枚举SOURCE,用来标记弹幕来源,里面有两个常量MY和OTHERS,
变量mSource,用来区分弹幕所发的用户,为枚举SOURCE类型,
变量mWords,用来代表弹幕的内容,为Android系统提供的String类型,
变量mImgUrl,用来代表用户头像的地址,为Android系统提供的String类型。
在上述技术方案的基础上,步骤2中,所述自定义弹幕布局类DanmakuItem具体包括:
变量mText,用来显示弹幕的文字内容,用来显示文字颜色设定选项,为Android系统提供文字展示控件TextView类型,
变量mHeadImage,用来显示用户头像,用来显示用户头像大小设定选项,为Android系统提供的图片展示控件ImageView类型,
变量mDanmakuBean,用来提供弹幕数据,为自定义的DanmakuBean类型,
变量mTextSize,用来控制弹幕字体的大小,为Android系统提供的int类型,
变量mReady,用来标识弹幕头像是否加载成功,为Android系统提供的布尔boolean类型。
在上述技术方案的基础上,步骤3中,所述自定义弹幕数据类DrawerBean具体包括:
变量mX、mY、mTargetX和mStartX,mX用来记录弹幕移动位置的x轴坐标,mY用来记录弹幕移动位置的y轴坐标,mTargetX用来记录弹幕最大移动的位置,mStartX用来记录弹幕的起始点x轴坐标,均为Android系统提供的浮点型类型,
变量mSpeed,用来提供每次移动的距离,为Android系统提供的浮点类型,
变量mBitmap,用来存储弹幕中的头像和内容,为Android系统提供的Bitmap位图类型。
在上述技术方案的基础上,步骤4中,所述自定义类DanmakuItemDrawer具体包括:
链表变量mWaitingDanmakuBean,用来存放弹幕数据集,为Android系统提供的LinkedList类型,
链表变量mRunningBean,用来存放自定义弹幕控件集,为Android系统提供的LinkedList类型,
变量mContext,用来初始化弹幕控件,为Android系统提供的上下文Context类型,
变量mLock,用来进行多线程数据的同步,为Android系统提供ReentrantLock类型。
在上述技术方案的基础上,步骤5中,所述自定义类DanmakuView具体包括:
内部类DanmakuDrawThread,继承Android系统提供的线程类Thread,用来进行刷新绘制,
计时器类型的变量mTimer,是Android系统提供的Timer类型的变量用来,执行定时任务,设置间隔一定时间添加弹幕信息。
内部类DanmakuDrawThread可采用以下代码实现:
private class DanmakuDrawThread extends Thread {
private AtomicBoolean isRunning = new AtomicBoolean(false);
public void run() {
isRunning.set(true); Canvas canvas = null; long frameDuration;
while (isRunning.get() && getSurfaceTexture() != null) {
synchronized (mLock) {
frameDuration = System.currentTimeMillis();
canvas = lockCanvas();
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
mItemDrawer.draw(canvas);
frameDuration = System.currentTimeMillis() -frameDuration;
Thread.sleep(16 - frameDuration);
unlockCanvasAndPost(canvas);
}}
}
其中isRunning 变量是Android系统提供的AtomicBoolean类型的的原子变量,用来在多线程中加锁排他性,其中set和get方法是Android系统AtomicBoolean类中的方法用来加锁Canvas是Android系统提供的画布,frameDuration变量是Android系统提供长整型类型的变量用来记录时间,getSurfaceTexture是Android系统TextureView类中的方法用来获取SurfaceTexture对象不为空是进行绘制,currentTimeMillis是Android系统System类中的方法用来获取系统当前的时间戳,sleep是Android系统线程Thread类中的方法用来暂停当前线程释放cpu资源。lockCanvas 和unlockCanvasAndPost是Android系统TextureView中的方法分别用来获取画布资源和释放。
计时器类型的变量mTimer可采用以下代码实现:
mTimer = new Timer();
mTimer.schedule(new TimerTask() {
public void run() {
mItemDrawer.runNextItem();
}
}, 0, perItemTime);
其中Timer是Android系统提供的定时器类,schedule是其中的方法,用来添加定时器任务,TimerTask是Android系统提供的计划任务类,用来执行任务。runNextItem是DanmakuItemDrawer类中的方法,用来加载下一个弹幕信息。
本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (8)
1.一种弹幕效果的实现方法,其特征在于,包括如下步骤:
步骤1,自定义弹幕元数据类DanmakuBean,为Android系统提供的Object类型,用来存放弹幕的元数据;
步骤2,自定义弹幕布局类DanmakuItem,继承Android系统提供的线性布局LinearLayout,用来显示弹幕;
所述自定义弹幕布局类DanmakuItem最终返回一个位图,其中包括用户的头像和发表的弹幕内容;
步骤3,自定义弹幕数据类DrawerBean,继承Android系统提供的Object类型,用来提供弹幕移动相关计算;
步骤4,自定义类DanmakuItemDrawer,继承Android系统提供的Object类型,用来绘制弹幕条目;
在自定义类DanmakuItemDrawer中,定义方法initWaitBean,用来把弹幕数据集合添加到等待展示的弹幕链表中;
在自定义类DanmakuItemDrawer中,定义方法draw,用来对正在显示移动的弹幕进行绘制;其中,通过lock方法来加锁,对多线程进行控制,每次只能一个线程进行绘制;通过unlock方法来释放锁资源;
步骤5,自定义类DanmakuView,继承Android系统提供的TextureView,用来在线程中绘制和渲染;
在DanmakuView类中实现TextureView.SurfaceTextureListener接口,在onSurfaceTextureAvailable回调方法中清空画布;
在自定义类DanmakuView中,定义方法start,用来控制开始加载显示弹幕信息;其中,通过内部类DanmakuDrawThread在子线程中绘制弹幕信息。
2.如权利要求1所述的弹幕效果的实现方法,其特征在于:在自定义弹幕布局类DanmakuItem中,定义方法createItem,用来创建弹幕布局、获取头像文字和背景内容相应的View对象;
在自定义弹幕布局类DanmakuItem中,定义静态方法createBitmapFromView,用来创建Bitmap位图。
3.如权利要求2所述的弹幕效果的实现方法,其特征在于:在自定义弹幕数据类DrawerBean中,定义方法createBitmap,用来创建弹幕位图,把用户头像和内容绘制到位图中;
在自定义弹幕数据类DrawerBean中,定义方法clean,用来对bitmap位图资源及时进行回收,节约内存防止内存溢出。
4.如权利要求1或3所述的弹幕效果的实现方法,其特征在于:步骤1中,所述自定义弹幕元数据类DanmakuBean具体包括:
枚举SOURCE,用来标记弹幕来源,里面有两个常量MY和OTHERS,
变量mSource,用来区分弹幕所发的用户,为枚举SOURCE类型,
变量mWords,用来代表弹幕的内容,为Android系统提供的String类型,
变量mImgUrl,用来代表用户头像的地址,为Android系统提供的String类型。
5.如权利要求1或3所述的弹幕效果的实现方法,其特征在于:步骤2中,所述自定义弹幕布局类DanmakuItem具体包括:
变量mText,用来显示弹幕的文字内容,用来显示文字颜色设定选项,为Android系统提供文字展示控件TextView类型,
变量mHeadImage,用来显示用户头像,用来显示用户头像大小设定选项,为Android系统提供的图片展示控件ImageView类型,
变量mDanmakuBean,用来提供弹幕数据,为自定义的DanmakuBean类型,
变量mTextSize,用来控制弹幕字体的大小,为Android系统提供的int类型,
变量mReady,用来标识弹幕头像是否加载成功,为Android系统提供的布尔boolean类型。
6.如权利要求1或3所述的弹幕效果的实现方法,其特征在于:步骤3中,所述自定义弹幕数据类DrawerBean具体包括:
变量mX、mY、mTargetX和mStartX,mX用来记录弹幕移动位置的x轴坐标,mY用来记录弹幕移动位置的y轴坐标,mTargetX用来记录弹幕最大移动的位置,mStartX用来记录弹幕的起始点x轴坐标,均为Android系统提供的浮点型类型,
变量mSpeed,用来提供每次移动的距离,为Android系统提供的浮点类型,
变量mBitmap,用来存储弹幕中的头像和内容,为Android系统提供的Bitmap位图类型。
7.如权利要求1或3所述的弹幕效果的实现方法,其特征在于:步骤4中,所述自定义类DanmakuItemDrawer具体包括:
链表变量mWaitingDanmakuBean,用来存放弹幕数据集,为Android系统提供的LinkedList类型,
链表变量mRunningBean,用来存放自定义弹幕控件集,为Android系统提供的LinkedList类型,
变量mContext,用来初始化弹幕控件,为Android系统提供的上下文Context类型,
变量mLock,用来进行多线程数据的同步,为Android系统提供ReentrantLock类型。
8.如权利要求1或3所述的弹幕效果的实现方法,其特征在于:步骤5中,所述自定义类DanmakuView具体包括:
内部类DanmakuDrawThread,继承Android系统提供的线程类Thread,用来进行刷新绘制,
计时器类型的变量mTimer,是Android系统提供的Timer类型的变量用来,执行定时任务,设置间隔一定时间添加弹幕信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810398025.XA CN108600852B (zh) | 2018-04-28 | 2018-04-28 | 一种弹幕效果的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810398025.XA CN108600852B (zh) | 2018-04-28 | 2018-04-28 | 一种弹幕效果的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108600852A true CN108600852A (zh) | 2018-09-28 |
CN108600852B CN108600852B (zh) | 2020-12-15 |
Family
ID=63610477
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810398025.XA Active CN108600852B (zh) | 2018-04-28 | 2018-04-28 | 一种弹幕效果的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108600852B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109348303A (zh) * | 2018-09-30 | 2019-02-15 | 武汉斗鱼网络科技有限公司 | 一种弹幕消息的分发方法、装置、终端和存储介质 |
CN109413489A (zh) * | 2018-09-29 | 2019-03-01 | 武汉斗鱼网络科技有限公司 | 串行式的多线程弹幕分发方法、装置、设备和存储介质 |
CN109495782A (zh) * | 2018-10-30 | 2019-03-19 | 武汉斗鱼网络科技有限公司 | 一种弹幕消息的存储方法、系统和存储介质 |
CN109788334A (zh) * | 2019-01-31 | 2019-05-21 | 北京字节跳动网络技术有限公司 | 弹幕处理方法、装置、电子设备及计算机可读存储介质 |
CN110234033A (zh) * | 2019-05-31 | 2019-09-13 | 上海临奇智能科技有限公司 | 一种弹幕呈现方法及设备 |
CN110930496A (zh) * | 2019-11-19 | 2020-03-27 | 北京达佳互联信息技术有限公司 | 视图绘制方法、装置、电子设备和存储介质 |
CN111083551A (zh) * | 2019-12-17 | 2020-04-28 | 腾讯科技(深圳)有限公司 | 弹幕渲染方法、装置、计算机可读存储介质和计算机设备 |
CN111131910A (zh) * | 2020-01-02 | 2020-05-08 | 广州虎牙科技有限公司 | 弹幕实现方法、装置、电子设备和可读存储介质 |
CN111796825A (zh) * | 2020-06-30 | 2020-10-20 | 北京字节跳动网络技术有限公司 | 一种弹幕的绘制方法、装置、设备和存储介质 |
CN115442635A (zh) * | 2021-06-04 | 2022-12-06 | 武汉斗鱼鱼乐网络科技有限公司 | 一种跨平台安全过滤弹幕的方法、装置、设备和存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110252402A1 (en) * | 2006-04-17 | 2011-10-13 | Cory Sanoy | Enhancing software application features and content objects |
CN103593231A (zh) * | 2012-08-14 | 2014-02-19 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置及移动终端 |
KR20140020435A (ko) * | 2012-08-08 | 2014-02-19 | 한국과학기술정보연구원 | 멀티쓰레드를 이용한 동영상 실시간 렌더링 방법 및 시스템 |
CN105872679A (zh) * | 2015-12-31 | 2016-08-17 | 乐视网信息技术(北京)股份有限公司 | 弹幕显示方法和装置 |
CN106528159A (zh) * | 2016-11-22 | 2017-03-22 | 深圳铂睿智恒科技有限公司 | 一种移动终端实现应用具有动态效果的方法及系统 |
CN106658142A (zh) * | 2016-12-09 | 2017-05-10 | 广州华多网络科技有限公司 | 界面配置方法及装置 |
CN107092643A (zh) * | 2017-03-06 | 2017-08-25 | 武汉斗鱼网络科技有限公司 | 一种弹幕渲染方法及装置 |
CN107135427A (zh) * | 2017-03-28 | 2017-09-05 | 武汉斗鱼网络科技有限公司 | 一种显示弹幕信息的方法和系统 |
-
2018
- 2018-04-28 CN CN201810398025.XA patent/CN108600852B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110252402A1 (en) * | 2006-04-17 | 2011-10-13 | Cory Sanoy | Enhancing software application features and content objects |
KR20140020435A (ko) * | 2012-08-08 | 2014-02-19 | 한국과학기술정보연구원 | 멀티쓰레드를 이용한 동영상 실시간 렌더링 방법 및 시스템 |
CN103593231A (zh) * | 2012-08-14 | 2014-02-19 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置及移动终端 |
CN105872679A (zh) * | 2015-12-31 | 2016-08-17 | 乐视网信息技术(北京)股份有限公司 | 弹幕显示方法和装置 |
CN106528159A (zh) * | 2016-11-22 | 2017-03-22 | 深圳铂睿智恒科技有限公司 | 一种移动终端实现应用具有动态效果的方法及系统 |
CN106658142A (zh) * | 2016-12-09 | 2017-05-10 | 广州华多网络科技有限公司 | 界面配置方法及装置 |
CN107092643A (zh) * | 2017-03-06 | 2017-08-25 | 武汉斗鱼网络科技有限公司 | 一种弹幕渲染方法及装置 |
CN107135427A (zh) * | 2017-03-28 | 2017-09-05 | 武汉斗鱼网络科技有限公司 | 一种显示弹幕信息的方法和系统 |
Non-Patent Citations (1)
Title |
---|
COOLTONE: "Android之弹幕(一)带头像", 《COOLTONE的博客-CSDN博客》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109413489A (zh) * | 2018-09-29 | 2019-03-01 | 武汉斗鱼网络科技有限公司 | 串行式的多线程弹幕分发方法、装置、设备和存储介质 |
CN109348303A (zh) * | 2018-09-30 | 2019-02-15 | 武汉斗鱼网络科技有限公司 | 一种弹幕消息的分发方法、装置、终端和存储介质 |
CN109348303B (zh) * | 2018-09-30 | 2021-02-02 | 武汉斗鱼网络科技有限公司 | 一种弹幕消息的分发方法、装置、终端和存储介质 |
CN109495782A (zh) * | 2018-10-30 | 2019-03-19 | 武汉斗鱼网络科技有限公司 | 一种弹幕消息的存储方法、系统和存储介质 |
CN109495782B (zh) * | 2018-10-30 | 2021-04-09 | 武汉斗鱼网络科技有限公司 | 一种弹幕消息的存储方法、系统和存储介质 |
CN109788334A (zh) * | 2019-01-31 | 2019-05-21 | 北京字节跳动网络技术有限公司 | 弹幕处理方法、装置、电子设备及计算机可读存储介质 |
CN110234033A (zh) * | 2019-05-31 | 2019-09-13 | 上海临奇智能科技有限公司 | 一种弹幕呈现方法及设备 |
CN110930496B (zh) * | 2019-11-19 | 2021-01-26 | 北京达佳互联信息技术有限公司 | 视图绘制方法、装置、电子设备和存储介质 |
CN110930496A (zh) * | 2019-11-19 | 2020-03-27 | 北京达佳互联信息技术有限公司 | 视图绘制方法、装置、电子设备和存储介质 |
CN111083551A (zh) * | 2019-12-17 | 2020-04-28 | 腾讯科技(深圳)有限公司 | 弹幕渲染方法、装置、计算机可读存储介质和计算机设备 |
CN111131910A (zh) * | 2020-01-02 | 2020-05-08 | 广州虎牙科技有限公司 | 弹幕实现方法、装置、电子设备和可读存储介质 |
CN111796825A (zh) * | 2020-06-30 | 2020-10-20 | 北京字节跳动网络技术有限公司 | 一种弹幕的绘制方法、装置、设备和存储介质 |
CN111796825B (zh) * | 2020-06-30 | 2024-02-09 | 北京字节跳动网络技术有限公司 | 一种弹幕的绘制方法、装置、设备和存储介质 |
CN115442635A (zh) * | 2021-06-04 | 2022-12-06 | 武汉斗鱼鱼乐网络科技有限公司 | 一种跨平台安全过滤弹幕的方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108600852B (zh) | 2020-12-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108600852A (zh) | 一种弹幕效果的实现方法 | |
CN1860505B (zh) | 图形处理系统中的统一合成引擎的系统和方法 | |
CN108230262A (zh) | 图像处理方法、图像处理装置和存储介质 | |
CN106873991A (zh) | 页面生成方法和装置 | |
US11544843B2 (en) | Tracking biological objects over time and space | |
Sereda et al. | Automating transfer function design for volume rendering using hierarchical clustering of material boundaries. | |
EP1150215A2 (en) | A method of annotating an image | |
CN111080766B (zh) | 一种基于WebGL的GPU加速海量目标高效渲染方法 | |
CN109189390B (zh) | 自动生成布局文件的方法、存储介质 | |
CN110286905B (zh) | 一种基于Echarts的数据展示方法 | |
Kloimüllner et al. | Kara: A system for visualising and visual editing of interpretations for answer-set programs | |
CN113360280B (zh) | 基于多线程运行、动态全局变量处理的仿真曲线显示方法 | |
CN111596919B (zh) | 图文绘制结果的展示方法、装置、计算机设备及存储介质 | |
CN107479871A (zh) | 一种海量的矢量数据的访问和渲染方法、电子设备及存储介质 | |
CN107832103A (zh) | 基于Android系统的UI控件背景模糊处理和动态显示的方法 | |
CN113095995A (zh) | 网页水印添加方法、装置、电子设备及存储介质 | |
CN106250076A (zh) | 用于独立控制显示器的多个区域的装置及其方法 | |
US20200118305A1 (en) | Automatic line drawing coloring program, automatic line drawing coloring apparatus, and graphical user interface program | |
US6191790B1 (en) | Inheritable property shading system for three-dimensional rendering of user interface controls | |
CN107818588A (zh) | Android系统基于JNI多线程调用Qt绘图的装置和方法 | |
WO1997022087A1 (en) | Computer animation display system and method | |
CN104809099A (zh) | 文档文件生成装置及文档文件生成方法 | |
CN114443153A (zh) | 界面绘图方法、装置、计算机设备和存储介质 | |
CN102129438A (zh) | 展示网页信息的方法及系统 | |
CN107066271B (zh) | 一种显示对象的层级管理方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |