Android自定義View中Paint、Rect、Canvas介紹(一)
自定義View對于新手而言貌似是一個很復(fù)雜的東西。格式,各函數(shù)的意義。對于大神經(jīng)常忘記各函數(shù)及一些參數(shù)的具體寫法及意義,剛好在做一個風(fēng)車效果,把過程及遇到的問題都寫下來
1、如何自定義一個View
public class LeafView extends View { private String TAG = "--------LeafView"; public LeafView(Context context, AttributeSet attrs) { super(context, attrs); Log.i(TAG, "我是自定義View: LeafView"); } }
<LinearLayout android:layout_width="match_parent" android:layout_height="100dp" android:orientation="vertical" android:background="@color/colorPrimary" > <com.my.LeafView android:id="@+id/leafView" android:layout_width="50dp" android:layout_height="50dp" android:layout_gravity="center_horizontal" /> </LinearLayout>
上面就是自定義了一個LeafView最簡單的寫法。當(dāng)然界面上什么都不會顯示,除了LinearLayout的背景色
2、onDraw(Canvas canvas)方法
我們現(xiàn)來看下面一段代碼,畫出一個紅色的正方形
public class MyView extends View { private String TAG = "--------MyView"; private int width, height; public MyView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); width = w; height = h; } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Rect rect = new Rect(0, 0, width, height); Paint paint = new Paint(); paint.setColor(Color.RED); canvas.drawRect(rect, paint); } }
通過看上面代碼,有一個onSizeChanged()、onDraw()、canvas.drawRect()方法,有一個Paint, Rect, Canvas類
1、onSizeChanged() 當(dāng)View的大小發(fā)生改變時,會調(diào)用此方法。這里我們獲取View的長和寬
2、onDraw(Canvas canvas) 這個方法就是自定義View的核心。繪制各種圖形
protected void onDraw(Canvas canvas) { super.onDraw(canvas); Rect rect = new Rect(0, 0, width, height); Paint paint = new Paint(); paint.setColor(Color.RED); canvas.drawRect(rect, paint); }
Canvas(畫布)類
可以用來實(shí)現(xiàn)各種圖形的繪制工作,如繪制直線、矩形、圓等等
1、繪制直線:canvas.drawLine();
2、繪制矩形:canvas.drawRect();
3、繪制圓形:canvas.drawCircle();
4、繪制字符:canvas.drawText();
5、繪制圖形:canvas.drawBirmap();
Paint(畫筆)類
要繪制圖形,首先得調(diào)整畫筆,按照自己的開發(fā)需要設(shè)置畫筆的相關(guān)屬性
1、setAntiAlias():設(shè)置畫筆的鋸齒效果
2、setColor():設(shè)置畫筆的顏色
3、setARGB():設(shè)置畫筆的A、R、G、B值
4、setAlpha():設(shè)置畫筆的Alpha值
5、setTextSize():設(shè)置字體的尺寸
6、setStyle():設(shè)置畫筆的風(fēng)格(空心或?qū)嵭模?/p>
7、setStrokeWidth():設(shè)置空心邊框的寬度
8、getColor():獲取畫筆的顏色
Rect(尺寸)類
設(shè)置畫布大小new Rect(int left, int top, int right, int bottom)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
全面解析Android應(yīng)用開發(fā)中Activity類的用法
這篇文章主要介紹了Android應(yīng)用開發(fā)中Activity類的用法,包括Activity間的數(shù)據(jù)傳遞以及Activity的創(chuàng)建方式等,需要的朋友可以參考下2016-02-02Android實(shí)現(xiàn)完整游戲循環(huán)的方法
這篇文章主要介紹了Android實(shí)現(xiàn)完整游戲循環(huán)的方法,以實(shí)例代碼形式較為詳細(xì)的分析了Android游戲循環(huán)的實(shí)現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-10-10Android仿微信錄音功能(錄音后的raw文件轉(zhuǎn)mp3文件)
這篇文章主要介紹了Android中仿微信錄音功能錄音后的raw文件轉(zhuǎn)mp3文件,本文通過實(shí)例代碼給大家講解的非常詳細(xì),需要的朋友可以參考下2019-11-11Android Studio 3.0后出現(xiàn)AAPT2與“android.enableAapt2”問題的解決方法
這篇文章主要給大家介紹了關(guān)于Android Studio 3.0后出現(xiàn)AAPT2與“android.enableAapt2”問題的解決方法,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07Jenkins打包android應(yīng)用時自動簽名apk詳解
這篇文章主要介紹了Jenkins打包android應(yīng)用時自動簽名apk詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-07-07Android UI控件之ProgressBar進(jìn)度條
這篇文章主要為大家詳細(xì)介紹了Android UI控件之ProgressBar進(jìn)度條的實(shí)現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12android實(shí)現(xiàn)密碼框右側(cè)顯示小眼睛
這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)密碼框右側(cè)顯示小眼睛,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-09-09