package com.org;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.*;
import android.view.View.*;
import android.widget.*;
import android.widget.AbsoluteLayout.LayoutParams;
import android.app.Activity;
import android.os.Bundle;public class ImageMoveActivity extends Activity {
/** Called when the activity is first created. */
    private ImageView mImageView01;
    private int intWidth, intHeight, intDefaultX, intDefaultY;
    private float mX, mY;
    private int intScreenX, intScreenY;
    private OnClickListener listener1 = null;
@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        //取得屏幕对象
        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        
        //取得屏幕像素
        intScreenX = dm.widthPixels;
        intScreenY = dm.heightPixels;
        
        //设置图片的宽与高
        intWidth = 100;
        intHeight = 100;
        
        mImageView01 = (ImageView)findViewById(R.id.imageView1);
        mImageView01.setImageResource(R.drawable.abc_111);
        
        //初始化按钮位置居中
        RestoreButton();
        
        //当点击ImageView,还原初始位置
        mImageView01.setOnClickListener(listener1);
        
        listener1 = new OnClickListener()
        {
         public void onClick(View v)
         {
         RestoreButton();
         }
        };         
    }

//重写触控事件
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
float x = event.getX();
float y = event.getY();
try
{
//触控事件处理
switch(event.getAction())
{
case MotionEvent.ACTION_DOWN:
picMove(x, y);
break;
case MotionEvent.ACTION_MOVE:
picMove(x, y);
case MotionEvent.ACTION_UP:
picMove(x, y);
break;
}
}catch(Exception e)
{
e.printStackTrace();
}
return true;
}

//移动图片的方法
@SuppressWarnings("deprecation")
private void picMove(float x, float y)
{
mX = x - (intWidth/2);
mY = y - (intHeight/2);
//防止图片超过右边屏幕
if((mX + intWidth) > intScreenX)
{
mX = intScreenX - intWidth;
}
else if(mX < 0)
{
mX = 0;
}
else if((mY + intHeight) > intScreenY)
{
mY = intScreenY - intHeight;
}
else if(mY < 0)
{
mY = 0;
}
//通过log来查看图片位置
Log.i("jay", Float.toString(mX) + "," + Float.toString(mY));
//以setLayoutParams方法,重新安排Layout上的位置
mImageView01.setLayoutParams(
new AbsoluteLayout.LayoutParams(intWidth, intHeight, (int)mX, (int)mY)
);
}

//还原ImageView位置的处理事件
public void RestoreButton()
{
intDefaultX = ((intScreenX - intWidth)/2);
intDefaultY = ((intScreenY - intHeight)/2);
mMakeTextToast
(
"("+Integer.toString(intDefaultX) + "," + Integer.toString(intDefaultY) + ")",true
);
//重新安排Layout上的布局
mImageView01.setLayoutParams(
new AbsoluteLayout.LayoutParams(intWidth, intHeight, intDefaultX, intDefaultY)
);
}

//自定义一条发出信息的方法
public void mMakeTextToast(String str, boolean isLong)
{
if(isLong == true)
{
Toast.makeText(ImageMoveActivity.this, str, Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(ImageMoveActivity.this, str, Toast.LENGTH_SHORT).show();
}
}
}