Android 浪漫桃心

几年前,看到过有个牛人用HTML5绘制了浪漫的爱心表白动画。地址在这:浪漫程序员 HTML5爱心表白动画。发现原来程序员也是可以很浪……漫…..的。那么在Android怎么打造如此这个效果呢?参考了一下前面HTML5的算法,在Android中实现了类似的效果。先贴上最终效果图:

生成心形线

心形线的表达式可以参考:桃心线。里面对桃心线的表达式解析的挺好。可以通过使用极坐标的方式,传入角度和距离(常量)计算出对应的坐标点。其中距离是常量值,不需改变,变化的是角度。
桃心线极坐标方程式为:

x=16×sin3α
y=13×cosα?5×cos2α?2×cos3α?cos4α

如果生成的桃心线不够大,可以吧x、y乘以一个常数,使之变大。考虑到大部分人都不愿去研究具体的数学问题,我们直接把前面HTML5的JS代码直接翻译成Java代码就好。代码如下:

public Point getHeartPoint(float angle) {
  float t = (float) (angle / Math.PI);
  float x = (float) (19.5 * (16 * Math.pow(Math.sin(t), 3)));
  float y = (float) (-20 * (13 * Math.cos(t) - 5 * Math.cos(2 * t) - 2 * Math.cos(3 * t) - Math.cos(4 * t))); 
   return new Point(offsetX + (int) x, offsetY + (int) y);
 }

 

其中offsetX和offsetY是偏移量。使用偏移量主要是为了能让心形线处于中央。offsetX和offsetY的值分别为:

 offsetX = width / 2;
 offsetY = height / 2 - 55;

通过这个函数,我们可以将角度从(0,180)变化,不断取点并画点将这个心形线显示出来。好了,我们自定义一个View,然后把这个心形线画出来吧!

复制代码
 @Override
  protected void onDraw(Canvas canvas) {
       float angle = 10;
       while (angle < 180) {
           Point p = getHeartPoint(angle);
           canvas.drawPoint(p.x, p.y, paint);
           angle = angle + 0.02f;
        }
   }
复制代码

 

运行结果如下:

Python是一种高级编程语言,其标志性的Logo包含了一个花桃心的图案。这个图案代表着Python语言的特性和哲学。 首先,花朵代表Python的美学和优雅。Python被设计为简单易懂,代码可读性强,这也是其受欢迎的原因之一。与其他编程语言相比,Python的语法更加简洁,可以用更少的代码实现相同的功能。这种简洁性使得编写和维护Python代码变得更加容易,同时也使得Python成为了初学者入门编程的理想选择。 其次,桃心代表Python社区的温暖与友爱。Python拥有一个庞大的全球开发者社区,其中的人们友善、乐于助人,乐意分享自己的知识和经验。无论是初学者还是有经验的开发者,都能在这个社区中找到帮助和支持。这种友爱的文化使得Python成为了一门非常有人情味的编程语言。 最后,花桃心还代表Python的广泛适用性。Python可以用于开发多种类型的应用程序,包括Web开发、数据分析、人工智能、机器学习等。它有丰富的第三方库和框架,可以帮助开发者快速构建复杂的应用,提高开发效率。无论是个人项目还是商业应用,Python都能提供一种灵活且强大的解决方案。 总而言之,Python花桃心代表了Python编程语言的特性和优势:美学与优雅、友爱与支持以及广泛的适用性。这些特点使得Python成为了一门备受欢迎和广泛使用的编程语言。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值