我之前做的是条码,可以手动拖动,也可以用手势缩放,其实就是一个imageview,设置一下就可以实现了

解决方案 »

  1.   

    这个例子是按钮会跟着手移动,你先按我的调试出来看看效果就知道了。
    import android.app.Activity;
    import android.support.v7.app.ActionBarActivity;
    import android.os.Bundle;import android.view.Menu;
    import android.view.MenuItem;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.Button;
    import android.widget.RelativeLayout;
    public class TestHand extends Activity implements View.OnTouchListener {
        private Button btnTest;
        private ViewGroup root;
        private int x;
        private int y;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_test_hand);
            root=(ViewGroup)findViewById(R.id.root);
            btnTest=(Button)findViewById(R.id.btnTest);
            RelativeLayout.LayoutParams layoutParams=new RelativeLayout.LayoutParams(150,50);
            layoutParams.leftMargin=50;
            layoutParams.topMargin=50;
            layoutParams.bottomMargin=50;
            layoutParams.rightMargin=-250;
            btnTest.setLayoutParams(layoutParams);
            btnTest.setOnTouchListener(this);
        }    @Override
        public boolean onTouch(View v, MotionEvent event) {
            final int X=(int)event.getRawX();
            final int Y=(int)event.getRawY();
            switch (event.getAction() & MotionEvent.ACTION_MASK){
                case MotionEvent.ACTION_DOWN:
                    RelativeLayout.LayoutParams lParams=(RelativeLayout.LayoutParams)v.getLayoutParams();
                    this.x=X-lParams.leftMargin;
                    this.y=Y-lParams.topMargin;
                    break;
                case MotionEvent.ACTION_MOVE:
                    RelativeLayout.LayoutParams layoutParams=(RelativeLayout.LayoutParams)v.getLayoutParams();
                    layoutParams.leftMargin=X-this.x;
                    layoutParams.topMargin=Y-this.y;
                    layoutParams.rightMargin=-250;
                    layoutParams.bottomMargin=-250;
                    v.setLayoutParams(layoutParams);
                    break;
            }
            root.invalidate();
            return true;
        }
    }XML:
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/root"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="测试"
            android:id="@+id/btnTest" /></RelativeLayout>