android制作闪动的红心
生活随笔
收集整理的這篇文章主要介紹了
android制作闪动的红心
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
先上一張效果圖吧:
說(shuō)說(shuō)這個(gè)東西的來(lái)源吧。今天突然想到笛卡爾心形圖,想去看看能不能畫個(gè)心出來(lái),可是看到一篇不錯(cuò)的文章,那篇文章羅列了非常多關(guān)于心形的函數(shù)方程,這可把我高興壞了,于是我選取了一個(gè)比較好看的“桃心”做了今天的效果。
以下貼代碼:
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; // 改變r(jià)ate的線程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);// 創(chuàng)建一個(gè)路徑path = new Path();at.start();}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);// 重置畫板path.reset();// 得到屏幕的長(zhǎng)寬的一半int px = getMeasuredWidth() / 2;int py = getMeasuredHeight() / 2;// 路徑的起始點(diǎn)path.moveTo(px, py - 5 * rate);// 依據(jù)心形函數(shù)繪圖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) { // 我的手機(jī)大于20后就非常大了,為了不超過屏幕rate = 5;}try {Thread.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}// 刷新畫布postInvalidate();}}};}凝視非常清楚了,有些參數(shù)rate是依照我手機(jī)的實(shí)際情況來(lái)的。所以我給的值是固定的。還有假設(shè)不過依照那篇文章中的函數(shù)來(lái)的。畫出來(lái)的心形是反的。所以里面有代碼變化過了,這樣出來(lái)的圖就是正的。
事實(shí)上有時(shí)候認(rèn)為這東西沒什么技術(shù)含量(本來(lái)不好意思發(fā)的),哈哈,只是認(rèn)為好玩,還是忍不住發(fā)出來(lái)了。
轉(zhuǎn)載于:https://www.cnblogs.com/claireyuancy/p/6894745.html
總結(jié)
以上是生活随笔為你收集整理的android制作闪动的红心的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python-第二块:time模块和da
- 下一篇: Relation(NOIP模拟赛)(二分