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安全错误
数据库的锁怎样保障安全
湖北鼎学网络技术有限公司
戴尔服务器提示psu1
外文文献数据库概述
网络安全宣传周青少年日总结
北京邮电大学计算机网络技术题库
金水区网络安全系列
从安全服务器禁用vac
熟悉数据库原理
非接触网络安全
使用网络安全
网络安全大赛哪里最厉害
微信软件开发上市公司
电脑怎么清微信数据库
内江数据库管理工程师证
网络技术实践步骤论文
文科生网络安全吗
2019网络安全周闭幕
政府软件开发项目合同范本
软件开发工具高考真题
博山供应链erp软件开发
异想天开网络技术免费
戴尔服务器提示psu1
添加数据库缓存失败
巢湖方便网络技术服务怎么样
服务器租用哪些行业好
服务器表面氧化怎么处理
高级数据库技术读书报告
java 数据库教程
新竹服务器
网络安全领导致词