自定义可移动view
2015-10-27 18:28
489 查看
import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; public class CustomView extends View { private static final int WIDTH = 40; private Rect rect = new Rect(0, 0, WIDTH, WIDTH);//绘制矩形的区域 private int deltaX,deltaY;//点击位置和图形边界的偏移量 private static Paint paint = new Paint();//画笔 public CustomView(Context context, AttributeSet attrs) { super(context, attrs); paint = new Paint(); paint.setColor(Color.RED);//填充红色 } @Override protected void onDraw(Canvas canvas) { canvas.drawRect(rect, paint);//画矩形 } @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(old);//出于效率考虑,设定脏区域,只进行局部刷新,不是刷新整个view break; } return true;//处理了触摸消息,消息不再传递 } }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories