单纯的自定义一个圆非常简单 只需要几步就完成 拖动圆添加实现触摸事件即可
我在第一次自定义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类的名字:
<ydtx.bwIE.com.xiangmu_project02.CustomVIEw androID:layout_wIDth="match_parent" androID:layout_height="match_parent" />
一个圆就这样创建好了 直接运行就可以了 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,创建 canvas.drawCircle(point.x,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圆形和拖动圆、跟随手指拖动效果全部内容,希望文章能够帮你解决Android自定义View圆形和拖动圆、跟随手指拖动效果所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)