自定义view画圆拖动
来源:互联网 发布:岛精程序员制版招聘 编辑:程序博客网 时间:2024/06/05 07:26
package com.example.testdemo;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.support.annotation.Nullable;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;import android.widget.Toast;/** * Created by hasee on 2017/8/3. */public class MyCircleView extends View { //画笔 private Paint mPaint; //圆的半径 private float mRadius = 50f; //圆的圆心的x坐标 private float pointX = mRadius; //圆的圆心的Y坐标 private float pointY = mRadius; //控制是否可以移动的变量 true的时候可以移动 private boolean moveable; public MyCircleView(Context context) { this(context, null); } //自定义veiw在布局中使用,必须实现的一个构造器 public MyCircleView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); //构造一个paint mPaint = new Paint(); mPaint.setColor(Color.CYAN); mPaint.setAntiAlias(true); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //根据圆心的坐标来绘制圆的位置的,而圆心的坐标,我们触摸屏幕的时候被我们修改了 canvas.drawCircle(pointX, pointY, mRadius, mPaint); } //要单点拖动,保证手指在圆上的时候才移动,我们需要判断触摸的位置 @Override public boolean onTouchEvent(MotionEvent event) { //手指触摸的x坐标 float touchX; //手指触摸的y坐标 float touchY; //event.getAction()判断事件的类型 switch (event.getAction()) { //按下的事件 case MotionEvent.ACTION_DOWN: touchX = event.getX(); touchY = event.getY(); if (touchX > pointX - mRadius && touchX < pointX + mRadius && touchY > pointY - mRadius && touchY < pointY + mRadius) { moveable = true; Toast.makeText(getContext(), "我按下了", Toast.LENGTH_LONG).show(); } else { moveable = false; } break; //移动的事件 case MotionEvent.ACTION_MOVE: if (moveable) { //重新设置一下圆心的位置, 把我们圆心的位置(pointX,pointY)设置成 // 当前触摸的位置(event.getX(),event.getY()) pointX = event.getX(); pointY = event.getY(); //去重新绘制, 会重新走onDraw()方法 invalidate(); } break; //抬起的事件 case MotionEvent.ACTION_UP: break; } return true; }}
activity_main
<com.example.testdemo.MyCircleView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerHorizontal="true"></com.example.testdemo.MyCircleView>
阅读全文
1 0
- 自定义view画圆拖动
- 自定义View控件画圆,拖动圆
- 自定义View画圆及拖动
- 自定义View 鼠标拖动圆
- 自定义view 画一个圆 实现单点拖动
- 自定义view画一个圆点击可以拖动
- 自定义View绘制圆,可拖动
- 初学自定义view(可拖动圆)
- 安卓中自定义View圆形和拖动圆、跟随手指拖动
- 自定义view,可拖动
- 可拖动自定义view
- 自定义拖动View
- 拖动自定义View
- 自定义view实现单点拖动
- 自定义view画圆 单点拖动
- 自定义View画圆,实现鼠标拖动画的圆跟着动
- 自定义view画圆,并且圆可以随意拖动
- 自定义View之圆形拖动DEMO
- 八皇后问题——用Python解决
- Maven 的构建之 pom文件一些属性分析
- POJ 2418 Hardwood Species 经典字典树 统计单词出现次数
- 【ZZULIOJ 】 几道水题
- java大神潜在的十个特征
- 自定义view画圆拖动
- LeetCode 148. Sort List--O(nlogn)时间复杂度和常数空间复杂度给链表排序
- C# 绘制饼图
- 【ZZULIOJ 1302】海军节上的鸣炮声计算 【容斥】
- leetcode:same tree
- request.setCharacterEncoding("UTF-8")的作用
- 机器学习 博文传送门
- TCP和UDP的区别和优缺点
- 653. Two Sum IV