日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android自定义控件前导基础知识学习(一)——Canvas

發布時間:2025/3/20 Android 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android自定义控件前导基础知识学习(一)——Canvas 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概述:

? ? 我們時常會遇到一些需要利用畫圖來實現的功能。例如一些常見的幾何圖形——點、直線、弧、圓、橢圓、文字、矩形、多邊形、曲線、圓角矩形,總不能遇到 一個幾何圖形就用圖片來代替吧。這樣我們的手機肯定會吃不消。就算我們現在能夠使用一些少量圖片能夠來解決當前的一些問題,可是對于那些“變化多端”的需求來說,這些手段根本不值一提。對此,我們可以利用Canvas畫圖技術來解決。下面就讓我們一起來解開Canvas的神秘面紗吧。


示例編程:

1.繪制圓形

首先看一下效果圖展示:


實現關鍵代碼:

private void drawCirle(Canvas canvas) {canvas.drawCircle(500, 500, 200, paint);}

2.繪制弧線區域

效果圖展示:


實現關鍵代碼:

private void drawCuttingCirle(Canvas canvas) {RectF rect = new RectF(0, 0, 400, 400);canvas.drawArc(rect, // 弧線所使用的矩形區域大小0, // 開始角度90, // 掃過的角度false, // 是否使用中心paint);}


3.繪制1/4圓

效果圖展示:


實現關鍵代碼:

private void drawQuarterCirle(Canvas canvas) {RectF rect = new RectF(0, 0, 300, 300);canvas.drawArc(rect, // 弧線所使用的矩形區域大小0, // 開始角度90, // 掃過的角度true, // 是否使用中心paint);}

4.繪制直線

效果圖展示:


實現關鍵代碼:

private void drawLine(Canvas canvas) {canvas.drawLine(10, 10, 800, 1000, paint);}

5.繪制橢圓

效果圖展示:


實現關鍵代碼:

private void drawOval(Canvas canvas) {// 定義一個矩形區域RectF oval = new RectF(10, 5, 600, 900);// 矩形區域內切橢圓canvas.drawOval(oval, paint);}


6.繪制矩形

效果圖展示:


實現關鍵代碼:

private void drawRect(Canvas canvas) {RectF rect = new RectF(50, 50, 200, 200);canvas.drawRect(rect, paint);}

7.繪制圓角矩形

效果圖展示:


實現關鍵代碼:

private void drawSmoothRect(Canvas canvas) {RectF rect = new RectF(50, 50, 200, 200);canvas.drawRoundRect(rect, 30, // x軸的半徑30, // y軸的半徑paint);}

8.繪制多邊形

效果圖展示:


實現關鍵代碼:

private void drawPolygon(Canvas canvas) {Path path = new Path(); // 定義一條路徑path.moveTo(10, 10); // 移動到 坐標10,10path.lineTo(150, 1360);path.lineTo(960, 720);path.lineTo(500, 180);path.lineTo(10, 10);canvas.drawPath(path, paint);}

9.繪制羅盤

效果圖展示:


實現關鍵代碼:

private void drawCompass(Canvas canvas) {paint.setAntiAlias(true);paint.setStyle(Style.STROKE);canvas.translate(canvas.getWidth() / 2, 500); // 平移羅盤canvas.drawCircle(0, 0, 200, paint); // 畫圓圈// 使用path繪制路徑文字canvas.save();canvas.translate(-155, -155);Path path = new Path();path.addArc(new RectF(0, 0, 300, 300), -180, 180);Paint citePaint = new Paint(paint);citePaint.setTextSize(30);citePaint.setStrokeWidth(1);canvas.drawTextOnPath("http://blog.csdn.net/lemon_tree", path, 35, 0, citePaint);canvas.restore();Paint tmpPaint = new Paint(paint); // 小刻度畫筆對象tmpPaint.setStrokeWidth(2);tmpPaint.setTextSize(30);float y = 200;int count = 60; // 總刻度數for (int i = 0; i < count; i++) {if (i % 5 == 0) {canvas.drawLine(0f, y, 0, y + 20f, paint);canvas.drawText(String.valueOf(i / 5 + 1), -4f, y + 55f, tmpPaint);} else {canvas.drawLine(0f, y, 0f, y + 15f, tmpPaint);}canvas.rotate(360 / count, 0f, 0f); // 旋轉畫紙}// 繪制指針tmpPaint.setColor(Color.GRAY);tmpPaint.setStrokeWidth(4);canvas.drawCircle(0, 0, 20, tmpPaint);tmpPaint.setStyle(Style.FILL);tmpPaint.setColor(Color.YELLOW);canvas.drawCircle(0, 0, 5, tmpPaint);canvas.drawLine(0, 30, 0, -135, paint);} 以上的代碼中,我不知道大家看上去會不會感覺有一點亂,不過沒關系,在下一篇博客中我會對這一塊單獨拿出來說一下。以自定義一個動態時鐘為例詳細說明這部分的內容,大家稍安勿躁。大家可以參看《Android UI編程進階——使用SurfaceViewt和Canvas實現動態時鐘》進行學習。


10.記錄手指運動的路徑

效果圖展示:


實現關鍵代碼:

這一部分的功能實現主要就是考慮三個部分:記錄路徑(這里單獨拿一個變量來保存的原因是因為畫圖的時候會有一個重繪的過程,也就需要擦除后重繪,如果不保存以前的路徑,這樣就可能導致以前的路徑不見了)、記錄事件、繪制。

獲得記錄的路徑:

private ArrayList<PointF> graphics = new ArrayList<PointF>();觸摸事件:

public boolean onTouchEvent(MotionEvent event) {graphics.add(new PointF(event.getX(), event.getY()));invalidate(); // 重新繪制區域return true;}繪制:

private void drawFingerPath(Canvas canvas) {for (PointF point : graphics) {canvas.drawPoint(point.x, point.y, paint);}}

源碼下載:

(注:源碼中除了Canvas使用集合的示范外還有畫曲線、正/余弦函數、SurfaceView的使用、心跳。PS:心跳示例需要點擊屏幕才能觸發)

http://download.csdn.net/detail/u013761665/8423823

總結

以上是生活随笔為你收集整理的Android自定义控件前导基础知识学习(一)——Canvas的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美一级淫片免费视频魅影视频 | 青娱乐最新官网 | 污网站免费看 | 久久一道本| 精品一区二区三区蜜桃 | 精品久久久久国产 | 男女午夜激情视频 | 亚洲国产精品成人无码区 | 自拍亚洲国产 | 国产欧美精品在线 | 婷婷视频网 | 亚洲第一av在线 | aaaaaa毛片| 免费无码一区二区三区 | 久草视频观看 | 国产精品国产三级国产专播品爱网 | 成人区视频 | 超碰97在线免费观看 | 亚洲精品久久久蜜桃网尤妮丝 | 中国黄色大片 | 污视频软件在线观看 | 久久综合91 | 在线观看免费av网站 | 500福利视频导航 | 网站一区二区 | 日韩女优中文字幕 | 在线视频久 | 久久亚洲精品中文字幕 | h在线免费观看 | 黄页视频在线观看 | 婷婷精品在线 | 国产精品偷伦视频免费观看了 | 麻豆网站在线免费观看 | 欧美精品在线播放 | 黄色小视频在线观看免费 | 亚洲人 女学生 打屁股 得到 | ass极品国模人体欣赏 | 超碰成人网 | 国产成人福利视频 | 中文字幕精品亚洲 | 黄色录像三级 | 91在线观看 | 美女被猛网站 | 免费看的黄网站 | 精品中文字幕一区二区 | 九九色在线 | 精品久久久久久无码人妻 | 亚久久 | 成人网导航 | 国产三区在线成人av | 一区二区不卡免费视频 | 伊人婷婷在线 | 国产亚洲精品成人a | 俄罗斯女人裸体性做爰 | 国产成人无码专区 | 国产aⅴ激情无码久久久无码 | 在线视频观看一区二区 | 日韩欧美偷拍 | 欧美91看片特黄aaaa | 日韩草比 | 波多野吉衣一区二区三区 | 秋霞av一区二区三区 | 国产色无码精品视频 | 91射区| 亚洲精品在线网站 | 茄子av| 欧美精选一区二区 | 亚洲在线观看一区 | 桃色综合网 | 日韩一区二区三区在线观看 | 亚洲欧美另类综合 | 美女脱了裤子让男人捅 | 爱情岛论坛自拍亚洲品质极速最新章 | 动漫美女靠逼 | 国产成人在线视频观看 | 黄色一级片在线看 | 日本伊人久久 | 一本大道东京热无码 | 精品人妻人人做人人爽夜夜爽 | 欧美人妻一区二区 | 国产一二三区免费视频 | 免费日韩视频 | 日韩欧美视频一区二区三区 | 国产在线播放一区二区 | 骚虎av在线| 在线不卡的av | 日韩素人| 玉丸(双性调教) | 国产图片区 | 性感美女高潮 | www九色| 少妇大叫太粗太大爽一区二区 | 一路向西在线看 | 欧美一区亚洲一区 | 狠狠做深爱婷婷久久综合一区 | www.五月激情 | 亚洲一区二区免费看 | 日韩成人在线观看视频 | 九色porn蝌蚪 |