http://www.roiding.com/index.php/archives/211
废话少说,要实现的效果就是在界面上拖动这一个按钮到处跑。
1. 布局文件
view plain copy to clipboard print ? <? xml version = "1.0" encoding = "utf-8" ?> < LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android" android:orientation = "vertical" android:layout_width = "fill_parent" android:layout_height = "fill_parent" > < Button android:id = "@+id/btn_hello" android:layout_width = "fill_parent" android:layout_height = "wrap_content" android:text = "@string/hello" /> </ LinearLayout > <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:id="@+id/btn_hello" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>2. 代码
view plain copy to clipboard print ? package com.roiding.sample; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.Button; public class Touch extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.main); final Button btn = (Button) findViewById(R.id.btn_hello); btn.setOnTouchListener( new OnTouchListener() { int [] temp = new int [] { 0 , 0 }; public boolean onTouch(View v, MotionEvent event) { int eventaction = event.getAction(); Log.i( "&&&" , "onTouchEvent:" + eventaction); int x = ( int ) event.getRawX(); int y = ( int ) event.getRawY(); switch (eventaction) { case MotionEvent.ACTION_DOWN: // touch down so check if the temp[ 0 ] = ( int ) event.getX(); temp[ 1 ] = y - v.getTop(); break ; case MotionEvent.ACTION_MOVE: // touch drag with the ball v.layout(x - temp[ 0 ], y - temp[ 1 ], x + v.getWidth() - temp[ 0 ], y - temp[ 1 ] + v.getHeight()); v.postInvalidate(); break ; case MotionEvent.ACTION_UP: break ; } return false ; } }); } } 相关资源:vue实现拖拽效果