新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍了Android怎么自定义View圆形和拖动圆实现跟随手指拖动效果的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android怎么自定义View圆形和拖动圆实现跟随手指拖动效果文章都会有所收获,下面我们一起来看看吧。
创新互联服务项目包括朝天网站建设、朝天网站制作、朝天网页制作以及朝天网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,朝天网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到朝天省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!我在第一次自定义View圆遇到的几个Bug:
1.拖动圆的话在xml里面设置的自定义圆的宽和高是它能活动的空间的大小 不是圆控件的大小 如果你定义了100dp 拖动它的时候超过100dp这个距离这个圆就会看不见 就像下面这样 如果想活动于整个屏幕直接给宽和高match_parent
属性就好了
2.我在定义充满属性match_parent
的时候运行会报错,什么方法都用了就是不行,耐心等待过一会就好了…有可能是studio没来得及编译过来
下面开始写代码: 先是单纯的创建一个圆形 创建一个类继承View 实现onDraw方法
public class CustomView extends View { //创建point对象 参数为x坐标和y坐标 private PointF point = new PointF(100, 100); public CustomView(Context context) { super(context); } public CustomView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public CustomView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //参数为圆的横坐标 ,纵坐标,半径,创建 canvas.drawCircle(point.x,point.y, 50, new Paint()); } }
XML里、自己定义的view类的名字:
一个圆就这样创建好了 直接运行就可以了 ManActivity里什么也不用改
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }
下面是添加拖动圆的功能 非常简单 实现触摸监听即可 代码非常少 如下:
public class CustomView extends View { //创建point对象 参数为x坐标和y坐标 private PointF point = new PointF(100, 100); public CustomView(Context context) { super(context); } public CustomView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public CustomView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //参数为圆的横坐标 ,纵坐标,半径,创建 canvas.drawCircle(point.x,point.y, 50, new Paint()); } //触摸事件 @Override public boolean onTouchEvent(MotionEvent event) { //获得触摸事件 switch (event.getAction()) { case MotionEvent.ACTION_DOWN: break; //ACTION_MOVE不要设置break,否则圆形不会跟随手指活动 只会手指松开屏幕的时候圆形直接到了屏幕停止的位置 case MotionEvent.ACTION_MOVE: case MotionEvent.ACTION_UP: //获取手指触摸位置的x坐标 point.x = event.getX(); //获取手指触摸位置的y坐标 point.y = event.getY(); //启动 postInvalidate(); break; } return true; } }
关于“Android怎么自定义View圆形和拖动圆实现跟随手指拖动效果”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Android怎么自定义View圆形和拖动圆实现跟随手指拖动效果”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注创新互联行业资讯频道。