|
|
@@ -2,8 +2,9 @@ package com.kfzs.duanduan.view;
|
|
|
|
|
|
import android.content.Context;
|
|
|
import android.util.AttributeSet;
|
|
|
-import android.util.Log;
|
|
|
import android.view.MotionEvent;
|
|
|
+import android.view.View;
|
|
|
+import android.view.ViewParent;
|
|
|
import android.widget.RelativeLayout;
|
|
|
|
|
|
import com.sheep.jiuyan.samllsheep.R;
|
|
|
@@ -29,6 +30,10 @@ public class DragRelativeLayout extends RelativeLayout {
|
|
|
float padding = getResources().getDimension(R.dimen.content_padding_10);
|
|
|
float moveX;
|
|
|
float moveY;
|
|
|
+ float x;
|
|
|
+ float y;
|
|
|
+
|
|
|
+ static final int MIN_MOVE_DISTANCE = 10;
|
|
|
private boolean isMove = false;
|
|
|
@Override
|
|
|
public boolean onTouchEvent(MotionEvent event) {
|
|
|
@@ -37,27 +42,35 @@ public class DragRelativeLayout extends RelativeLayout {
|
|
|
isMove = false;
|
|
|
moveX = event.getX();
|
|
|
moveY = event.getY();
|
|
|
+ x = getX();
|
|
|
+ y = getY();
|
|
|
break;
|
|
|
case MotionEvent.ACTION_MOVE:
|
|
|
- isMove = true;
|
|
|
- setX(getX() + (event.getX() - moveX));
|
|
|
- setY(getY() + (event.getY() - moveY));
|
|
|
- Log.e("moveX---",moveX+"");
|
|
|
- Log.e("moveY---",moveY+"");
|
|
|
- Log.e("event.getX()---",event.getX()+"");
|
|
|
- Log.e("event.getY()---",event.getY()+"");
|
|
|
- if(event.getX() -moveX >10 || event.getX() -moveX < -10
|
|
|
- ||event.getY() - moveY >10 || event.getY() - moveY < 10){
|
|
|
- isMove = true;
|
|
|
- }else {
|
|
|
- isMove = false;
|
|
|
- }
|
|
|
+ float mx = getX() + event.getX() - moveX;
|
|
|
+ float my = getY() + event.getY() - moveY;
|
|
|
+ setX(mx);
|
|
|
+ setY(my);
|
|
|
+ isMove = Math.abs(mx-x) > MIN_MOVE_DISTANCE || Math.abs(my-y) > MIN_MOVE_DISTANCE;
|
|
|
break;
|
|
|
case MotionEvent.ACTION_UP:
|
|
|
+ //纠正X
|
|
|
if (getX() * 2 < G.WIDTH)
|
|
|
setX(padding);
|
|
|
else
|
|
|
setX(G.WIDTH - padding - getWidth());
|
|
|
+ //纠正Y
|
|
|
+ if(getY() < padding){
|
|
|
+ setY(padding);
|
|
|
+ } else {
|
|
|
+ ViewParent parent = getParent();
|
|
|
+ if (parent instanceof View) {
|
|
|
+ float maxY = ((View) parent).getHeight() - padding - getHeight();
|
|
|
+ if (getY() > maxY) {
|
|
|
+ setY(maxY);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if(!isMove){//没有移动过就点击
|
|
|
performClick();
|
|
|
}
|