1.实现原理
1.自定义控件显示原理
Android 整个屏幕是一个继承自View或SurfaceView的类。如果要实现自定义的UI控件,则 可以通过重写它的OnDraw方法来绘制界面上的所有UI对象。Android底层每调用一次该方法, 就会把界面上的元素重新刷新一遍。 自定义的控件一般会有一些位置、大小、图形、图片等和显示相关的属性, 在 onDraw 方法中,依次根据这些属性重新绘制自定义换件。从而把自己定义控制显示在指定的位置、 大小、图片等。
2.界面实时动态更新原理
因此,必须有这样一种机制:在控件的每一个和显示有关的属性更改后,必须马上调用onDraw 方法,从而重新绘制这些更改。
这种机制有两种实现方法:
- 采用UI线程,以一定周期调用onDraw方法。
- 采用消息机制,当和显示有关的属性更改时,使onDraw方法得到调用。
View或SurfaceView的invalidate和postInvalidate方法会使onDraw方法得到调用。
2.拖拽的实现方法
- 首先得到拖拽的控件 自定义控件可通过setBounds方法来设置显示对象的位置与空间范围。 首先得到触摸点的坐标;再根据控件的getBounds方法得到控件的显示范围;然后触摸点是否 在控件的显示范围内,就可以得到拖拽的控件。
- 实时动态更新控件的拖拽坐标 在触摸移动的监听方法中,将控件的位置动态更新成触摸点的坐标即可。然后控件就会根据 拖拽不断更新自己的位置,从而实现拖拽的效果。