Android如何自定义View实现数字雨效果
发表于:2024-11-20 作者:千家信息网编辑
千家信息网最后更新 2024年11月20日,今天小编给大家分享一下Android如何自定义View实现数字雨效果的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收
千家信息网最后更新 2024年11月20日Android如何自定义View实现数字雨效果
今天小编给大家分享一下Android如何自定义View实现数字雨效果的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
效果图
在安卓中多种类型的动画,有帧动画、补间动画、属性动画,除此之外,使用自定义的View结合数学公式,就可以绘制出复杂的界面或者动画。这篇文章记录的是仿照黑客帝国的数字雨,来看看效果吧。
实现步骤
准备工作,常量的配置信息
// 文字的颜色值 final int DEFAULT_TEXT_COLOR = Color.argb(255, 0, 255, 70); // 文字大小 final int TEXT_SIZE = 24; // 普通画笔 Paint mPaint; // 高亮画笔 Paint mPaintLight; // 改变文字的间隔时间 int switchInternal = interval[random.nextInt(interval.length)]; // 数字落下的速度 int speed;
构建显示文本的内容,因为计算机都是由0和1组成,所以这里用0和1代表它的内容数据。
// 构建0和1的字符串if (contentArray == null) { contentArray = new String[2]; contentArray[0] = "0"; contentArray[1] = "1";}
由于是随机显示,所以使用随机数获取内容
private String getChar() { return contentArray[random.nextInt(2)]; }
由于是自定义View,所以入口就在自定义View的构造函数中。
public NumberView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); }
在init方法中对上面的配置信息进行初始化,比如创建具体的画笔颜色,文字大小等
private void init() { mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mPaint.setARGB(255, 0, 255, 70); mPaint.setTextSize(TEXT_SIZE); a = textColor >> 24 & 0xff; r = textColor >> 16 & 0xff; g = textColor >> 8 & 0xff; b = textColor & 0xff; mPaint.setARGB(a, r, g, b); mPaintLight = new Paint(Paint.ANTI_ALIAS_FLAG); mPaintLight.setARGB(255, 140, 255, 170); mPaintLight.setTextSize(TEXT_SIZE); }
在onMeasure方法中测量View的大小,View本身大小多少,这由onMeasure()决定的。
@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); int widthSize = MeasureSpec.getSize(widthMeasureSpec); int widthMode = MeasureSpec.getMode(widthMeasureSpec); int heightSize = MeasureSpec.getSize(heightMeasureSpec); int heightMode = MeasureSpec.getMode(heightMeasureSpec); if (widthMode == MeasureSpec.EXACTLY) { mWidth = widthSize; } if (heightMode == MeasureSpec.EXACTLY) { mHeight = heightSize; } setMeasuredDimension((int) mWidth, (int) mHeight); }
onDraw()定义了如何绘制这个View,所以在onDraw方法中,必须要进行绘制操作,这样才能显示出来动画。
@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); render(canvas); rain(); } private void rain() { for (int j = 0; j < streams.length; j++) { Symbol[] symbols = (Symbol[]) streams[j]; for (int i = 0; i < symbols.length; i++) { Symbol symbol = symbols[i]; symbol.y = symbol.y >= mHeight ? 0 : symbol.y + symbol.speed; } }}
无论是怎样的操作,自定义View总是离不开onMeasure onLayout onDraw的核心方法。比如我们要绘制一幅画,也需要这样设计,它的大小、位置、和绘制成什么样。就像这些代码的方法。 onMeasure:决定视图的大小 onLayout:决定视图的位置
以上就是"Android如何自定义View实现数字雨效果"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。
动画
大小
内容
方法
篇文章
效果
数字
文字
知识
画笔
位置
信息
视图
面的
颜色
配置
不同
复杂
很大
入口
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
成都外包软件开发
天津网络技术咨询联系人
我的世界服务器解封后进不去了
tbc 休闲玩家服务器
数据库主键设置要求
4个字软件开发wi什么
南通华友软件开发
数字数据库发展
公司的pop服务器地址
it包括软件开发
莱芜智慧医养软件开发电话
表态发言网络安全
常熟网络技术开发咨询热线
服务器( ).
远程数据库连接失败是什么意思
中控考勤机数据库
免费网络安全法ppt
山西java软件开发咨询客服
网络安全演讲比赛背景图片
网络服务器有什么区别
华为软件开发乱不乱
计算机网络技术求职意愿
数据库自动清理日志有什么危害
常熟网络技术开发咨询热线
知网数据库检索历史
内网访问服务器数据库
dnf服务器怎么获得金币
远程服务器ip定时报送
泛在感知网络技术
登录服务器时显示登录异常