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

android!自定义view的使用

2016-04-08 15:15 435 查看
首先要自定义一个类,继承View:

package com.example.fontshow;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;

/**
* Created by Rabbit.
*/
public class PaintView extends View{
// 类属性,类方法
private Bitmap bitmap;
private Canvas canvas;
private Path path;
private Paint paint;

int num = 24;
int [][] paintData = new int[num][num];

float eachW;
float eachH;
public void clearCanvas(){
for (int i=0;i<num;i++){
for (int j=0;j<num;j++){
paintData[i][j]=0;
}
}
invalidate();
}
// 构造函数
public PaintView(Context context,AttributeSet attrs) {
super(context,attrs);

paint=new Paint();//设置一个笔
paint.setAntiAlias(true);//设置没有锯齿
paint.setColor(Color.BLACK);//设置笔的颜色
paint.setStyle(Paint.Style.FILL);//设置填满
// 触摸监听
this.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getAction();
switch (action) {
// 当触摸的时候
case (MotionEvent.ACTION_MOVE):
float x=event.getX();
float y=event.getY();
float w=v.getWidth();
float h=v.getHeight();
eachW = w/num;
eachH = h/num;
int numw = (int)Math.floor(x/eachW);
int numh = (int)Math.floor(y/eachH);
paintData[numw][numh] = 1;
// 此方法会触发onDraw函数执行
invalidate();
break;
default:
break;
}
return true;
}
});
}
@Override
// 重写该方法,进行绘图
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// 重绘画板
canvas.drawColor(Color.rgb(230,230,250));
for (int i=0;i<num;i++){
for (int j=0;j<num;j++){
if (paintData[i][j]==1){
//System.out.println(i+"~~~"+j);
Rect r1=new Rect();
r1.left=i*(int)eachW;
r1.top=j*(int)eachH;
r1.right=(i+1)*(int)eachW;
r1.bottom=(j+1)*(int)eachH;
canvas.drawRect(r1,paint);
}
}
}
}
}


layout文件应该这样写:

<com.example.fontshow.PaintView
android:id="@+id/paintView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_alignParentBottom="true"
android:layout_below="@+id/button_second"
android:layout_alignParentStart="true"
android:layout_alignEnd="@+id/listView"/>


mainActivity中:

paintView = (PaintView)findViewById(R.id.paintView);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android View