91xxx-91xxxxx-大陆av在线-大陆明星乱淫(高h)小说-黄色三级三级-黄色三级三级三级三级-免费在线观看a视频-免费在线观看www-日韩电影网站-日韩电影网址-香港三级日本三级韩国三级-香港三级网站-中国黄色一级大片-中国黄色一级毛片-无码国产精品免费看-久久精品国产自在天天线

歡迎來到酷云建站平臺,全網營銷云系統加盟中心!

海量企業網站模板 · 任您選擇

美出特色,精出品質,一切為了企業更好的營銷

隱藏側欄
Beta
轉載

View視圖中使用onDraw(...)方法實現圖形繪制

       小程序     2021-12-16     admin     20     0    

我想徐州APP開發公司技術人員都知道這樣一個情況,應用啟動時,所有視圖都處于無效狀態。也就是說,視圖還沒有繪制到屏幕上。為解決這個問題,Android調用了頂級View視圖的draw()方法。這會引起自上而下的鏈式調用反應。首先,視圖完成自我繪制,然后是子視圖的自我繪制,再然后是子視圖的子視圖的自我繪制,如此調用下去直至繼承結構的末端。當繼承結構中的所有視圖都完成自我繪制后,最頂級View視圖也就生效了。

為加入這種繪制,可覆蓋以下View方法:

protected void onDraw(Canvas canvas)

在onTouchEvent(...)方法中響應ACTION_MOVE動作時,我們調用invalidate()方法再次讓BoxDrawingView處于失效狀態。這迫使它重新完成自我繪制,并再次調用onDraw(...)方法。

現在我們一起來看看Canvas參數。Canvas和Paint是Android系統的兩大繪制類。

1、Canvas類擁有我們需要的所有繪制操作,其方法可決定繪在哪里以及繪什么,比如線條、圓形、字詞、矩形等。

2、Paint類決定如何繪制。其方法可指定繪制圖形的特征,例如是否填充圖形、使用什么字體繪制、線條是什么顏色等。

返回BoxDrawingView.java中,在BoxDrawingView的XML構造方法中創建兩個Paint對象,如下代碼所示。

創建Paint(BoxDrawingView.java)

public class BoxDrawingView extends View {

private static final String TAG = 'BoxDrawingView';

private Box mCurrentBox;

private List mBoxen = new ArrayList<>();

private Paint mBoxPaint;

private Paint mBackgroundPaint;

...

// Used when inflating the view from XML

public BoxDrawingView(Context context, AttributeSet attrs) {

super(context, attrs);

// Paint the boxes a nice semitransparent red (ARGB)

mBoxPaint = new Paint();

mBoxPaint.setColor(0x22ff0000);

// Paint the background off-white

mBackgroundPaint = new Paint();

mBackgroundPaint.setColor(0xfff8efe0);

}

}

有了Paint對象的支持,現在就能夠在屏幕上繪制矩形框了,如下代碼所示。

覆蓋onDraw(Canvas)方法(BoxDrawingView.java)

public BoxDrawingView(Context context, AttributeSet attrs) {

...

}

@Override

protected void onDraw(Canvas canvas) {

// Fill the background

canvas.drawPaint(mBackgroundPaint);

for (Box box : mBoxen) {

float left = Math.min(box.getOrigin().x, box.getCurrent().x);

float right = Math.max(box.getOrigin().x, box.getCurrent().x);

float top = Math.min(box.getOrigin().y, box.getCurrent().y);

float bottom = Math.max(box.getOrigin().y, box.getCurrent().y);

canvas.drawRect(left, top, right, bottom, mBoxPaint);

}

}

到了這里,徐州APP開發公司小編有必要解釋一下的就是,以上代碼的第一部分簡單直接:使用米白背景paint,填充canvas以襯托矩形框。然后,針對矩形框數組中的每一個矩形框,據其兩點坐標,確定矩形框上下左右的位置。繪制時,左端和頂端的值作為最小值,右端和底端的值作為最大值。

完成位置坐標值計算后,調用Canvas.drawRect(...)方法,在屏幕上繪制紅色矩形框。最后運行DragAndDraw應用,嘗試繪制一些紅色矩形框,如下圖所示。

程序員式的情緒表達

程序員式的情緒表達

這樣我們就創建了一個捕捉其觸摸事件并執行繪制的視圖。

以上便是小編為大家介紹的關于在View視圖中使用onDraw(...)方法實現圖形繪制的過程,如果還有哪些不太明白的地方,可隨時來電和我們聯系,我們專業為您解答。此外,了解更多關于南昌網站建設、微信開發、網站推廣等方面的資訊,歡迎訪問酷優網絡官網動態,更多精彩文章與您分享!


--結束END--

本文鏈接: http://m.8momo.cn/start/2390.html (轉載時請注明來源鏈接)

 
本文標簽: 全部

下班PC閱讀不方便?

手機也可以隨時學習開發

微信關注公眾號“酷云”
"酷云平臺前端開發教學"
每日干貨技術分享
 

×

成為 酷云平臺 代理商!

關注

微信
關注

微信掃一掃
獲取最新優惠信息

酷云平臺公眾號

客服

聯系
客服

很高興為您服務
尊敬的用戶,歡迎您咨詢,我們為新用戶準備了優惠好禮。 咨詢客服

聯系客服:

在線QQ: 3206174

客服電話: 0516-83703228

售前咨詢 售后服務
在線交談 智能小云

工作時間:

周一至周五: 09:00 - 17:00

WAP

手機
訪問

移動端訪問
手機上也能選模板

酷云平臺手機端

91xxx-91xxxxx-大陆av在线-大陆明星乱淫(高h)小说-黄色三级三级-黄色三级三级三级三级-免费在线观看a视频-免费在线观看www-日韩电影网站-日韩电影网址-香港三级日本三级韩国三级-香港三级网站-中国黄色一级大片-中国黄色一级毛片-无码国产精品免费看-久久精品国产自在天天线
<li id="4u6a6"><input id="4u6a6"></input></li>
  • <button id="4u6a6"><strong id="4u6a6"></strong></button><cite id="4u6a6"></cite>
  • <button id="4u6a6"><acronym id="4u6a6"></acronym></button>
  • 主站蜘蛛池模板: 欧美一级视频免费在线观看| 91中文字幕在线| 国语自产在线不卡| 欧美激情欧美激情在线五月| 欧美日韩国产中文精品字幕自在自线| 欧美精品手机在线| 欧美夫妻性生活xx| 91高清视频在线免费观看| 国产aⅴ夜夜欢一区二区三区| 日韩av免费一区| 亚洲一区国产精品| 亚洲欧洲一区二区三区在线观看| 日韩在线小视频| 欧美激情国产高清| 国产精品视频午夜| 亚洲成人av中文字幕| 这里只有精品久久| 日韩欧美国产中文字幕| 日本欧美一级片| 亚洲自拍另类欧美丝袜| 一区二区三区四区精品| 欧美成人免费小视频| 亚洲91av视频| 亚洲国产成人久久综合| 日韩一二三在线视频播| 国产91精品久久久久久| 亚洲第一免费播放区| 精品国内产的精品视频在线观看| 欧美电影在线观看完整版| 国产精品久久久久久久天堂| 精品亚洲aⅴ在线观看| 久久777国产线看观看精品| 国产91在线播放九色快色| 亚洲综合在线播放| 欧美成人网在线| 国产成人av在线| 中文字幕亚洲综合久久筱田步美| 国内精品久久久久影院优 | 5252色成人免费视频| 亚洲第一区中文字幕| 欧美巨乳在线观看|