您的位置:首页 > 移动开发 > Android开发

android-自定义view创建概述

2014-07-21 00:15 148 查看
1.创建继承view的类

public class myview extends View{

public myview(Context context, AttributeSet attrs) {  //构造器
super(context, attrs);
// TODO Auto-generated constructor stub
}

protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
canvas.drawColor(Color.BLACK);            //绘制黑色背景
Paint paint=new Paint();                  //创建画笔
paint.setColor(Color.RED);
canvas.drawRect(10,10,110,110, paint);    //画矩形
canvas.drawText("这是字符串", 10, 130, paint);//写字
RectF rf1=new RectF(10,130,110,230);     //定义一个矩形
canvas.drawArc(rf1, 0, 45, true, paint);//画弧,顺时针
canvas.drawLine(150, 10, 250, 110, paint);//画线
RectF rf2=new RectF(150,130,250,230);
canvas.drawOval(rf2, paint);          //画圆

}

}


上述是一个例子。

2.要调用这个myview,需要在layout.xml上调用,如

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<com.example.myview.myview
android:id="@+id/myview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>

</RelativeLayout>


com.example.myview是myview这个类的所在包,xml调用时,记得前面要加上包。

这个是另一个自定义view的例子

package com.example.myview;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;

public class myview_picture extends View{
Bitmap mb;
Paint paint;

public myview_picture(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
this.initBitmap();              //初始化图片
}

public void initBitmap()
{
paint=new Paint();
mb=BitmapFactory.decodeResource(getResources(), R.drawable.indexgundom);
}
@Override
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
paint.setAntiAlias(true);               //打开抗锯齿
paint.setColor(Color.WHITE);            //设置画笔颜色
paint.setTextSize(15);                 //我猜是设置字体大小
canvas.drawBitmap(mb, 10,10, paint);     //画图
canvas.drawText("图片的宽度:"+mb.getWidth(), 20, 220, paint); //写字
canvas.drawText("图片的高度"+mb.getHeight(), 150, 220, paint);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐