android 图片拖动简单例子

package com.xf;
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.ImageView;

public class XFActivity extends Activity implements OnTouchListener{

	private ImageView iv;//拖动用的图片
	int x,y;//图片上一个的XY位置
	int screenWidth,screenHeight;//当前屏幕的宽度和高度(像素表示)
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        DisplayMetrics dm = getResources().getDisplayMetrics(); 
        screenWidth = dm.widthPixels; 
        screenHeight = dm.heightPixels; 
        
        iv=(ImageView)findViewById(R.id.im);
        iv.setOnTouchListener(this);
    }
	@Override
	public boolean onTouch(View v, MotionEvent e) {
		System.out.println(e.getAction());
		switch(e.getAction()){
			case MotionEvent.ACTION_DOWN://按下
				//获取按下时的X,Y轴位置  
				x = (int) e.getRawX();
	            y = (int) e.getRawY();
				break;
			case MotionEvent.ACTION_UP://松开
				
				break;
			case MotionEvent.ACTION_MOVE://执行 ACTION_DOWN 才执行 ACTION_MOVE
				
				int mX = (int)e.getRawX()-x;
				int mY = (int)e.getRawY()-y;
				
				int left = v.getLeft()+mX;
				int top = v.getTop()+mY;
				int right = v.getRight()+mX;
				int bottom = v.getBottom()+mY;
				
				  // 设置不能出界 
                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);
				
				//记住手指滑动所在的X,Y轴位置,也就是上一个X,Y轴的位置
				x = (int) e.getRawX();  
                y = (int) e.getRawY(); 
				break;
		}
		return true;
	}
	
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值