网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

Android如何实现自定义View圆形和拖动圆、跟随手指拖动效果

小编给大家分享一下Android如何实现自定义View圆形和拖动圆、跟随手指拖动效果,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

创新互联自成立以来,一直致力于为企业提供从网站策划、网站设计、做网站、成都网站建设、电子商务、网站推广、网站优化到为企业提供个性化软件开发等基于互联网的全面整合营销服务。公司拥有丰富的网站建设和互联网应用系统开发管理经验、成熟的应用系统解决方案、优秀的网站开发工程师团队及专业的网站设计师团队。

单纯的自定义一个圆非常简单 只需要几步就完成 拖动圆添加实现触摸事件即可

我在第一次自定义View圆遇到的几个Bug:

1.拖动圆的话在xml里面设置的自定义圆的宽和高是它能活动的空间的大小 不是圆控件的大小 如果你定义了100dp 拖动它的时候超过100dp这个距离这个圆就会看不见 就像下面这样 如果想活动于整个屏幕直接给宽和高match_parent属性就好了

Android如何实现自定义View圆形和拖动圆、跟随手指拖动效果

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圆形和拖动圆、跟随手指拖动效果
本文网址:http://bjjierui.cn/article/jcpisi.html

其他资讯