返回顶部
首页 > 资讯 > 移动开发 >Android自定义View实现数字雨效果的全过程
  • 697
分享到

Android自定义View实现数字雨效果的全过程

2024-04-02 19:04:59 697人浏览 薄情痞子
摘要

目录效果图实现步骤总结效果图 在安卓中多种类型的动画,有帧动画、补间动画、属性动画,除此之外,使用自定义的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:决定视图的位置 onDraw:绝对如何画视图 本文章心血来潮想到了黑客帝国的动画,就在GitHub上参考了这个项目,参考的代码在传送门,致敬。

总结

到此这篇关于Android自定义View实现数字雨效果的文章就介绍到这了,更多相关Android自定义View实现数字雨内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Android自定义View实现数字雨效果的全过程

本文链接: https://lsjlt.com/news/139598.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android自定义View实现数字雨效果的全过程
    目录效果图实现步骤总结效果图 在安卓中多种类型的动画,有帧动画、补间动画、属性动画,除此之外,使用自定义的View结合数学公式,就可以绘制出复杂的界面或者动画。这篇文章记录的是仿照黑...
    99+
    2024-04-02
  • Android如何自定义View实现数字雨效果
    今天小编给大家分享一下Android如何自定义View实现数字雨效果的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。效果图在安...
    99+
    2023-06-29
  • Android自定义View实现打字机效果
    一、先来看看效果演示 二、实现原理: 这个其实不难实现,通过一个定时器不断调用TextView的setText就行了,在setText的时候播放打字的音效。 具体代码如下:...
    99+
    2022-06-06
    view 打字机 Android
  • Android自定义View实现闪耀字体效果
    本文实例为大家分享了闪耀字体效果的具体代码,供大家参考,具体内容如下 import android.content.Context; import android.graph...
    99+
    2022-06-06
    view 字体 Android
  • android自定义view实现钟表效果
    本文实例为大家分享了android view实现钟表的具体代码,供大家参考,具体内容如下 先看效果图: 自定义view大家肯定已经不陌生了,所以直接今天直接步入正题:如何利用...
    99+
    2022-06-06
    view Android
  • Android自定义View实现扫描效果
    本文实例为大家分享了Android自定义View实现扫描效果的具体代码,供大家参考,具体内容如下 演示效果如下: 实现内容: 1、控制动画是竖向或者横向 2、控制动画初始是从底部/...
    99+
    2024-04-02
  • Android自定义View实现时钟效果
    本文实例为大家分享了Android自定义View实现时钟效果的具体代码,供大家参考,具体内容如下 自定义时钟 初学自定义View,先画一个不太成熟的时钟(甚至只有秒针) 时钟效果 ...
    99+
    2024-04-02
  • Android中怎么通过自定义view实现TopBar效果
    这篇文章给大家介绍Android中怎么通过自定义view实现TopBar效果,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。布局文件<xml version="1.0" en...
    99+
    2023-05-30
    android view topbar
  • Android自定义View实现折线图效果
    下面就是结果图(每种状态用一个表情图片表示): 一、主页面的布局文件如下: <RelativeLayout xmlns:android="http://schema...
    99+
    2022-06-06
    折线图 view Android
  • Android中自定义view实现侧滑效果
    效果图: 看网上的都是两个view拼接,默认右侧的不显示,水平移动的时候把右侧的view显示出来。但是看最新版QQ上的效果不是这样的,但给人的感觉却很好,所以献丑来一发比较高...
    99+
    2022-06-06
    view 自定义view Android
  • Android自定义Animation实现View摇摆效果
    使用自定义Animation,实现View的左右摇摆效果,如图所示: 代码很简单,直接上源码 activity_maini.xml布局文件: <?xml v...
    99+
    2022-06-06
    view animation Android
  • Android自定义view实现半圆环效果
    本文实例为大家分享了Android自定义view实现半圆环的具体代码,供大家参考,具体内容如下 1.自定义属性 <declare-styleable name="Semicir...
    99+
    2024-04-02
  • Android自定义View实现标签流效果
    本文实例为大家分享了Android自定义View实现标签流效果的具体代码,供大家参考,具体内容如下 一、概述 Android自定义View实现标签流效果,一行放不下时会自动换行,用户...
    99+
    2024-04-02
  • Android自定义view实现输入框效果
    本文实例为大家分享了Android自定义view实现输入框的具体代码,供大家参考,具体内容如下 自定义输入框的View package com.fenghongzhang.day...
    99+
    2024-04-02
  • Android自定义View实现水波纹效果
    介绍:水波纹散开效果的控件在 App 里面还是比较常见的,例如 网易云音乐歌曲识别,附近搜索场景。看下实现的效果:实现思路: 先将最大圆半径与最小圆半径间距分成几等份,从内到外,Paint 透明度依次递减,绘制出同心圆,然后不断的改变这些同...
    99+
    2023-05-30
    android view 水波纹
  • Android通过自定义view实现刮刮乐效果详解
    目录前言实现原理关键步骤创建bitmap绘制文字画路径完整代码前言 已经有两个月没有更新博客了,其实这篇文章我早在两个月前就写好了,一直保存在草稿箱里没有发布出来。原因是有一些原理性...
    99+
    2024-04-02
  • Android自定义View实现弹性小球效果
    照例先看效果图 自定义代码示例 public class BezierView extends View { Paint paint;//画笔 Path path;//...
    99+
    2022-06-06
    弹性 view Android
  • Android自定义View实现圆环交替效果
    下面请先看效果图:    看上去是不很炫的样子,它的实现上也不是很复杂,重点在与onDraw()方法的绘制。 首先是我们的attrs文件: <?xml ver...
    99+
    2022-06-06
    view Android
  • Android自定义View实现水面上涨效果
    实现效果如下: 实现思路: 1、如何实现圆中水面上涨效果:利用Paint的setXfermode属性为PorterDuff.Mode.SRC_IN画出进度所在的矩形与圆的交...
    99+
    2022-06-06
    view Android
  • Android自定义View控件实现刷新效果
    三种得到LinearInflater的方法 a. LayoutInflater inflater = getLayoutInflater(); b. LayoutInflate...
    99+
    2022-06-06
    view Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作