bbbzhuzhu 2011-05-06
大家都知道在我们要显示一个自己定义的View有2中方法,第一种:是直接new一个我们的View对象并且setContentView(myView);假如我们自己定义的View对象叫myView其实我们在Activity里边就2行代码就搞定了
MyViewmyView=newMyView(this);
setContentView(myView);
第二种方式就是把它放到我们的布局文件中,例如这样
<eoe.demo.MyView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
其中eoe.demo是我们的包名。用这种方式必须在我们自定义的View类也就是MyView里边加上这样个构造方法
Java代码:
publicMyView(Contextcontext,AttributeSetattributeSet){
super(context,attributeSet);
}
packageeoe.demo;
importandroid.app.Activity;
importandroid.os.Bundle;
publicclasstestActivityextendsActivity{
privatetestViewmTestview;
/**Calledwhentheactivityisfirstcreated.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTestview=(testView)findViewById(R.id.testView);
mTestview.initBitmap(320,240,0xcccccc);
}
}
<?xmlversion="1.0"encoding="utf-8"?>
<FrameLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<testView
android:id="@+id/testView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tileSize="12"/>
</FrameLayout>
testView类这个类就是我们自己定义的View类了这里我们把它放在布局文件中加载进来
packageeoe.demo;
importandroid.content.Context;
importandroid.graphics.Bitmap;
importandroid.graphics.Canvas;
importandroid.graphics.Color;
importandroid.graphics.Matrix;
importandroid.graphics.Paint;
importandroid.graphics.Typeface;
importandroid.graphics.Bitmap.Config;
importandroid.util.AttributeSet;
importandroid.view.View;
publicclasstestViewextendsView{
privateBitmapmbmpTest=null;
privatefinalPaintmPaint=newPaint();
privatefinalStringmstrtitle="感受Android带给我们的新体验";
publictestView(Contextcontext,AttributeSetattrs,intdefStyle){
super(context,attrs,defStyle);
mPaint.setColor(Color.GREEN);
}
publictestView(Contextcontext,AttributeSetattrs){
super(context,attrs);
mPaint.setColor(Color.GREEN);
}
publicbooleaninitBitmap(intw,inth,intc){
//返回具有指定宽度和高度可变的位图,它的初始密度可以调用getDensity()
mbmpTest=Bitmap.createBitmap(w,h,Config.ARGB_8888);
//把一个具有指定的位图绘制到画布上。位图必须是可变的。
//在画布最初的目标密度是与给定的位图的密度相同,返回一个具有指定位图的画布
Canvascanvas=newCanvas(mbmpTest);
//设置画布的颜色
canvas.drawColor(Color.WHITE);
Paintp=newPaint();
Stringfamilyname="宋体";
Typefacefont=Typeface.create(familyName,Typeface.BOLD);
p.setColor(Color.RED);
p.setTypeface(font);
p.setTextSize(22);
//0,100指定文字的起始位置
canvas.drawText(mstrTitle,0,100,p);
returntrue;
}
@Override
publicvoidonDraw(Canvascanvas){
super.onDraw(canvas);
if(mbmpTest!=null){
Matrixmatrix=newMatrix();
//matrix.postScale(0.5f,0.5f);
//以120,120这个点位圆心旋转90度
//matrix.setRotate(90,120,120);
//使用指定的矩阵绘制位图
canvas.drawBitmap(mbmpTest,matrix,mPaint);
}
}
}