Android点阵屏效果的控件

博客介绍了如何在Android上实现LED点阵屏幕效果,通过计算汉字对应的点阵矩阵,利用GB2312编码获取字模信息,并将字模转换为点阵矩阵进行绘制。文章详细讲解了实现思路、绘图参数以及关键代码,还提供了滚动和颜色设置等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近发现了一个比较好玩的效果,android实现的LED点阵屏幕效果,挺有意思的,于是花了点时间实现了一下,这个用在演唱会上的粉丝当成牌子举是不是挺好的呢,或者是送给妹子?哈哈~

实现思路比较简单,主要是计算汉字对应的点阵矩阵,汉字通过GB2312编码,每个汉字对用两个byte来表示,而一个汉字被存储为点阵时,以16*16表示,需要16*16=256bit,也就是32byte,GB2312编码也是它在字库文件中的区码和位码,通过这两个值可以计算到这个汉字在字库文件中的相对位置,根据这个位置读取接下来的32位,就对应着这个汉字对应的字模信息,字模信息         其实就是一个byte数组,对于16*16的汉字,对应着长度为32的byte数组。

wo_wordinfo

比如要在手机屏幕上显示两个“我”字,也就是上面的样子,其实对应一个矩阵,称之为点阵矩阵,在存储的时候就是需要保存一个点阵矩阵,如上图的样子,黑色点为true,空心点为false,这个点阵矩阵很容易根据每个汉字的字模信息局算出来,其实就是将字模信息中的每个byte处理一下它的每个bit。

比如“我”这个字,它的字模信息为

[4, -128, 14, -96, 120, -112, 8, -112, 8, -124, -1, -2, 8, -128, 8, -112, 10, -112, 12, 96, 24, 64, 104, -96, 9, 32, 10, 20, 40, 20, 16, 12,]

两个”我”得到就是

[4, -128, 14, -96, 120, -112, 8, -112, 8, -124, -1, -2, 8, -128, 8, -112, 10, -112, 12, 96, 24, 64, 104, -96, 9, 32, 10, 20, 40, 20, 16, 12,

4, -128, 14, -96, 120, -112, 8, -112, 8, -124, -1, -2, 8, -128, 8, -112, 10, -112, 12, 96, 24, 64, 104, -96, 9, 32, 10, 20, 40, 20, 16, 12]

接下来就是将其对应成下面的byte矩阵,当然,对于每个字节,我们保存它的位信息,即保存成boolean值。

0x04,0x80 | 0x04,0x80

0x0E,0xA0 | 0x0E,0xA0

0x78,0x90 | 0x78,0x90

0x08,0x90 | 0x08,0x90

0x08,0x84 | 0x08,0x84

0xFF,0xFE | 0xFF,0xFE

0x08,0x80 | 0x08,0x80

0x08,0x90 | 0x08,0x90

0x0A,0x90 | 0x0A,0x90

0x0C,0x60 | 0x0C,0x60

0x18,0x40 | 0x18,0x40

0x68,0xA0 | 0x68,0xA0

0x09,0x20 | 0x09,0x20

0x0A,0x14 | 0x0A,0x14

0x28,0x14 | 0x28,0x14

0x10,0x0C | 0x10,0x0C

在绘图时,最好还是用SurfaceView,因为滚动时,绘制任务较多,需要注意的几个参数

led_android_tip

控件宽度w,高度h,s为点的半径,高度方向上的点的个数为num,于是

点的半径r=(h – (num + 1) * s ) / (2 * num)

第(i,j)个点的坐标为 { (s + r + (s + 2 * r) * j), (s + r + (s + 2 * r) * i)}

当画每个点的时候和点阵矩阵对比,如果对应位置在点阵矩阵中为true就画成实心点,否则为空心点。

如何让启动起来呢?其实也很简单,只需要定时的将这个点阵矩阵的列循环左右移动,然后重绘即可,移动的速度

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值