拖拽图片效果

方法一

import android.app.Activity;  import android.os.Bundle;  import android.view.MotionEvent;  import android.view.View;  import android.view.View.OnTouchListener;  import android.widget.ImageView;  public class DragSample01 extends Activity {      ImageView img;      @Override      public void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.drag_sample01);                  img = (ImageView)findViewById(R.id.img_view);                    img.setOnTouchListener(new OnTouchListener(){                         private int mx, my;                       public boolean onTouch(View v, MotionEvent event) {                  switch(event.getAction()) {                               case MotionEvent.ACTION_MOVE:                      mx = (int)(event.getRawX());                      my = (int)(event.getRawY() - 50);                                            v.layout(mx - img.getWidth()/2, my - img.getHeight()/2, mx + img.getWidth()/2, my + img.getHeight()/2);                      break;                  }                  return true;              }});      }  }  

方法二:

import android.app.Activity;  import android.os.Bundle;  import android.view.MotionEvent;  import android.view.View;  import android.view.View.OnTouchListener;  import android.widget.ImageView;  public class DragSample01 extends Activity {      ImageView img;      @Override      public void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.drag_sample01);                  img = (ImageView)findViewById(R.id.img_view);                    img.setOnTouchListener(new OnTouchListener(){                         private float x, y;              private int mx, my;                       public boolean onTouch(View v, MotionEvent event) {                  switch(event.getAction()) {                   case MotionEvent.ACTION_DOWN:                      x = event.getX();                      y = event.getY();                  case MotionEvent.ACTION_MOVE:                      mx = (int)(event.getRawX() - x);                      my = (int)(event.getRawY() - 50 - y);                                            v.layout(mx, my, mx + v.getWidth(), my + v.getHeight());                      break;                  }                  return true;              }});      }  }  

拖动按钮到处跑
1. 布局文件XML

<?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" android:layout_width="fill_parent"android:layout_height="wrap_content" android:text="拖动看看~~" /></LinearLayout>

2. 代码

import android.app.Activity;import android.os.Bundle;import android.util.DisplayMetrics;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.widget.Button;public class DraftTest extends Activity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);final Button btn = (Button) findViewById(R.id.btn);btn.setOnTouchListener(new OnTouchListener() {int[] temp = new int[] { 0, 0 };public boolean onTouch(View v, MotionEvent event) {int eventaction = event.getAction();int x = (int) event.getRawX();int y = (int) event.getRawY();switch (eventaction) {case MotionEvent.ACTION_DOWN: // touch down so check if thetemp[0] = (int) event.getX();temp[1] = y - v.getTop();break;case MotionEvent.ACTION_MOVE: // touch drag with the ballv.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;}});}}

另一种:

Java代码
import android.app.Activity;import android.os.Bundle;import android.util.DisplayMetrics;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.widget.Button;public class DraftTest extends Activity {/** Called when the activity is first created. */public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);DisplayMetrics dm = getResources().getDisplayMetrics();final int screenWidth = dm.widthPixels;final int screenHeight = dm.heightPixels - 50;final Button b = (Button) findViewById(R.id.btn);b.setOnTouchListener(new OnTouchListener() {int lastX, lastY;public boolean onTouch(View v, MotionEvent event) {// TODO Auto-generated method stubswitch (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 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);lastX = (int) event.getRawX();lastY = (int) event.getRawY();break;case MotionEvent.ACTION_UP:break;}return false;}});}}

再一个,浮动按钮的实现。
主要功能:
点击按钮可以进行拖动;
当点击按钮时按钮会出现于所有按钮的最上方;

import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.os.Bundle;import android.text.style.AbsoluteSizeSpan;import android.util.Log;import android.view.MotionEvent;import android.view.View;import android.view.View.OnClickListener;import android.view.View.OnTouchListener;import android.widget.AbsoluteLayout;import android.widget.Button;public class HelloWorld2 extends Activity {    /** Called when the activity is first created. */AbsoluteLayout mLayoutGroup = null;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //setContentView(R.layout.main);                mLayoutGroup = new AbsoluteLayout(this);        AbsoluteLayout.LayoutParams layoutParams = new AbsoluteLayout.LayoutParams        (320, 480, 0, 0);                setContentView(mLayoutGroup, layoutParams);                Button button= new Button(this);        button.setText("testButton");        layoutParams = new AbsoluteLayout.LayoutParams(120, 60, 20, 20);        mLayoutGroup.addView(button, layoutParams);        button.setOnClickListener(new OnClickListener() {public void onClick(View arg0) {// TODO Auto-generated method stub//alert();}});        button.setOnTouchListener(touchListener);                final Button btButton = new Button(this);        btButton.setText("测试按钮移动");        layoutParams = new AbsoluteLayout.LayoutParams(120, 60, 20, 160);        mLayoutGroup.addView(btButton, layoutParams);        btButton.setOnTouchListener(touchListener);    }        OnTouchListener touchListener = new OnTouchListener()    {    int temp[] = new int[]{0, 0};public boolean onTouch(View arg0, MotionEvent arg1) {// TODO Auto-generated method stubint eventAction = arg1.getAction();Log.e("testButtonMove", "OnTouchAction:"+eventAction);int x = (int)arg1.getRawX();int y = (int)arg1.getRawY();switch (eventAction) {case MotionEvent.ACTION_DOWN:temp[0] = (int)arg1.getX();temp[1] = (int)(y-arg0.getTop());mLayoutGroup.bringChildToFront(arg0);arg0.postInvalidate();break;case MotionEvent.ACTION_MOVE:int left = x - temp[0];int top = y - temp[1];int right = left + arg0.getWidth();int bottom = top + arg0.getHeight();arg0.layout(left, top, right, bottom);arg0.postInvalidate();break;default:break;}return false;}    };        void alert()    {    new AlertDialog.Builder(this)    .setNeutralButton("OK", new DialogInterface.OnClickListener() {public void onClick(DialogInterface arg0, int arg1) {// TODO Auto-generated method stub}}).setTitle("test button").setMessage("test test test!!!").show();    }        }


更多相关文章

  1. android EditText设置不可写
  2. Android(安卓)拨号器的简单实现
  3. android 使用html5作布局文件: webview跟javascript交互
  4. android studio调试c/c++代码
  5. android用户界面之按钮(Button)教程实例汇
  6. Android开发环境搭建
  7. IM-A820L限制GSM,WCDMA上网的原理(其他泛泰机型可参考)7.13
  8. 锁屏界面
  9. android(NDK+JNI)---Eclipse+CDT+gdb调试android ndk程序

随机推荐

  1. android虚拟键盘弹出时挡住EditText的解
  2. Android(安卓)强制竖屏
  3. Android(安卓)eclipse项目转成Android(安
  4. Android获取本机号码及运营商
  5. Android(安卓)webview 加载H5时,隐藏掉不
  6. Android多线程下载示例详解
  7. 在Android上使用ZXing识别条码 二次开发
  8. 学习Android不错的网址
  9. java攻城狮之路(Android篇)--MP3 MP4、拍
  10. android 网络连接 HttpGet HttpPost方法