Android怎么自定义View圆形和拖动圆实现跟随手指拖动效果
导读:本文共1671字符,通常情况下阅读需要6分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 我在第一次自定义View圆遇到的几个Bug:1.拖动圆的话在xml里面设置的自定义圆的宽和高是它能活动的空间的大小 不是圆控件的大小 如果你定义了100dp 拖动它的时候超过100dp这个距离这个圆就会看不见 就像下面这样 如果想活动于整个屏幕直接给宽和高match_parent属性就好了2.我在定义充满属性match_parent的时候运行会报错,什么方法都用... ...
目录
(为您整理了一些要点),点击可以直达。我在第一次自定义View圆遇到的几个Bug:
1.拖动圆的话在xml里面设置的自定义圆的宽和高是它能活动的空间的大小 不是圆控件的大小 如果你定义了100dp 拖动它的时候超过100dp这个距离这个圆就会看不见 就像下面这样 如果想活动于整个屏幕直接给宽和高match_parent
属性就好了
2.我在定义充满属性match_parent
的时候运行会报错,什么方法都用了就是不行,耐心等待过一会就好了…有可能是studio没来得及编译过来
下面开始写代码: 先是单纯的创建一个圆形 创建一个类继承View 实现onDraw方法
publicclassCustomViewextendsView{//创建point对象参数为x坐标和y坐标privatePointFpoint=newPointF(100,100);publicCustomView(Contextcontext){super(context);}publicCustomView(Contextcontext,@NullableAttributeSetattrs){super(context,attrs);}publicCustomView(Contextcontext,@NullableAttributeSetattrs,intdefStyleAttr){super(context,attrs,defStyleAttr);}@OverrideprotectedvoidonDraw(Canvascanvas){super.onDraw(canvas);//参数为圆的横坐标,纵坐标,半径,创建canvas.drawCircle(point.x,point.y,50,newPaint());}}
XML里、自己定义的view类的名字:
<ydtx.bwie.com.xiangmu_project02.CustomViewandroid:layout_width="match_parent"android:layout_height="match_parent"/>
一个圆就这样创建好了 直接运行就可以了 ManActivity里什么也不用改
@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}
下面是添加拖动圆的功能 非常简单 实现触摸监听即可 代码非常少 如下:
publicclassCustomViewextendsView{//创建point对象参数为x坐标和y坐标privatePointFpoint=newPointF(100,100);publicCustomView(Contextcontext){super(context);}publicCustomView(Contextcontext,@NullableAttributeSetattrs){super(context,attrs);}publicCustomView(Contextcontext,@NullableAttributeSetattrs,intdefStyleAttr){super(context,attrs,defStyleAttr);}@OverrideprotectedvoidonDraw(Canvascanvas){super.onDraw(canvas);//参数为圆的横坐标,纵坐标,半径,创建canvas.drawCircle(point.x,point.y,50,newPaint());}//触摸事件@OverridepublicbooleanonTouchEvent(MotionEventevent){//获得触摸事件switch(event.getAction()){caseMotionEvent.ACTION_DOWN:break;//ACTION_MOVE不要设置break,否则圆形不会跟随手指活动只会手指松开屏幕的时候圆形直接到了屏幕停止的位置caseMotionEvent.ACTION_MOVE:caseMotionEvent.ACTION_UP://获取手指触摸位置的x坐标point.x=event.getX();//获取手指触摸位置的y坐标point.y=event.getY();//启动postInvalidate();break;}returntrue;}}
</div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
Android怎么自定义View圆形和拖动圆实现跟随手指拖动效果的详细内容,希望对您有所帮助,信息来源于网络。