这篇文章主要介绍Android如何实现自定义View圆形和拖动圆跟随手指拖动,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
创新互联公司:从2013年成立为各行业开拓出企业自己的“网站建设”服务,为上1000+公司企业提供了专业的网站设计、做网站、网页设计和网站推广服务, 按需求定制制作由设计师亲自精心设计,设计的效果完全按照客户的要求,并适当的提出合理的建议,拥有的视觉效果,策划师分析客户的同行竞争对手,根据客户的实际情况给出合理的网站构架,制作客户同行业具有领先地位的。单纯的自定义一个圆非常简单 只需要几步就完成 拖动圆添加实现触摸事件即可
我在第一次自定义View圆遇到的小问题:
1.拖动圆的话在xml里面设置的自定义圆的宽和高是它能活动的空间的大小 不是圆控件的大小 如果你定义了100dp 拖动它的时候超过100dp这个距离这个圆就会看不见 就像下面这样 如果想活动于整个屏幕直接给宽和高match_parent属性就好了
2.在布局里自定的view会提示编译 点击Build编译一下就好了
下面开始写代码: 先是单纯的创建一个圆形 创建一个类继承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); //参数为圆的横坐标 ,纵坐标,半径,创建 //如果圆形出不来 说明你xml里定义的宽和高的空间不够大 这里是圆在屏幕的坐标位置 xml定义的是圆能够显示的区域 如果你定义的太小 圆的坐标又超过了这个区域 就会显示不出来 xml里定义宽和高充满屏幕就可以了 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); //参数为圆的横坐标 ,纵坐标,半径,创建 //如果圆形出不来 说明你xml里定义的宽和高的空间不够大 这里是圆在屏幕的坐标位置 xml定义的是圆能够显示的区域 如果你定义的太小 圆的坐标又超过了这个区域 就会显示不出来 xml里定义宽和高充满屏幕就可以了 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圆形和拖动圆跟随手指拖动”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!