用手指移动照片

(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() {
  intDefault_X = ((intScreen_X-intWidth)/2);
  intDefault_Y = ((intScreen_Y-intHeight)/2);
  mImageView.setLayoutParams(new AbsoluteLayout.LayoutParams(intWidth,intHeight,intDefault_X,intDefault_Y));
 }
}

main.xml太简单省略