自定义简单弹幕实现

news/2024/5/18 16:18:41

最近项目需求实现一个简单的聊天室弹幕效果,所以自己就手动写了一个简单的view,在这里如果写的不好,还望大神勿怪.

首先思路是: 类似弹幕这种 就是从左往右移动的效果,那么就涉及到Android动画里面的TranslateAnimation

TranslateAnimation 详解

这里我们简单介绍下,就当做回顾一下

         TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta);复制代码

由上面我们可以看出TranslateAnimation有四个参数

  float fromXDelta 动画开始的点离当前View X坐标上的差值 
  float toXDelta 动画结束的点离当前View X坐标上的差值 
  float fromYDelta 动画开始的点离当前View Y坐标上的差值 
  float toYDelta 动画开始的点离当前View Y坐标上的差值 

好吧,这样解释可能有点懵,那我们简单举个例子,fromXDelta就是你view初始的x坐标,fromYDelta就是你初始的Y坐标,
比如我的初始的位置是(0,0,0,0) ,我们想要向右移动10个单位,那么移动后的就是(0,10,0,0)....复制代码

那么我们要实现弹幕的效果,如何去思考怎样去实现动画呢?
一般的弹幕,都是从右向左逐渐消失,那么我的x的坐标的起点就是屏幕的宽度
这里我们可以通过

 getResources().getDisplayMetrics().widthPixels复制代码

拿到我们屏幕的宽度 这个也就是我们的X坐标,那么要移动后的坐标呢?我们会实现从右向左逐渐消失的过程,
所以我们移动后的x坐标就是-getResources().getDisplayMetrics().widthPixels, 这里有个思考为什么不是 0 呢?

好了前期思路已经明了,接下来代码开工~~

首先我们写一个VIEW 继承RelativeLayout 或者LinearLayout 都可以

弹幕根据需求进行相应参数设置,比如行高 速度,以及相邻弹幕出现的时间,又例如文字,颜色等一些设置,当然我们同样可以在layout里面进行设置.

下面主要是几个主要方法,可以根据需求动态设置

初始化数据:

初始化弹幕:

弹幕移动动画:

这里就用到我们上面所讲的TranslateAnimation moveSpeed参数可以设置弹幕的移动速度,这里以后我们可以扩展很多的业务(比如,付费购买加速,减速等道具,或者变颜色等....哈哈哈)

开始弹幕:

这个就是启动我们弹幕的方法

好了我们简单的弹幕就封装好了

接下来在我们需要的地方调用
setDatas方法即可..

实现效果如下:

大功告成,这个是个简易的 非常适合小需求的,嘻嘻嘻~

下面是github的项目地址 有兴趣的同学可以下载看下
github.com/luyaoY/DanM…


http://www.niftyadmin.cn/n/3091693.html

相关文章

curl Problem with the SSL CA cert (path? access rights?)

2019独角兽企业重金招聘Python工程师标准>>> php调用curl 出现CA认证问题, 解决方法,不管有没有安装都要装一下, sudo yum install ca-certificates 然后重启php-fpm 搞定 转载于:https://my.oschina.net/netmouse/blog/1585543

python语言的优点和缺点_Python语言有什么优点和缺点?

Python语言有什么优点和缺点? 发布时间:2020-06-04 16:50:29 来源:亿速云 阅读:148 Python语言有什么优点和缺点?针对这个问题,今天小编总结这篇有关Python的文章,可供感兴趣的小伙伴们参考借鉴…

关于Selenium自学中遇到的问题

1.selenium中启动ie浏览器代时码(红框中)如下 : 点击运行时,控制台报错如下: Started InternetExplorerDriver server (64-bit) 2.53.0.0 Listening on port 31574 Only local connections are allowed Exception in t…

python实时绘制动态曲线_python读取文本绘制动态速度曲线

本文实例为大家分享了python读取文本绘制动态速度曲线的具体代码,供大家参考,具体内容如下 由于需要分析机械加工过程中各个轴的速度,于是用软件导出了数据,写了这个python脚本来显示速度曲线。 效果图如下:源代码&…

7.putty密钥登录Cenost7

系统:Centos7 连接工具:putty 32位 完整版本 连接工具获取地址:https://the.earth.li/~sgtatham/putty/0.70/w32/putty.zip 密钥生成工具 首先打开putty key generator密钥生成工具,该工具有五种生产密钥类型,如果不是…

18 已知下面的字符串是通过RANDOM随机数变量md5sum|cut-c 1-8截取后的结果

面试题18:破解RANDOM随机数案例 已知下面的字符串是通过RANDOM随机数变量md5sum后,再截取一部分连续字符串的结果,请破解这些字符串对应的使用md5sum处理前的RANDOM对应的数字? 21029299 00205d1c a3da1677 1f6d12dd 890684b [roo…

python程序设计基础实验题_Python程序设计习题与答案

《 P y t h o n 程 序 设 计 》 习 题 与 参 考 答 案 第 1 章 基础知识 简单说明如何选择正确的 Python 版本。 答: 在选择 Python 的时候,一定要先考虑清楚自己学习 Python 的目的是什么,打算做哪方 面的开发, 有哪些扩展库可用…

使用Eclipse创建struts项目

在进行创建项目的时候,我们要知道struts是一个web的框架,他的主要的核心的类是总控制器,分控制器,以及表单这几个组成,总控制器和分控制器就是相当于MVC框架中的控制器(C),其实它就是…