Android 中View.onDraw(Canvas canvas)的使用方法
Android 中View.onDraw(Canvas canvas)的使用方法
View通過(guò)View.onDraw(Canvas canvas)來(lái)Draw.
我們可以定義自己的繼承于View的TestView,然后重載View.onDraw(Canvas canvas).
對(duì)于自定義的TestView如何與Activity關(guān)聯(lián)?有以下兩種方式:
- 直接在setContentView(View view)里面加進(jìn)去自定義的View:setContentView(new TestView(this)).
- 另外,可以在layout文件里面可以使用自定義的View(如何自定義的View為內(nèi)部類(lèi),就會(huì)失效),
如:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<com.android.test.TestView
android:id="@+id/testview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</FrameLayout>
以下為使用onDraw(Canvas canvas)畫(huà)矩形區(qū)域,及在其上畫(huà)文本的實(shí)例(通過(guò)使用內(nèi)部類(lèi)使程序顯得更加簡(jiǎn)潔,緊湊):
package com.android.test;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.View;
public class TestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new TestView(this));
}
public class TestView extends View {
private Paint mPaint = new Paint();
public TestView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
String text = "Android - 機(jī)器人";
mPaint.setColor(Color.WHITE);
Paint paint = new Paint();
paint.setColor(Color.RED);
String familyName = "宋體";
Typeface font = Typeface.create(familyName,Typeface.BOLD);
paint.setTypeface(font);
paint.setTextSize(22);
canvas.drawRect(new Rect(0, 0, 320, 240), mPaint);
canvas.drawText(text, 0, 100, paint);
}
}
}
運(yùn)行效果如下圖:

如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
Android實(shí)現(xiàn)TCP斷點(diǎn)上傳 后臺(tái)C#服務(wù)接收
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)TCP斷點(diǎn)上傳,后臺(tái)C#服務(wù)實(shí)現(xiàn)接收,感興趣的小伙伴們可以參考一下2016-08-08
Android 中CheckBox的isChecked的使用實(shí)例詳解
這篇文章主要介紹了Android 中CheckBox的isChecked的使用實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-04-04
Android編程實(shí)現(xiàn)AlertDialog自定義彈出對(duì)話框的方法示例
這篇文章主要介紹了Android編程實(shí)現(xiàn)AlertDialog自定義彈出對(duì)話框的方法,結(jié)合實(shí)例形式分析了Android AlertDialog自定義彈出對(duì)話框的基本功能與事件監(jiān)聽(tīng)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-07-07
Android手勢(shì)操作簡(jiǎn)單實(shí)例講解
這篇文章主要為大家詳細(xì)介紹了Android手勢(shì)操作簡(jiǎn)單實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
Android中WebView圖片實(shí)現(xiàn)自適應(yīng)的方法
這篇文章主要介紹了Android中WebView圖片實(shí)現(xiàn)自適應(yīng)的方法,涉及Android操作圖片顯示的相關(guān)技巧,需要的朋友可以參考下2015-05-05
深入學(xué)習(xí)Kotlin?枚舉的簡(jiǎn)潔又高效進(jìn)階用法
這篇文章主要為大家介紹了深入學(xué)習(xí)Kotlin?枚舉簡(jiǎn)潔又高效的進(jìn)階用法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
FFmpeg?Principle學(xué)習(xí)new_video_stream添加視頻輸出流
這篇文章主要為大家介紹了FFmpeg?Principle學(xué)習(xí)new_video_stream添加視頻輸出流示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
Android使用TabLayou+fragment+viewpager實(shí)現(xiàn)滑動(dòng)切換頁(yè)面效果
這篇文章主要介紹了Android使用TabLayou+fragment+viewpager實(shí)現(xiàn)滑動(dòng)切換頁(yè)面效果,需要的朋友可以參考下2017-05-05

