自定义拖动圆
来源:互联网 发布:二式大艇数据 编辑:程序博客网 时间:2024/05/16 11:56
//自定义的View
public class MyView extends View { private static final int WIDTH = 90; private Rect rect = new Rect(0, 0, WIDTH, WIDTH);// 绘制矩形的区域 private int deltaX, deltaY;// 点击位置和图形边界的偏移量 private int moveX, moveY; private static Paint paint = new Paint();// 画笔 public MyView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub paint = new Paint(); paint.setColor(Color.RED);// 填充红色 paint.setAntiAlias(true); } @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub //super.onDraw(canvas); canvas.drawCircle(rect.centerX(), rect.centerY(), WIDTH/2, paint); // canvas.drawText("画圆:", 10, 20, p);// 画文本 //canvas.drawCircle(60, 20, 90, p);// 小圆 // p.setAntiAlias(true);// 设置画笔的锯齿效果。 true是去除,大家一看效果就明白了 // canvas.drawCircle(120, 20, 20, p);// 大圆 //// canvas.drawText("画矩形:", 10, 80, p);// p.setColor(Color.GRAY);// 设置灰色 // p.setStyle(Paint.Style.FILL);//设置填满 // canvas.drawRect(60, 60, 80, 80, p);// 正方形 // canvas.drawRect(60, 90, 160, 100, p);// 长方形//// canvas.drawText("画三角形:", 10, 200, p);// // 绘制这个三角形,你可以绘制任意多边形 // // Path path = new Path();// path.moveTo(80, 200);// 此点为多边形的起点 // path.lineTo(120, 250);// path.lineTo(80, 250);// path.close(); // 使这些点构成封闭的多边形 // canvas.drawPath(path, p);//// //画圆角矩形// p.setStyle(Paint.Style.FILL);//充满 // p.setColor(Color.LTGRAY);// p.setAntiAlias(true);// 设置画笔的锯齿效// canvas.drawText("画圆角矩形:", 10, 260, p);// RectF oval3 = new RectF(80, 260, 200, 300);// 设置个新的长方形 // canvas.drawRoundRect(oval3, 20, 15, p);//第二个参数是x半径,第三个参数是y半径 } @Override public boolean onTouchEvent(MotionEvent event) { int x = (int) event.getX(); int y = (int) event.getY(); switch(event.getAction()) { case MotionEvent.ACTION_DOWN: if(!rect.contains(x, y)) { return false;//没有在矩形上点击,不处理触摸消息 } deltaX = x -rect.left; deltaY = y -rect.top; break; case MotionEvent.ACTION_MOVE: case MotionEvent.ACTION_UP: Rect old = new Rect(rect); //更新矩形的位置 rect.left = x - deltaX; rect.top = y - deltaY; rect.right = rect.left + WIDTH; rect.bottom = rect.top + WIDTH; old.union(rect);//要刷新的区域,求新矩形区域与旧矩形区域的并集 invalidate();//出于效率考虑,设定脏区域,只进行局部刷新,不是刷新整个view break; } return true;//处理了触摸消息,消息不再传递 }}
0 0
- 自定义拖动圆
- 自定义View 鼠标拖动圆
- 自定义view画圆拖动
- 安卓中自定义View圆形和拖动圆、跟随手指拖动
- 自定义View控件画圆,拖动圆
- 自定义View绘制圆,可拖动
- 初学自定义view(可拖动圆)
- 自定义View画圆及拖动
- 自定义控件的拖动
- 自定义控件的拖动
- 自定义控件的拖动
- 简单自定义拖动条
- 自定义view,可拖动
- 自定义可拖动TextView
- 自定义可拖动土司
- 自定义土司随意拖动
- 自定义拖动小球
- 可拖动自定义view
- Centos 7 双系统 引导修复
- 使用JavaMail API发送邮件失败(二)
- Notification通知的使用
- centOS 6.4 升级python 2.6.6 to 2.7.3
- Android LayoutInflater原理分析,带你一步步深入了解View(一)
- 自定义拖动圆
- ExecutorService 的理解与使用
- poj 1258 (kruskal)
- prototype 属性使您有能力向对象添加属性和方法 三
- javascript实现 DOM BOM
- 2016-09-23 18:45:10,950 Stage-6 map = 60%, reduce = 0%, Cumulative CPU 1740.12 sec
- Codeforces 651B Beautiful Paintings
- Retrofit如何提交json数据
- JavaScript面向对象编程之继承