編輯:關於Android編程
上文說道了Android如何測量,但是一個漂亮的控件我只知道您長到哪兒,這當然不行。只需要簡單重寫OnDraw方法,並在Canvas(畫布)對象上調用那根五顏六色的畫筆就能夠畫出這控件"性感"的外表。那麼View又是如何進行繪制了?
要了解View如何繪制,就需要了解canvas(畫布)是什麼?paint(畫筆)能夠做什麼。
Ⅰ、canvas就是表示一塊畫布,你可以在上面畫你所朝思暮想的東西。當我們重寫onDraw方法的時候,就能夠拿到一個Canvas對象,這個就是你的舞台,畫你所思所想。上代碼了。
@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); }
當您需要對某某控件進行進行重新繪制的時候,我們只需要在這個大舞台(Canvas)調用Canvas.DrawXXX方法畫出各種各樣的圖形。
Ⅱ、paint就是畫布上揮灑自如的畫筆。要畫圖,得調整畫筆,待畫筆調整好之後,再將圖像繪制到畫布上,這樣才可以顯示在手機屏幕上。Paint上提供許多屬性和方法用來設置畫筆。
1、setAntiAlias: 設置畫筆的鋸齒效果。
2、setColor: 設置畫筆顏色
3、setARGB: 設置畫筆的a,r,p,g值。
4、setAlpha: 設置Alpha值
5、setTextSize: 設置字體尺寸。
6、setStyle: 設置畫筆風格,空心或者實心。
7、setStrokeWidth: 設置空心的邊框寬度。
8、getColor: 得到畫筆的顏色
9、getAlpha: 得到畫筆的Alpha值。
我們既然知道了畫筆與畫布,通過一個短小精悍的例子來看畫布和畫筆怎麼共同作用出一個想要的圖形。老樣子,上代碼:
public class MyView extends View { private Paint paint; public MyView(Context context, AttributeSet attrs) { super(context, attrs); init(); } private void init() { paint=new Paint(Paint.ANTI_ALIAS_FLAG); paint.setColor(Color.RED); paint.setStrokeWidth(5); paint.setTextSize(28); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { setMeasuredDimension(measureWidth(widthMeasureSpec), measureWidth(heightMeasureSpec)); } public int measureWidth(int measureSpec) { int result = 0; int specMode = MeasureSpec.getMode(measureSpec); int specSize = MeasureSpec.getSize(measureSpec); if (specMode == MeasureSpec.EXACTLY) { result = specSize; } else { result = 200; if (specMode == MeasureSpec.AT_MOST) { result = Math.min(specSize, result); } } return result; } @Override protected void onDraw(Canvas canvas) { canvas.drawText("中國", 0, 80, paint); super.onDraw(canvas); } }
上述代碼,我們做了這麼幾件事了:
Ⅰ、我們運用上篇文章的知識,重寫了onMeasure方法,讓這個簡單自定義控件自適應wrap_content屬性。
Ⅱ、我們調用了OnDraw方法,拿到Canvas與paint,在view上寫了"中國"文字。
最終運行效果為:
這就是我對Android View 如何繪制一點灼見,希望大家多提建議。
微信右上角的操作菜單看起來很好用,就照著仿了一下,不過是舊版微信的,手裡剛好有一些舊版微信的資源圖標,給大家分享一下。不知道微信是用什麼實現的,我使用popupwindo
前言很久沒寫BLOG了,之前在寫Android聊天室的時候答應過要寫一個客戶(好友)之間的聊天demo,Android 基於Socket的聊天室已經實現了通過Socket
今天碰到一個關於Button的問題:android Button上面的英文字符串會自動變成大寫,運行的Android 5.1版本,如下圖所示:圖1:Button圖2:Te
軟鍵盤用法在android開發中,軟鍵盤是一個比較常用的了。總結下來,再也不用去網上搜資料了。1、軟鍵盤原理在android中,軟鍵盤原理上是一個dialog,Input