按钮在Activity屏幕中拖动,定位
private ImageView img1;private int screenWidth;private int screenHeight;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);img1 = (ImageView) findViewById(R.id.imageView1);DisplayMetrics dm = getResources().getDisplayMetrics();screenWidth = dm.widthPixels;screenHeight = dm.heightPixels - 50;img1.setOnTouchListener(movingEventListener);img1.setOnClickListener(new OnClickListener() {public void onClick(View v) {System.out.println(333333);Toast.makeText(RemoveImageActivity.this, "点击咯", Toast.LENGTH_SHORT).show();}});}private OnTouchListener movingEventListener = new OnTouchListener() {int lastX, lastY;public boolean onTouch(View v, MotionEvent event) {if (event.getAction() == event.ACTION_DOWN) {lastX = (int) event.getRawX();lastY = (int) event.getRawY();System.out.println(11111);}if (event.getAction() == event.ACTION_MOVE) {System.out.println(222222);int dx = (int) event.getRawX() - lastX;int dy = (int) event.getRawY() - lastY;int left = v.getLeft() + dx;int top = v.getTop() + dy;int right = v.getRight() + dx;int bottom = v.getBottom() + dy;// 设置不能出界if (left < 0) {left = 0;right = left + v.getWidth();}if (right > screenWidth) {right = screenWidth;left = right - v.getWidth();}if (top < 0) {top = 0;bottom = top + v.getHeight();}if (bottom > screenHeight) {bottom = screenHeight;top = bottom - v.getHeight();}v.layout(left, top, right, bottom);lastX = (int) event.getRawX();lastY = (int) event.getRawY();}return true;}};
?
如何返回值TRUE,那,如果按还有点击事件的话,点击事件失效了(监听不到);
如果返回值为FALSE。那么,拖动事件完毕之后,立即就执行了点击事件
?
?
?