仿黑客帝国文字雨效果

    1. package com.xuefeng.demo.widget.hkrainie;
    2. import android.content.Context;
    3. import android.graphics.Canvas;
    4. import android.graphics.Color;
    5. import android.graphics.Paint;
    6. import android.graphics.Paint.Align;
    7. import android.graphics.Paint.Style;
    8. import android.os.Handler;
    9. import android.util.AttributeSet;
    10. import android.view.View;
    11. public class HKTextGroup extends View{
    12. private char[] count = {‘A‘,‘B‘,‘C‘,‘D‘,‘E‘,‘F‘,‘G‘,‘H‘,‘J‘,‘K‘,‘L‘,‘M‘,‘N‘,‘O‘};
    13. private Paint paint;
    14. private float textsize = 40;
    15. public HKTextGroup(Context context, AttributeSet attrs) {
    16. super(context, attrs);
    17. init();
    18. }
    19. private Cell[][]cells;
    20. private void init(){
    21. paint = new Paint();
    22. paint.setAntiAlias(true);
    23. paint.setColor(Color.WHITE);
    24. paint.setTextSize(textsize);
    25. paint.setTextAlign(Align.LEFT);
    26. paint.setStyle(Style.FILL);
    27. cells = new Cell[row][line];
    28. for (int i = 0; i < row; i++) {
    29. for (int j = 0; j < line; j++) {
    30. cells[i][j] = new Cell(i, j);
    31. cells[i][j].alpha = 0;
    32. cells[i][j].msg = ""+count[(int) (Math.random()*count.length)];
    33. }
    34. }
    35. }
    36. //行
    37. private int line = 20;
    38. //列
    39. private int row = 20;
    40. private int seed = 0;
    41. private int stepCount = 11;
    42. @Override
    43. protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    44. super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    45. textsize = getWidth() /10;
    46. }
    47. @Override
    48. protected void onDraw(Canvas canvas) {
    49. super.onDraw(canvas);
    50. for (int i = 0; i < row; i++) {
    51. for (int j = 0; j < line; j++) {
    52. Cell cell = cells[i][j];
    53. //根据透明度设置颜色
    54. if (cell.alpha == 255) {
    55. paint.setColor(Color.WHITE);
    56. }else {
    57. paint.setColor(Color.GREEN);
    58. }
    59. //设置透明度
    60. paint.setAlpha(cell.alpha);
    61. if (cell.alpha != 0) {
    62. canvas.drawText(cell.msg, cell.l*20,(float)(cell.r*textsize*0.8+textsize), paint);
    63. }
    64. }
    65. }
    66. handler.sendEmptyMessageDelayed(seed, 10);
    67. }
    68. private Handler handler = new Handler(){
    69. public void handleMessage(android.os.Message msg) {
    70. for (int i = 0; i < row; i++) {
    71. for (int j = line-1; j >=0; j--) {
    72. //1.如果第一行透明度为0,则有几率变为255;
    73. //2、如果中间行透明度为0,不做处理
    74. //3、中间行不为0,依次减少一个梯度
    75. //4、我上面的一个是255,那么我也是255,而他亮度减1
    76. Cell cell = cells[i][j];
    77. if (j == 0) {
    78. if (cell.alpha == 0) {
    79. if (Math.random()*10>9) {
    80. cell.alpha = 255;
    81. }
    82. }else {
    83. cell.alpha = cell.alpha - 25>0?cell.alpha-25:0;
    84. }
    85. }else if (j>0 && j<=line -1) {
    86. if (cells[i][j-1].alpha == 255) {
    87. cell.alpha = 255;
    88. }else {
    89. cell.alpha = cell.alpha-25>0?cell.alpha-25:0;
    90. }
    91. }
    92. }
    93. }
    94. //刷新,重新绘制
    95. invalidate();
    96. };
    97. };
    98. class Cell{
    99. public Cell(int l,int r){
    100. this.l = l;
    101. this.r = r;
    102. }
    103. //行
    104. public int l;
    105. //列
    106. public int r;
    107. //内容
    108. public String msg;
    109. //zhongzi
    110. public int seed;
    111. //透明度
    112. public int alpha;
    113. }
    114. }
时间: 2024-11-03 05:26:58

仿黑客帝国文字雨效果的相关文章

JS 黑客帝国文字下落效果

黑客帝国文字下落效果 源代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>黑客帝国文字下落</title> <style> html, body {margin:0; padding:0; background-color:#000;} #divList {width:800px; height:500px; border

Java实现黑客帝国数字雨效果

偶然看见黑客帝国里面的一个数字雨的效果,感觉很炫,于是写个代码模仿下.效果图如下 效果很简陋,没做过多修饰,直接上代码: import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.image.MemoryIma

JQuery实现——黑客帝国代码雨效果

效果如你所见就是本页面上方那样的效果 实现方法来自一个印度小伙纸,学习完我也没总结一下,今儿个补上 如何实现,大家右键查看源码复制即可,不过学习的过程还是要总结总结. 下面通过另外两个小例子,一步一步来实现: 第一个: 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <html> 3 <head> 4 5 <

黑客帝国雨效果JS

黑客帝国雨效果JS. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> *{margin: 0;padding: 0;} body{overflow: hidden;} canvas{background: #111;} </style&g

仿知乎/途家导航栏渐变文字动画效果-b

demo.gif 效果图如上,简单分析下 1.导航栏一开始是隐藏的,随着scrollView滚动而渐变 2.导航栏左右两边的navigationItem是一直显示的 3.导航栏参考了途家app,使用了毛玻璃效果,背景是一张图片 4.下拉放大图片效果 5.title文字动画效果 通过简单分析,系统的导航栏实现以上效果有点困难,直接自定义一个假的导航栏更容易点 分布拆解实现以上效果 一.下拉放大header图片 - (void)viewDidLoad {        [super viewDidL

android:TextView实现文字走马灯效果(欺骗系统获取持久的焦点)

通常情况下我们想实现文字的走马灯效果需要在xml文件中这样设置 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="marquee" android:focusable="true" android:

鼠标悬浮于链接之上出现文字说明效果

鼠标悬浮于链接之上出现文字说明效果:对于超链接<a>标签,有一个title属性,当鼠标表悬浮于链接之上时候,就会显示title的属性值,虽然在一定程度上满足了我们的需要,但是美观度却似差强人意,同时无法修改它的样式,下面就来介绍一下如何利用jquery模拟实现此功能.代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="a

图像处理之简单数字水印 - 文字轧花效果

http://blog.csdn.net/jia20003/article/details/7338614 图像处理之文字轧花效果- 简单数字水印 @ gloomyfish 首先看一下效果,左边是一张黑白的文字图像,右边是混合之后的数字水印效果 实现原理 主要是利用位图块迁移算法,首先提取文字骨架,宽度为一个像素.然后将提取的骨架,按 照一定的像素值填充到目标图像中即可.关于位图块迁移算法说明请看这里: http://en.wikipedia.org/wiki/Bit_blit 程序思路: 1.

仿jQuery的siblings效果的js原生代码

仿jQuery的siblings效果的js原生代码 <previousSibling> 属性返回选定节点的上一个同级节点(在相同树层级中的前一个节点). <nextSibling> 属性返回被选节点的下一个同级节点(在相同树层级中的下一个节点). 如果不存在这样的节点,则该属性返回 null.//元素节点的节点类型是 1  obj.previousSibling.nodeType ==1; reverse() 方法用于颠倒数组中元素的顺序. push() 方法可向数组的末尾添加一个