因为最近项目的需要,需要实现一个拖动效果,看了一下网上刚好有这种拖动效果的demo,代码大概如下:
成都创新互联公司是一家专业提供姑苏企业网站建设,专注与网站设计制作、网站建设、H5网站设计、小程序制作等业务。10年已为姑苏众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。private void initListener(){ screenWidth = getScreenWidth(this);//获取屏幕宽度 screenHeight = getScreenHeight(this) - getStatusHeight(MainActivity.this);//屏幕高度-状态栏 testTv.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: lastX = (int) event.getRawX(); lastY = (int) event.getRawY(); break; case MotionEvent.ACTION_MOVE: int dx = (int) event.getRawX() - lastX; int dy = (int) event.getRawY() - lastY; int top = v.getTop() + dy; int left = v.getLeft() + dx; if (top <= 0) { top = 0; } if (top >= screenHeight - testTv.getHeight() ) { top = screenHeight - testTv.getHeight(); } if (left >= screenWidth - testTv.getWidth()) { left = screenWidth - testTv.getWidth(); } if (left <= 0) { left = 0; } v.layout(left, top, left+v.getWidth(), top+v.getHeight()); v.postInvalidate(); lastX = (int) event.getRawX(); lastY = (int) event.getRawY(); break; case MotionEvent.ACTION_UP: break; } return true;//这里根据项目需要选择false与true } }); }