用手指移动照片
(2011-05-23 16:28:13)
import android.app.Activity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.MotionEvent;
import android.view.View;
import android.widget.AbsoluteLayout;
import android.widget.ImageView;
public class MyActivity extends Activity {
private ImageView mImageView;
private int
intWidth,intHeight,intDefault_X,intDefault_Y;
private float mX,mY;
private int intScreen_X,intScreen_Y;
@Override
public void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//取得屏幕对象
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
//取得屏幕解析像素
intScreen_X = metrics.widthPixels;
intScreen_Y = metrics.heightPixels;
//设置图片的宽和高
intWidth = 100;
intHeight = 100;
//初始化ImageView对象
mImageView = (ImageView) findViewById(R.id.iv01);
//让ImageView对象显示图片
mImageView.setImageResource(R.drawable.mantou1);
//初始化按钮位置剧中
RestoreButton();
mImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void
onClick(View v) {
RestoreButton();
}
});
}
@Override
public boolean onTouchEvent(MotionEvent event)
{
//取得手指接触屏幕的的位置
float x = event.getX();
float y = event.getY();
switch (event.getAction())
{
case
MotionEvent.ACTION_DOWN:
picMove(x,y);
break;
case
MotionEvent.ACTION_MOVE:
picMove(x,
y);
break;
case
MotionEvent.ACTION_UP:
picMove(x,
y);
default:
break;
}
return true;
}
//移动图片的方法
private void picMove(float x, float y) {
//调整图片与指针的位置
mX = x-(intWidth/2);
mY = y-(intHeight/2);
//防止图片超过屏幕的处理
//1,防止屏幕向右超过屏幕
if((mX+intWidth)>intScreen_X){
mX =
intScreen_X - intWidth;
}//防止图片向左超出屏幕
else
if(mX<0){
mX = 0;
}//防止图片向下超出屏幕
else
if((mY+intScreen_Y)>intScreen_Y){
mY =
intScreen_Y - intHeight;
}//防止图片向上超出屏幕
else
if(mY<0){
mY = 0;
}
mImageView.setLayoutParams(new
AbsoluteLayout.LayoutParams(intWidth,intHeight,(int)mX,(int)mY));
}
//还原ImageView位置的事件处理
private void RestoreButton() {