Android下图片或按钮等可拖动到任意位置的效果实现源码
16lz
2021-01-23
Android下图片可拖动到任意位置的效果
下面为Activity的代码:
public class DraftTest extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sign); DisplayMetrics dm = getResources().getDisplayMetrics(); final int screenWidth = dm.widthPixels; final int screenHeight = dm.heightPixels - 50; //拖动的按钮 final Button b=(Button)findViewById(R.id.startBtn); //添加触摸事件 b.setOnTouchListener(new OnTouchListener(){ int lastX, lastY; //记录移动的最后的位置 public boolean onTouch(View v, MotionEvent event) { //获取Action int ea=event.getAction(); Log.i("TAG", "Touch:"+ea); switch(ea){ case MotionEvent.ACTION_DOWN: //按下 lastX = (int) event.getRawX(); lastY = (int) event.getRawY(); break; /** * layout(l,t,r,b) * l Left position, relative to parent t Top position, relative to parent r Right position, relative to parent b Bottom position, relative to parent * */ case MotionEvent.ACTION_MOVE: //移动 //移动中动态设置位置 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); Log.i("", "position:" + left +", " + top + ", " + right + ", " + bottom); //将当前的位置再次设置 lastX = (int) event.getRawX(); lastY = (int) event.getRawY(); break; case MotionEvent.ACTION_UP: //脱离 break; } return false; }}); } }
XML配置文件Sign.xml的代码:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layoutRacingNeedForSpeed" android:padding="0px" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:id="@+id/startBtn" android:text="tuodongdeanniu" android:layout_centerInParent="true" android:layout_width="wrap_content" android:layout_height="wrap_content"/></RelativeLayout>
这样就可以实现了~
更多相关文章
- android全屏设置代码:
- Android ListView 去除边缘阴影、选中色、拖动背景色等(android:
- Android 5.1源代码与Nexus设备工厂镜像下载
- Android 自音乐播放器源代码
- Android Jni代码示例讲解
- Android 多线程之synchronized锁住的是代码还是对象(二)
- Android有用代码片断(五)
- Android Wi-Fi EAP-SIM代码解析