自定义View
自定义 View
2023-09-14 08:59:11 时间
* 继承View,重写画布和画笔
/**
* Created by Administrator on 2016/4/21.
* 1:画笔
* 2:画布
*/
public class MyView extends View {
private Paint paint;//画笔
//用java代码直接创建时调用
public MyView(Context context) {
super(context);
init();
}
//在xml文件中使用,会调用这个构造方法。AttributeSet;表示布局中设置的属性集合。
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
//初始化工作。
paint = new Paint();
//设置画笔的一些属性。
paint.setColor(Color.parseColor("#ff0000"));//设置颜色
paint.setAntiAlias(true);//去掉锯齿
paint.setStyle(Paint.Style.FILL);//设置样式:填充还是描边等等。
}
/*
自定义view 执行方法的流程
1;先要计算自己的大小。 ------onMeasure
2:需要在父容器里面去定位。------onLayout
3:开始描绘。------onDraw
*/
//测量自己的大小
/*
MeasureSpec ---包含大小和模式的对象
widthMeasureSpec ---包含宽度的大小和模式
heightMeasureSpec ---包含高度的大小和模式
*/
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
Log.i("View","onMeasure");
}
//定位。一般的情况下,如果是view,一般都不会重写这个方法。ViewGroup就会重写这个方法。
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
Log.i("View", "onLayout");
}
//描画内容
//Canvas----画布
private int x,y;
@Override
protected void onDraw(Canvas canvas) {
//画东西。
canvas.drawCircle(x,y,40,paint);
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher),40,60,paint);
canvas.drawText("我很好",100,100,paint);
}
//按钮按下重绘画布
@Override
public boolean onTouchEvent(MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_DOWN){
x = (int) event.getX();
y = (int) event.getY();
invalidate();
}
return super.onTouchEvent(event);
}
}
相关文章
- Typecho教程 - 获取模板自定义字段值
- 带你造轮子,自定义一个随意拖拽可吸边的View
- 【说站】python自定义异常的介绍
- JMeter 扩展开发:自定义 Java Sampler
- Android艺术开发探索学习 之 测量view的宽高 以及 动态设置View的位置
- 自定义View实战(一) 汽车速度仪表盘
- 自定义View实战(二)QQ健康水滴形加载
- 微系列:1、Ocelot 增加自定义Header到下游
- 【C/自定义类型详解】——结构体(struct)、位段、枚举(enum)、联合(union)
- 自定义 WordPress 评论表单和功能实现
- Android ImageView、TextureView、自定义View显示图片详解手机开发
- 如何在表维护视图(maintenance view)上添加自定义按钮(SM30)详解编程语言
- 掌握Linux之道:深入学习View命令(linux命令view)
- 深入浅出Linux的View命令(linux之view命令)
- MySQL自定义排序实现最佳结果(mysql 自定义排序)
- 主动学习在Oracle中建立自定义函数(oracle中建函数)
- android自定义进度条渐变色View的实例代码