Android 自定义控件的 拖拽、移动 实现 方法

1.实现原理

1.自定义控件显示原理

Android 整个屏幕是一个继承自View或SurfaceView的类。如果要实现自定义的UI控件,则 可以通过重写它的OnDraw方法来绘制界面上的所有UI对象。Android底层每调用一次该方法, 就会把界面上的元素重新刷新一遍。 自定义的控件一般会有一些位置、大小、图形、图片等和显示相关的属性, 在 onDraw 方法中,依次根据这些属性重新绘制自定义换件。从而把自己定义控制显示在指定的位置、 大小、图片等。

2.界面实时动态更新原理

因此,必须有这样一种机制:在控件的每一个和显示有关的属性更改后,必须马上调用onDraw 方法,从而重新绘制这些更改。
这种机制有两种实现方法:

  1. 采用UI线程,以一定周期调用onDraw方法。
  2. 采用消息机制,当和显示有关的属性更改时,使onDraw方法得到调用。

View或SurfaceView的invalidate和postInvalidate方法会使onDraw方法得到调用。

2.拖拽的实现方法

  • 首先得到拖拽的控件 自定义控件可通过setBounds方法来设置显示对象的位置与空间范围。 首先得到触摸点的坐标;再根据控件的getBounds方法得到控件的显示范围;然后触摸点是否 在控件的显示范围内,就可以得到拖拽的控件。
  • 实时动态更新控件的拖拽坐标 在触摸移动的监听方法中,将控件的位置动态更新成触摸点的坐标即可。然后控件就会根据 拖拽不断更新自己的位置,从而实现拖拽的效果。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值