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)騰訊新聞的新聞?lì)悇e導(dǎo)航效果
這篇文章主要介紹了Android實(shí)現(xiàn)騰訊新聞的新聞?lì)悇e導(dǎo)航效果,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-03-03
Android?14新功能HighLights快速實(shí)現(xiàn)文本高亮
這篇文章主要為大家介紹了Android?14新功能HighLights快速實(shí)現(xiàn)文本高亮示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
分析Android App中內(nèi)置換膚功能的實(shí)現(xiàn)方式
這篇文章主要介紹了Android App中內(nèi)置換膚功能的實(shí)現(xiàn)方式,文中舉了一個(gè)類(lèi)似QQ空間中換膚方式的例子作為說(shuō)明,需要的朋友可以參考下2016-02-02
android實(shí)現(xiàn)簡(jiǎn)單的矩形裁剪框
這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)簡(jiǎn)單的矩形裁剪框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05
Android圓形頭像拍照后“無(wú)法加載此圖片”的問(wèn)題解決方法(適配Android7.0)
這篇文章主要介紹了Android圓形頭像拍照后“無(wú)法加載此圖片”的問(wèn)題解決方法(適配Android7.0) ,需要的朋友可以參考下2017-10-10
Android編程設(shè)計(jì)模式之狀態(tài)模式詳解
這篇文章主要介紹了Android編程設(shè)計(jì)模式之狀態(tài)模式,結(jié)合實(shí)例形式詳細(xì)分析了Android狀態(tài)模式的概念、功能、使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-12-12
Android開(kāi)啟新線(xiàn)程播放背景音樂(lè)
這篇文章主要為大家詳細(xì)介紹了Android開(kāi)啟新線(xiàn)程播放背景音樂(lè),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12
Android應(yīng)用退出登錄的實(shí)現(xiàn)方法
每一個(gè)app都會(huì)有一個(gè)”退出登陸”的功能,當(dāng)點(diǎn)擊退出之后需要將所有的Activity都finish掉,開(kāi)始是想將棧中的所有Activity清除掉,但是沒(méi)有找到方法,后來(lái)用廣播實(shí)現(xiàn)了。下面小編給大家分享android應(yīng)用退出登錄的實(shí)現(xiàn)方法,需要的朋友參考下2017-04-04

