Android 自定义控件--可拖动的控件
2019-01-07 本文已影响0人
大川的川
有时候我们看到部分APP的首页面有浮层控件,更重要的是还可以拖动,怎么实现的呢?带着疑问和不解,我们一起来揭开神秘的她面纱~~
1分析功能
可拖动,实现的步骤是点击,拖动,释放,那么很清晰了,此功能和触摸事件有关!
2实现自定义的View
public class CustomView extends View {
private int moveX;
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
public boolean onTouchEvent(MotionEvent event) {
int x=(int)event.getX();
int y=(int)event.getY();
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
moveX=x;
break;
case MotionEvent.ACTION_MOVE:
//计算移动的距离
int offsetX=x-moveX;
int offsetY=y-moveX;
//调用layout方法来重新放置它的位置
offsetLeftAndRight(offsetX);
offsetTopAndBottom(offsetY);
break;
}
return true;
}
}
onTouchEvent中根据触摸事件计算出View层的时时坐标
好了,上效果吧:
可移动的CustomView.gif