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();
}
}
}
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();
}
}
}
解决方案 »
- 关于achartengine中能不能设置横坐标的刻度单位啊。
- 如何在自定义类中使用图片资源文件?
- 关于MediaPlayer seekTo的缓存位置问题
- android播放视频时,画面倒过来了
- 关于android用ksoap2库开发webserver的问题
- 安卓程序退出界面问题
- 关于android 下SQLite _id does not exist
- android怎么实现接收充电广播
- android手机如何使用代理服务器
- Android fragment退出view时怎么设置退出动画?求救...
- android模拟器7寸变成竖屏不能全部显示(有图)
- 大家好,请问一个gridview左右滑动的例子的问题。
mImageView01.setX(mX);
mImageView01.setY(mY);
代替
mImageView01.setLayoutParams(
new AbsoluteLayout.LayoutParams(intWidth, intHeight, (int)mX, (int)mY)
);