drag

package com.example.drag;

import android.app.Activity;
import android.widget.Button;
import android.view.MotionEvent;
import android.view.ViewGroup;
import android.os.Bundle;
import android.widget.RelativeLayout;
import android.view.View;

public class MainActivity extends Activity implements View.OnTouchListener {
private Button mButton;
private ViewGroup mViewGroup;
private int xDelta;
private int yDelta;

  @Override
  public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mViewGroup = (ViewGroup) findViewById(R.id.root);
    mButton = (Button) findViewById(R.id.id_text);
    RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
        ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    layoutParams.leftMargin = 50;
    layoutParams.topMargin = 50;

    mButton.setLayoutParams(layoutParams);
    mButton.setOnTouchListener(this);
  }

  @Override
  public boolean onTouch(View view, 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 params = (RelativeLayout.LayoutParams) view
            .getLayoutParams();
        xDelta = x - params.leftMargin;
        yDelta = y - params.topMargin;
        break;
      case MotionEvent.ACTION_MOVE:
        RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) view
            .getLayoutParams();
        int xDistance = x - xDelta;
        int yDistance = y - yDelta;
        layoutParams.leftMargin = xDistance;
        layoutParams.topMargin = yDistance;
        view.setLayoutParams(layoutParams);
        break;
    }
    mViewGroup.invalidate();
    return true;
  }
}

  

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/id_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
</RelativeLayout>

  

猜你喜欢

转载自www.cnblogs.com/cuthead/p/drag.html
今日推荐