自定义View绘制圆,可拖动
来源:互联网 发布:唐璜歌剧经典曲目知乎 编辑:程序博客网 时间:2024/05/16 14:00
### 新建类CustomView 继承View
### main布局
<com.example.myapplication_view.CustomView android:layout_width="wrap_content" android:layout_height="wrap_content" />
### MainActivity
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //一个参数的构造方法调用// CustomView view = new CustomView(this);// setContentView(view); setContentView(R.layout.activity_main);//两个参数的构造方法调用 }}
### CustomView类
public class CustomView 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 CustomView(Context context) { super(context); paint = new Paint(); paint.setColor(Color.BLUE);//填充蓝色 paint.setAntiAlias(true); } public CustomView(Context context, AttributeSet attrs) { super(context, attrs); paint = new Paint(); paint.setColor(Color.RED);//填充红色 paint.setAntiAlias(true); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawCircle(rect.centerX(),rect.centerY(),WIDTH/2, paint);//画矩形 } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); } @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;//处理了触摸消息,消息不再传递 }}
0 0
- 自定义View绘制圆,可拖动
- 自定义view,可拖动
- 可拖动自定义view
- 初学自定义view(可拖动圆)
- 自定义VIEW,可拖动的控件
- Android开发 自定义悬浮可拖动view
- 自定义View 鼠标拖动圆
- 自定义view画圆拖动
- 自定义View,绘制一个圆形,并可以单击拖动
- android 自定义View开发实战(六) 可拖动的GridView
- 自定义view绘制空心圆
- 自定义可拖动TextView
- 自定义可拖动土司
- 自定义View控件画圆,拖动圆
- 自定义View画圆及拖动
- 安卓中自定义View圆形和拖动圆、跟随手指拖动
- 自定义拖动View
- 拖动自定义View
- JavaScript 资源大全中文版
- C++ 之结构体对齐
- C语言实现任意进制的转换,主要注意代码的小技巧
- 建议64:为循环增加Tester-Doer模式而不是将try-catch置于循环内 如果需要在循环中引发异常,你需要特别注意,应为抛出异常是一个相当影响性能的过程。应该尽量在循环当中对异常发生的一
- 表的join操作:left、right、outer、inner
- 自定义View绘制圆,可拖动
- C# 多线程编程以及常用方法
- C语言-数据类型在LR中的应用
- jdk API实现日志功能
- highcharts 去掉版权|去掉水印(右下角)
- Java中返回的对象无法再jsp页面中循环遍历到标签上
- Yara规则编写
- CSS的盒子模型
- 二分查找法 (折半法)