Android进阶-控件的拖拽
需求:使控件可以再屏幕上自由拖拽。
思路:
- 可以在 View.setOnTouchListener()中监听控件的触摸事件,在触摸事件中我们应做以下处理
- 记下控件的起始坐标 (ACTION_DOWN)
- 计算控件的移动偏移量 (ACTION_MOVE)
- 更新控件的位置 (ACTION_MOVE)
- 使用View.layout()
- 重新初始化控件起始坐标,以便下次更新
示例代码要点:
- View.layout()并不可以在Activity的onCreate()方法中调用
这是因为Android系统在绘制界面时要经过3个过程: onMeasure(), onLayout(), onDraw()
可以联想到View.layout()是在onLayout()时调用的. Activity的onCreate()方法可定是在这三个方法之前调用的
如果你在onCrate()方法中就给控件设置了布局参数, 到后面这三个方法调用时也会被覆盖吧(我猜的)
所以View.layout()不能再onCreate()方法中调用
那么如何在onCreate()方法中设置控件的布局位置呢?(就类似于代码布局了)
其实很简单,我们只需在android系统绘制界面之前,改一下布局参数就可以了,
即调用View.setLayoutParams(layoutParams);// 重新设置位置,上面两点与下面代码并没什么关系,