編輯:關於Android編程
1.位圖的配置
ALPHA_9:用於作為Alpha蒙版的位圖,只為Alph通道分配8位。沒有其他顏色。
ARGB_4444:為每個顏色通道分配4位,包括Alpha通道。允許表示擁有16個Alpha值的4096種不同顏色。
ARGB_8888:為每個顏色通道分配8位,包括Alpha通道。允許表示擁有256個Alpha值的1670萬種不同的顏色。
RGB_565:5位用於紅色通道,6位用於綠色通道,以及5位用於藍色通道(沒有Alpha通道)允許有65535種不同的顏色。這個設置幾乎與ARGB_8888具有相同的高質量,但占用更少的內存空間。
2.創建Canvas對象
如果想創建一幅位圖對象,並對其進行繪制,那麼我們可以對它創建Canvas對象,例如
[java]
?Bitmap bitmap = Bitmap.createBitmap((int) getWindowManager()
.getDefaultDisplay().getWidth(), (int) getWindowManager()
.getDefaultDisplay().getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
Bitmap bitmap = Bitmap.createBitmap((int) getWindowManager()
.getDefaultDisplay().getWidth(), (int) getWindowManager()
.getDefaultDisplay().getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
3.Paint對象的使用
(1)顏色:可以通過Paint對象上的setColor方法,並傳入一個Color對象。Color類定義了一系列顏色,以32位整數常量表示:
Color.BLACK\Color.BLUE\Color.RED
還可以通過Color.argb靜態方法構造一個特定的顏色,形如:
[java]
int mycolor=Color.argb(255,128,64,32)
int mycolor=Color.argb(255,128,64,32)實際上,還可以直接使用Paint對象的方法setARGB來指定顏色:[java] view plaincopyprint?paint.setARGB(255,128,64,32);
paint.setARGB(255,128,64,32);
(2)樣式:當通過setStyle方法定義Paint對象樣式時,需要明確是否填充繪制的形狀或者僅僅是描畫輪廓。可能的樣式定義為Paint.Style類的常量。
Paint.Style.STROKE:僅繪制形狀的輪廓
Paint.Style.FILL:僅填充形狀
Paint.Style.FILL_AND_STROKE:填充並繪制形狀的輪廓
(3)筆畫的寬度:可以使用Paint對象上的setStrokeWidth方法指定。
4.繪制形狀
(1)點:可以使用Canvas對象的drawPoint方法
(2)直線:可以使用Canvas對象的drawLine方法
(3)矩形:可以使用Canvas獨享的drawRect方法,不過該方法有兩種重載形式,第一種是最簡單的直接傳入矩形的leftx,topy,rightx,bottomy,另一種是通過傳入RectF(RectF類使用浮點值分別表示leftx,topy,rightx,bottomy,以此來定一個矩形)。
[java]
RectF rectangle=new RectF(leftx,topy,rightx,bottomy);
canvas.drawRect(rectangle,paint);
RectF rectangle=new RectF(leftx,topy,rightx,bottomy);
canvas.drawRect(rectangle,paint);
(4)橢圓:與使用RectF對象繪制矩形的方式相同,此時RectF對象定義橢圓的邊界,即在矩形的內部繪制橢圓。
[java]
RectF ovalBounds=new RectF(leftx,topy,rightx,bottomy);
canvas.drawOval(ovalBounds,paint);
RectF ovalBounds=new RectF(leftx,topy,rightx,bottomy);
canvas.drawOval(ovalBounds,paint);
(5)圓:可以使用Canvas對象的drawCircle方法
(6)路徑:路徑是一系列可用來創建任意形狀的直線。為了繪制一個路徑,首先必須構造一個Path對象。Path對象可以調用任意次數,通過使用moveTo告訴它無須繪制而直接移動到某個點,或者使用lineTo繪制一條直線到某個點,等等方法。
[java]
Paint paint=new Paint();
Path p=new Path();
p.moveTo(20,20);//如果不moveTo,則默認在(0,0)處開始繪制
p.lineTo(100,200);
p.lineTo(200,100);
canvas.drawPath(p,paint);
Paint paint=new Paint();
Path p=new Path();
p.moveTo(20,20);//如果不moveTo,則默認在(0,0)處開始繪制
p.lineTo(100,200);
p.lineTo(200,100);
canvas.drawPath(p,paint);5.繪制文本
我們可以通過Canvas對象的drawText方法來繪制文本,同時可以配合Paint類的setTextSize來設置文本大小。
(1)內置字體:Paint類提供了setTypeface方法並傳入一個Typeface對象來指定應該使用哪種字體。
Typeface類定義了許多常量來表示Android系統中附帶的字體,例如:Typeface.MONOSPACE\Typeface.SANS_SERIF\Typeface.SERIF\Typeface.DEFAULT\Typeface.DEFAULT_BOLD。
[java]
paint.setTypeface(Typeface.DEFAULT_BOLD);
paint.setTypeface(Typeface.DEFAULT_BOLD);
(2)字體樣式:與內置字體一起,Typeface類還定義了一系列的樣式常量。通過Typeface中的create方法可以將這些樣式應用於修改某個內置字體。這個方法的返回值是一個新的Typeface對象。Typeface中的樣式列表:
Typeface.BOLD\Typeface.ITALIC\Typeface.NORMAL\Typeface.BOLD_ITALIC
Typeface serif_italic=Typeface.create(Typeface.SERIF,Typeface.ITALIC);
paint.setTypeface(serif_italic);
(3)外部字體:Android應用程序不限定只能使用內置字體。其支持從任何TrueType字體文件創建Typeface對象。TrueType字體是一種標准字體,並且可以在各種平台上使用。
一個與Android內置字體完全不同的字體是由Claude Pelletier創建的Chopin Script字體。它面向公共領域,可以通過各種來源免費下載,如fontspace.com等等。
為了使用該字體,可以下載它並將.ttf文件放入到項目中的asset文件夾中。Typeface.createFromAsset方法接受一個AssetManager對象以及文件的名稱作為參數,其中AssetManager對象可以通過從Context調用getAssets獲得。該方法返回一個Typeface對象,可以將它傳遞給paint.setTypeface方法。
[java]
Typeface chops=Typeface.createFromAsset(getAssets(),"ChopinScript.ttf");
paint.setTypeface(chops);
Typeface chops=Typeface.createFromAsset(getAssets(),"ChopinScript.ttf");
paint.setTypeface(chops);(4)路徑上的文本:使用的Canvas對象的drawTextOnPath方法
本文實例講述了Android控件之Gallery用法。分享給大家供大家參考。具體如下:Gallery組件主要用於橫向顯示圖像列表,不過按常規做法。Gallery組件只能有
PraiseTextView說明我是將朋友圈分成了幾個獨立模塊單獨自定義的View,通過回調完成交互,耦合性算是非常低了,主要有以下及部分:1.評論布局(自定義TextV
項目地址:XBanner簡介:功能強大的圖片無限自動輪播控件,可支持自定義狀態點及指示器顯示位置等功能支持圖片無限輪播的控件,可進行自定義功能。主要功能:支持根據服務端返
博主在剛剛在學習過程中發現了一個關於android往sdcard讀寫的問題, 配置了該配置的提示無讀寫權限。 在AndroidManifest.xml文件中配置清單如下