android制作闪动的红心
Android 制作
2023-09-11 14:14:43 时间
先上一张效果图吧:
说说这个东西的来源吧。今天突然想到笛卡尔心形图,想去看看能不能画个心出来,可是看到一篇不错的文章,那篇文章罗列了非常多关于心形的函数方程,这可把我高兴坏了,于是我选取了一个比較好看的“桃心”做了今天的效果。
以下贴代码:
import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Style; import android.graphics.Path; import android.util.AttributeSet; import android.view.View; public class LoveView extends View { private Paint paint; private float rate = 5; // 半径变化率 private AnimThread at; // 改变rate的线程 private Path path; // 路径 public LoveView(Context context) { super(context); init(); } public LoveView(Context context, AttributeSet attrs) { super(context, attrs); init(); } private void init() { at = new AnimThread(); // 初始化画笔 paint = new Paint(); paint.setAntiAlias(true); paint.setColor(Color.RED); paint.setStyle(Style.FILL); paint.setStrokeWidth(2); // 创建一个路径 path = new Path(); at.start(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 重置画板 path.reset(); // 得到屏幕的长宽的一半 int px = getMeasuredWidth() / 2; int py = getMeasuredHeight() / 2; // 路径的起始点 path.moveTo(px, py - 5 * rate); // 依据心形函数绘图 for (double i = 0; i <= 2 * Math.PI; i += 0.001) { float x = (float) (16 * Math.sin(i) * Math.sin(i) * Math.sin(i)); float y = (float) (13 * Math.cos(i) - 5 * Math.cos(2 * i) - 2 * Math.cos(3 * i) - Math.cos(4 * i)); x *= rate; y *= rate; x = px - x; y = py - y; path.lineTo(x, y); } canvas.drawPath(path, paint); } private class AnimThread extends Thread { public void run() { while (true) { rate += 0.05; if (rate > 20) { // 我的手机大于20后就非常大了,为了不超过屏幕 rate = 5; } try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } // 刷新画布 postInvalidate(); } } }; }
凝视非常清楚了,有些參数rate是依照我手机的实际情况来的。所以我给的值是固定的。还有假设不过依照那篇文章中的函数来的。画出来的心形是反的。所以里面有代码变化过了,这样出来的图就是正的。
事实上有时候认为这东西没什么技术含量(本来不好意思发的),哈哈,只是认为好玩,还是忍不住发出来了。
相关文章
- 制作Android手机开机动画的详细过程
- android仿新浪引导界面
- macos安装android studio(Android Studio 2021.1.1)
- android 编程时,如何在Eclipse中查看Android源码或者第三方组件包源码
- Android群英传笔记——第七章:Android动画机制和使用技巧
- Android设计中的.9.png
- 解决Android SDK下载和更新失败的方法(Win系统) 和离线安装
- 【Android】android studio ndk使用例子
- Android修行手册 - TabLayout全解析 - 小红点和自定义样式
- android java 堆栈_Android下打印调试堆栈方法
- DevOps on DevCloud|如何构建Kotlin开发的Android Apps
- android 同时打开两个sqlite database db
- Android Handler
- Please ensure that adb is correctly located at 'D:Androidandroid-sdkplatform-toolsadb.exe' and
- Android编译报错:No such file or directory(一百零九)
- Android多媒体开发-- android中OpenMax的实现整体框架
- Android使用开发WebView战斗技能
- 解决Android中No resource found that matches android:TextAppearance.Material.Widget.Button.Inverse问题
- Android - 控件android:ems属性
- Android外设开发-qr码采集器
- 【Android机器学习实战】1、用 MLKIT 机器学习库做图片分类
- android 快速入门kotlin
- Android Studio NDK报错:mips64el-linux-android-strip 找不到