久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx

Android利用SurfaceView實現簡單計時器

自學了android有幾個月了,跟著網上的節奏,應該早點寫些博客來提高自己的水準的。但苦于技術水準始終不自信(也是不過關的結果吧),就一直只是將自己學習過程中的問題和重要的知識點寫在自己的筆記文檔中。

創新互聯總部坐落于成都市區,致力網站建設服務有成都做網站、網站制作、網絡營銷策劃、網頁設計、網站維護、公眾號搭建、微信小程序定制開發、軟件開發等為企業提供一整套的信息化建設解決方案。創造真正意義上的網站建設,為互聯網品牌在互動行銷領域創造價值而不懈努力!

但,總感覺一個人寫下來成就感還是欠缺了那么一些,而且有些問題及解答方法拋出來,是有可能得到更多好的反饋及解決方案的。于是,本著不作不會死的心態,一步一步在技術成長的道路前行——>這篇博客就是其中一步!

若博客中有些技術知識點有誤或者有更優化的解答方案,還望各位小伙伴多多指出。

以下是正題了:

目標:利用SurfaceView實現一個簡單的計時器

圖示:

Android利用SurfaceView實現簡單計時器

描述:1.利用SurfaceView來實現計時功能,同時不斷將圓弧畫滿;2.點擊按鈕可以停止計時;

重點:

1.自定義SurfaceView中針對SurfaceHolder.CallBack的三個方法進行覆寫;

2.通過surfaceHolder.lockCanvas()在新開的線程中得到canvas對象,從而進行圖形和時間文字的繪制;

3.通過設置flag值,從而控制在線程run()方法中邏輯代碼的執行;

重要部分代碼:

public TestView(Context context) { 
  super(context); 
  surfaceHolder = getHolder(); 
  surfaceHolder.addCallback(this); 
  countThread = new CountThread(surfaceHolder); 
} 
 
public TestView(Context context, AttributeSet attributeSet) { 
  super(context, attributeSet); 
  surfaceHolder = getHolder(); 
  surfaceHolder.addCallback(this); 
  countThread = new CountThread(surfaceHolder); 
} 

以上為自定義的SurfaceView(TestView)的構造函數,做相應的初始化工作。(第二個構造方法在實現過程中沒有覆寫,導致如果是通過布局文件引入進Activity中時,則顯示不出View——>也就是一般自定義View一定要覆寫的構造方法)。
在構造方法中初始化了自定義的內部線程類CountThread,用來執行繪制工作。

以下為CountThread類的run()方法執行邏輯:

@Override 
    public void run() { 
      Canvas canvas = null; 
      int pivotX = getResources().getDisplayMetrics().widthPixels / 2; 
      RectF rectF = new RectF(pivotX - 300, pivotX - 300, pivotX + 300, pivotX + 300); 
      while (!isStop) { 
        try { 
          canvas = surfaceHolder.lockCanvas(); 
          canvas.drawColor(Color.WHITE);//設置畫布背景為白色 
//          canvas.drawRoundRect(300, 300, 600, 600, 150, 150, paint);//直接使用該行代碼來畫圓是行不通的,因為這個方法要求版本21,我的手機運行android版本是19 
          canvas.drawArc(rectF, -90, endAngle++, false, paint);//-90在這里不等于270,所以要想從最上方開始畫弧,就得用-90 
          canvas.drawText(countTime(endAngle), pivotX, pivotX, paintText);//顯示計算的時間 
          Thread.sleep(1000); 
        } catch (Exception e) { 
          e.printStackTrace(); 
        } finally { 
          if (canvas != null) {//需要對canvas進行非空判斷 
            surfaceHolder.unlockCanvasAndPost(canvas); 
          } 
        } 
      } 
    } 

主要就是通過Thread.sleep(1000)來停頓一秒,從而通過endAngle來計數。

至此,基本的程序邏輯已經實現。再講該自定義View引入進Activity指定的layout布局文件中即可進行顯示。

但,這其中也會涉及到相應的問題。譬如:

1.圖示中的按鈕無法顯示出來,只能看到自定義的SurfaceView的視圖;

我的做法是:將布局設定為FrameLayout即可。因為SurfaceView是浮在窗口的一層,那么就可以把它看做一個圖層。

2.java.lang.IllegalThreadStateException:Thread already started

該錯誤表明,線程已經存在了。這種錯誤的操作重現是:按下home鍵或者menu鍵會導致該自定的SurfaceView銷毀,但線程并沒有被銷毀,再次啟動該自定義SurfaceView的時候又去重新啟動該線程。解決的方法是:

@Override 
public void surfaceCreated(SurfaceHolder holder) { 
  if (!countThread.isAlive()) {//如果線程不存在,則啟動線程——>當應用掛起的時候Thread是存在的,如果不做這個判斷,會報“Thread already started ”錯誤 
    countThread.start();//SurfaceView創建時開啟線程 
  } 
} 

在surfaceCreated()方法中對該線程是否是在存活中進行判斷。

當然,這里面還有最重要的一個問題:

當按下home鍵或者menu鍵時,程序是沒有在計時的。那么這種情況下,我的一個解決方案是,通過開啟一個service來接收程序停止( onStop() )時已經計時的數值,然后傳遞給service記下并計時,當應用程序界面重新回歸屏幕時( onRestart() )則將數據取出并回傳到自定義的SurfaceView的邏輯run()方法中繼續計時。

整個小程序的代碼可以通過以下鏈接下載:

點擊進入下載頁面:http://xiazai.jb51.net/201701/yuanma/AndroidSurfaceView(jb51.net).rar

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創新互聯。

分享名稱:Android利用SurfaceView實現簡單計時器
文章轉載:http://www.js-pz168.com/article26/jeedjg.html

成都網站建設公司_創新互聯,為您提供搜索引擎優化網站維護電子商務ChatGPT網站導航域名注冊

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都seo排名網站優化
久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx
久久久久久久久久久99999| 日本午夜一区二区| 美女www一区二区| 成人av在线资源| 久久久久久国产精品免费免费| 色偷偷久久一区二区三区| 日韩免费看的电影| 亚洲欧美另类久久久精品2019| 另类欧美日韩国产在线| 147欧美人体大胆444| 亚洲精品高清视频| 精品毛片乱码1区2区3区| 一区二区三区资源| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 粉嫩av免费一区二区三区| 亚洲一区二区四区| 亚洲精品一区二区三区99| 亚洲一区日韩精品中文字幕| 国产成人啪免费观看软件| 日本成人黄色免费看| 日韩午夜中文字幕| 亚洲影视在线播放| a级精品国产片在线观看| 亚洲欧美久久久久一区二区三区| 欧美tickling网站挠脚心| 亚洲电影第三页| 91视频91自| 在线免费观看日韩欧美| 国产精品二区一区二区aⅴ污介绍| 久久99久久久久久久久久久| 精品国产一区二区三区麻豆小说 | 99国产一区二区三精品乱码| 中文字幕不卡每日更新1区2区| 久久综合网色—综合色88| 日本成人在线看| 国内精品一区二区| 欧美一区二区三区免费观看视频 | 色女孩综合网| 国产亚洲人成网站| 九九**精品视频免费播放| 久久伊人一区二区| 精品福利一区二区三区| 日本成人在线网站| 免费av在线一区二区| www国产成人| 狠狠色丁香久久婷婷综| 日本成人黄色免费看| 国产日产精品1区| 国产精品一级片在线观看| 一本一道久久a久久综合精品| 国产精品欧美极品| 成人动漫一区二区| 欧美天天综合网| 亚洲国产一二三| 国产精品欧美久久| 精品国产免费久久| 狠狠色丁香久久婷婷综| 一级日韩一区在线观看| 日韩毛片在线免费观看| 99re在线视频这里只有精品| 欧美高清你懂得| 男男视频亚洲欧美| 日韩理论片在线观看| 中文字幕av不卡| 成人av在线资源网| 91麻豆精品国产自产在线| 偷偷要91色婷婷| 欧美日韩另类综合| 国产精品久久三| 91一区二区三区| 欧美电影免费观看高清完整版在线 | 蜜桃精品久久久久久久免费影院| 久久品道一品道久久精品| 国产精品一二三四区| 欧美在线免费视屏| 视频在线观看一区| 日韩区国产区| 亚洲狼人国产精品| 国产一区二区视频在线免费观看| 久久久青草青青国产亚洲免观| 国产iv一区二区三区| 欧美久久久一区| 激情都市一区二区| 欧美在线观看禁18| 蜜臂av日日欢夜夜爽一区| 中文视频一区视频二区视频三区| 亚洲国产你懂的| 日韩精品一区二区三区色偷偷| 亚洲欧美一区二区三区国产精品 | 欧美成人dvd在线视频| 中文一区一区三区高中清不卡| 99r国产精品| 久久五月婷婷丁香社区| jizzjizzjizz欧美| 精品久久久久99| 不卡av在线网| 久久综合久久综合久久综合| 成人精品高清在线| 欧美videossexotv100| 丁香婷婷深情五月亚洲| 日韩小视频在线观看专区| 粉嫩一区二区三区性色av| 欧美一级欧美三级| 成人免费观看视频| 精品国产一区二区三区不卡| 不卡影院免费观看| 久久综合资源网| 99蜜桃在线观看免费视频网站| 日本一区二区在线不卡| 成人av蜜桃| 一区免费观看视频| 欧美日韩国产免费一区二区三区 | 品久久久久久久久久96高清| 亚洲愉拍自拍另类高清精品| 日韩精品一区二区三区外面| 香蕉乱码成人久久天堂爱免费| 在线观看一区二区三区三州| 蜜臀久久99精品久久久画质超高清 | 99re成人精品视频| 欧美国产精品一区二区| 国精产品99永久一区一区| 亚洲精选免费视频| 午夜精品亚洲一区二区三区嫩草 | 日本精品免费观看高清观看| 久久精品国产在热久久| 91精品国产乱码久久蜜臀| 国产.欧美.日韩| 久久免费的精品国产v∧| 国产精品久久久久久久久久久久午夜片| 国产精品亲子乱子伦xxxx裸| 欧美精品一区二区三区久久| 午夜久久福利影院| 欧美日韩国产综合一区二区 | 国产伦精品一区二区三区在线观看| 欧美一个色资源| 97超级碰碰| 一区二区三区四区视频精品免费| 致1999电视剧免费观看策驰影院| 国内精品第一页| 久久综合网色—综合色88| 激情小说网站亚洲综合网| 亚洲高清免费在线| 欧美日韩在线播放三区| 成人av高清在线| 成人免费在线视频| 色综合婷婷久久| 风间由美中文字幕在线看视频国产欧美 | 国产精品日韩精品欧美在线 | 一区二区三区中文免费| 在线一区二区三区做爰视频网站| 国产精品一区久久久久| 国产亚洲一区二区三区四区 | 亚洲一区二区三区四区中文字幕 | 日本成人看片网址| 六月婷婷色综合| 26uuu另类欧美| 欧美精品一区二区三区在线看午夜 | 国产精品久久久久久户外露出| 日韩久久不卡| 国产精品亚洲午夜一区二区三区 | 精品亚洲成a人在线观看 | 欧美三级蜜桃2在线观看| 波多野洁衣一区| 亚洲免费在线播放| 欧美三区在线观看| caoporn国产精品免费公开| 亚洲国产综合91精品麻豆| 在线综合视频播放| 精品产品国产在线不卡| 日本人妖一区二区| 26uuu国产日韩综合| 日韩精品av一区二区三区| 国产黄色精品网站| 亚洲三级在线免费| 欧美精三区欧美精三区| 国产精品三区www17con| 日韩av电影天堂| 久久久久久9999| 中文字幕中文字幕一区三区| a亚洲天堂av| 亚洲www啪成人一区二区麻豆| 日韩一区二区高清| 欧洲一区二区在线 | 欧美一级一区二区| 欧美高清性xxxxhdvideosex| 国内精品嫩模私拍在线| 日韩理论片网站| 91 com成人网| 日韩激情久久| a在线播放不卡| 日韩av中文字幕一区二区| 久久九九99视频| 在线免费视频一区二区| 国产高清在线一区| 经典三级视频一区| 亚洲日本中文字幕区| 日韩一级免费观看| 色视频一区二区三区| 99久久久精品| 免费在线观看精品|