Android自定义View基础绘制
来源:互联网 发布:淘宝登录拖动滑块验证 编辑:程序博客网 时间:2024/05/21 17:36
1、onMeasure测量(计算宽高)
2、ViewGroup进行onLayout(基于位置和宽高布置到屏幕)
3、onDraw视图显示自身内容(渲染)
#### Canvas
画布,可以提供视图显示的载体,可以绘制文本、几何图形、图像、填充颜色
#### Paint
画笔,针对画布需要绘制的内容的修饰
//创建画笔
paint = new Paint();
//设置画笔颜色
paint.setColor(0xff333333);
//设置样式,STROKE表示空心,FILL表示实心
paint.setStyle(Paint.Style.STROKE);
//空心可以设置边框宽度
paint.setStrokeWidth(2);
//消除锯齿
paint.setAntiAlias(true);
//画笔大小
paint.setTextSize(60);
//设置透明
paint.setAlpha(0x88);
paint.setTextScaleX(3);拉伸或者收缩文本
paint.setFakeBoldText(true); 加粗
使用画笔
protected void onDraw(Canvas canvas) {
...
//画矩形
canvas.drawRect(5,10,105,90,paint);
}
#### 视图刷新
主线程中刷新:使用invalidate()
子线程刷新:mView.postInvalidate(); 相当于Handler+Thread
#### onTouchEvent
View中的onTouchEvent方法表示事件消耗的方法,如果需要对视图进行触摸的处理,则可以重写该方法
@Override
public boolean onTouchEvent(MotionEvent event) {
//获取触摸行为
int action = event.getAction();
int x = (int) event.getX();
int y = (int) event.getY();
switch (action){
case MotionEvent.ACTION_DOWN:
Log.e("m_tag","action down:"+x+" "+y);
break;
case MotionEvent.ACTION_MOVE:
//触控点在View上的过程
Log.e("m_tag","action move:"+x+" "+y);
break;
case MotionEvent.ACTION_UP:
Log.e("m_tag","action up:"+x+" "+y);
break;
}
return true;
}
2、ViewGroup进行onLayout(基于位置和宽高布置到屏幕)
3、onDraw视图显示自身内容(渲染)
#### Canvas
画布,可以提供视图显示的载体,可以绘制文本、几何图形、图像、填充颜色
#### Paint
画笔,针对画布需要绘制的内容的修饰
//创建画笔
paint = new Paint();
//设置画笔颜色
paint.setColor(0xff333333);
//设置样式,STROKE表示空心,FILL表示实心
paint.setStyle(Paint.Style.STROKE);
//空心可以设置边框宽度
paint.setStrokeWidth(2);
//消除锯齿
paint.setAntiAlias(true);
//画笔大小
paint.setTextSize(60);
//设置透明
paint.setAlpha(0x88);
paint.setTextScaleX(3);拉伸或者收缩文本
paint.setFakeBoldText(true); 加粗
使用画笔
protected void onDraw(Canvas canvas) {
...
//画矩形
canvas.drawRect(5,10,105,90,paint);
}
#### 视图刷新
主线程中刷新:使用invalidate()
子线程刷新:mView.postInvalidate(); 相当于Handler+Thread
#### onTouchEvent
View中的onTouchEvent方法表示事件消耗的方法,如果需要对视图进行触摸的处理,则可以重写该方法
@Override
public boolean onTouchEvent(MotionEvent event) {
//获取触摸行为
int action = event.getAction();
int x = (int) event.getX();
int y = (int) event.getY();
switch (action){
case MotionEvent.ACTION_DOWN:
Log.e("m_tag","action down:"+x+" "+y);
break;
case MotionEvent.ACTION_MOVE:
//触控点在View上的过程
Log.e("m_tag","action move:"+x+" "+y);
break;
case MotionEvent.ACTION_UP:
Log.e("m_tag","action up:"+x+" "+y);
break;
}
return true;
}
阅读全文
0 0
- Android自定义View基础绘制
- Android 自定义View基础-View的绘制
- Android自定义View之绘制基础
- 自定义View绘制基础
- Android 开发进阶: 自定义 View 1-1 绘制基础
- Android 开发进阶: 自定义 View 1-1 绘制基础
- android自定义View学习1——绘制基础
- Android自定义View --- 绘制圆环
- android自定义View绘制字符串
- android自定义View绘制几何图形
- Android自定义View绘制闹钟
- Android自定义View的绘制
- android 自定义View绘制计时器
- android自定义View绘制几何图形
- android自定义View绘制几何图形
- android--自定义view的绘制
- Android自定义View绘制几何图形
- android自定义View绘制几何图形
- git
- Android-检测手机多点触摸点数
- JavaScript时间处理插件
- "Java之所以能跨平台,本质原因在于jvm不是跨平台的"如何理解?
- opencv学习笔记--图像金字塔
- Android自定义View基础绘制
- Android Studio gradle build过慢解决
- 浅显易懂的Git教程
- vue2(webpack)调用amap高德地图及其UI组件
- Linux框架学习(keep update)
- git问题与push流程
- CTF writeup:开发者工具
- Android-检测手机多点触摸点数
- 北京大学可视化发展前沿研究生暑期学校Day1