1. 程式人生 > >Android利用畫圖類和執行緒畫出閃爍心形

Android利用畫圖類和執行緒畫出閃爍心形

複製程式碼
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.graphics.Typeface;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

/**
 * @author CZ
 * 
 */
public class Love extends
SurfaceView implements SurfaceHolder.Callback, Runnable { boolean mbloop = false; SurfaceHolder mSurfaceHolder = null; private Canvas canvas; int miCount = 0; int y = 50; /** * @param context */ public Love(Context context) { super(context); mSurfaceHolder
= this.getHolder(); mSurfaceHolder.addCallback(this); this.setFocusable(true); this.setKeepScreenOn(true); mbloop = true; } /* * (non-Javadoc) * * @see * android.view.SurfaceHolder.Callback#surfaceChanged(android.view.SurfaceHolder * , int, int, int)
*/ @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // TODO Auto-generated method stub } /* * (non-Javadoc) * * @see * android.view.SurfaceHolder.Callback#surfaceCreated(android.view.SurfaceHolder * ) */ @Override public void surfaceCreated(SurfaceHolder holder) { // TODO Auto-generated method stub new Thread(this).start(); } /* * (non-Javadoc) * * @seeandroid.view.SurfaceHolder.Callback#surfaceDestroyed(android.view. * SurfaceHolder) */ @Override public void surfaceDestroyed(SurfaceHolder holder) { // TODO Auto-generated method stub mbloop = false; } /* * (non-Javadoc) * * @see java.lang.Runnable#run() */ @Override public void run() { // TODO Auto-generated method stub while (mbloop) { try { Thread.sleep(200); } catch (Exception e) { // TODO: handle exception } synchronized (mSurfaceHolder) { Draw(); } } } /** * * Year:2011 Date:2011-7-27 Time:下午06:52:04 Author:CZ TODO */ private void Draw() { // TODO Auto-generated method stub canvas = mSurfaceHolder.lockCanvas(); try { if (mSurfaceHolder == null || canvas == null) { return; } if (miCount < 100) { miCount++; } else { miCount = 0; } Paint paint = new Paint(); paint.setAntiAlias(true); paint.setColor(Color.BLACK); canvas.drawRect(0, 0, 320, 480, paint); switch (miCount % 6) { case 0: paint.setColor(Color.BLUE); break; case 1: paint.setColor(Color.GREEN); break; case 2: paint.setColor(Color.RED); break; case 3: paint.setColor(Color.YELLOW); break; case 4: paint.setColor(Color.argb(255, 255, 181, 216)); break; case 5: paint.setColor(Color.argb(255, 0, 255, 255)); break; default: paint.setColor(Color.WHITE); break; } int i, j; double x, y, r; for (i = 0; i <= 90; i++) { for (j = 0; j<= 90; j++) { r = Math.PI / 45 * i * (1 - Math.sin(Math.PI / 45 * j)) * 20; x = r * Math.cos(Math.PI / 45 * j) * Math.sin(Math.PI / 45 * i) + 320 / 2; y = -r * Math.sin(Math.PI / 45 * j) + 400 / 4; canvas.drawPoint((float) x, (float) y, paint); } } paint.setTextSize(32); paint.setTypeface(Typeface.create(Typeface.SERIF, Typeface.ITALIC)); RectF rect = new RectF(60, 400, 260, 405); canvas.drawRoundRect(rect, (float) 1.0, (float) 1.0, paint); canvas.drawText("Loving You", 75, 400, paint); mSurfaceHolder.unlockCanvasAndPost(canvas); } catch (Exception e) { } } }
複製程式碼

相關推薦

Android利用畫圖執行閃爍

import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rec

java 多執行利用Thread建立執行(Day02)

前言:在一個程式中,如果一次只完成一件事情,很容易實現,但現實生活中很多事情都是同時進行的,所以在java中為了模擬這種狀態,引入了執行緒機制,簡單的說,當程式同時完成很多事情時,就是所謂的多執行緒。 實現執行緒的兩種方式:一是通過繼承Thread類來建立執行緒,另一種方法

Android程序間通訊執行間通訊

程序間和執行緒間通訊 這個知識點算是高階知識點, 執行緒和程序 首先要區分執行緒和程序的區別: 執行緒是cup最小排程單元; 程序是一系列執行緒的集合。 其實區分程序和執行緒通訊有一個很好的方法:程式是否重新起了一個虛擬機器,因為不同程序會啟動不

學習筆記之執行、Thread執行終止相關整理(下)——執行異常&JVM停止

提到執行緒的中斷在某些情況下會丟擲InterruptedException異常,最終導致執行緒的終止。其實,執行緒也有可能由於其他異常原因造成終止,在某些情況下為了做一些妥善的處理,我們需要捕獲這些異常情況。看下面程式碼,覺得會怎樣? 1 2 3 4 5

Android.執行池的原理執行池管理的使用

執行緒池的原理 執行緒池使用來管理執行緒的,之所以稱為池,是因為其可以管理多條執行緒,所以需要用一個集合來管理執行緒,然後執行緒池是有大小的,當一個執行緒池管理的執行緒數目為計算機的cup數*2+1個

Android開發藝術探索》學習筆記之Android執行執行

一、概述 1、主執行緒與子執行緒 主執行緒 又叫UI執行緒 主要作用是執行四大元件以及處理它們和使用者的互動,主要用來處理和介面相關的事情 子執行緒 執行耗時任務,比如網路請求、I/O操作等

Android 開發藝術探索》 第11章 --- android 執行執行

如果程序中沒有四大元件,其優先順序將會降低,intentservice 是service封裝了handerthread ,這是intentservice的優點 執行緒是作業系統的最小排程單元,是系統的一種受限制的系統資源,建立和銷燬執行緒都將有對應的開銷,所以使用執行緒池來避免這種開銷 Andr

執行執行相關

執行緒池概述 系統啟用一個新執行緒的成本是比較高的,因為它涉及與作業系統互動。在這種情形下,使用執行緒池可以很好的提高效能。執行緒池在系統啟動時即建立大量空閒的執行緒,程式將一個Runnable物件或Callable物件傳給執行緒池,執行緒池會啟動一個執行緒來執行它們的run()或call方

Android執行(AsyncTask、IntentService詳解)執行

前言:不變的還是那顆勇往直前的心。          心得來源於:《Android開發藝術探索》 Android 的執行緒和執行緒池 在作業系統中,執行緒是作業系統排程的最小單元,同時執行緒又

Android基礎學習之程序間執行間通訊方式總結

        首先介紹一下程序和執行緒的基本概念及兩者之間的區別:   程序:是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,程序是系統進行資源分配和排程的一個獨立單位。   執行緒:是程序的一個實體,是CPU排程和分派的基本單位,它是比程序更小的能獨立執行的基本

Android 程序執行關係

簡單介紹一下,程序和執行緒的關係。 Processes and Threads 程序和執行緒之間的關係. 一個程序裡面可以有多個執行緒. 程序如果掛了, 執行緒就沒了 程序優先順序 Foreground process 前臺程序 優先級

Android函式響應式程式設計——RxJava的4大subject執行控制

Subject Subject既可以是一個Observer也可以是一個Observable,它用來連線兩者。所以Subject被認為是Subject=Observable+Observer 1.PublishSubject PublishSubject在被建立完成之後立刻開

動態順序棧執行安全的堆疊

1、動態順序棧 固定大小的棧的容量可能隨著引數數目的增加或者遞迴層數的增加而溢位,故此可用動態棧代替,實現思路較為簡單,每次元素入棧前判斷一下棧容量是否足夠,不夠的話增加容量,通過棧底指標移動。以下是參考程式碼: #ifndef DY_STACK_H_INCLUDED #

Android執行(AsyncTask、HandlerThread、IntentService詳解)執行

Android 的執行緒和執行緒池 在作業系統中,執行緒是作業系統排程的最小單元,同時執行緒又是一種受限的系統資源,即執行緒不可能無限制的產生,並且執行緒的建立和銷燬都有一定的開銷。 當系統中存在大量的執行緒時,系統會通過時間片輪轉的方式排程每個執行緒,因此

雙親委派模型執行上下文載入器

最近在讀《架構探險-從零開始寫java web框架》一書時,看到了一個獲取類載入器的地方是這樣寫的: public static ClassLoader getClassLoad

Android中的訊息佇列執行佇列機制

下面是訊息機制中幾個重要成員的關係圖: 一個Activity中可以創建出多個工作執行緒,如果這些執行緒把他們訊息放入Activity主執行緒的訊息佇列中,那麼訊息就會在主執行緒中處理了。因為主執行緒一般負責檢視元件的更新操作,對於不是執行緒安全的檢視元件來說,這種方式能夠很好的實現檢視的更新 。  

利用libevent 執行池實現高併發伺服器的設計

主程序新增監聽套接字的事件並進行事件迴圈,將連線描述符放入定義的資料結構中,並在主程序中進行寫管道,觸發子執行緒的讀管道事件,然後從連線結構中獲取連線描述符進行和客戶端進行通訊。其中主程序和子執行緒都有不同的基事件base. #include <stdi

執行退出執行資源回收問題

最近專案中遇到迴圈8M的記憶體洩漏問題,排查後發現是由於特殊場景下使子執行緒異常退出,主執行緒發現子執行緒退出便再次建立執行緒,此時未回收退出執行緒的資源造成了記憶體洩漏,導致資料庫宿主機oom,此問題不僅導致記憶體洩漏,還會使執行緒控制代碼用完導致其他程序無法分配執行緒的風險。 下面來

程序執行——Python中的實現

一、程序(Process)     程序是一個實體。每一個程序都有它自己的地址空間,一般情況下,包括文字區域(text region)、資料區域(data region)和堆疊(stack region)。文字區域儲存處理器執行的程式碼;資料區域儲存變數和程序執行期間使用的動

python 學習第二十二天(程序執行

程序 程序就是一個程式在一個數據集上的一次動態執行過程。 程序一般由程式、資料集、程序控制塊三部分組成。 我們編寫的程式用來描述程序要完成哪些功能以及如何完成; 資料集則是程式在執行過程中所需要使用的資源; 程序控制塊用來記錄程序的外部特徵,描述程序的執行變化過程,系統可以利