Android在屏幕任意点移动图片(附源码)
以前也用过onTouchEvent(MotionEvent event)这个方法,但是没有想到这么用,感觉不错,所以就自己写了一下,感觉效果不错,以后如果做游戏用得到,点击屏幕在屏幕上滑动,图片跟着滑动!效果不错啊!哈哈,分享一下给大家,希望给大家点启迪。
Android在屏幕任意点移动图片源码下载:
下载在帮客之家的1号FTP服务器里,下载地址:
FTP地址:ftp://www.bkjia.com
用户名:www.bkjia.com
密码:www.muu.cc
在 2011年LinuxIDC.com\10月\10月\Android在屏幕任意点移动图片源码
下载方法见 http://www.bkjia.net/thread-1187-1-1.html
程序开始界面:
点击屏幕左上角,图片移动过去
点击屏幕左下角,图片移动过去
点击屏幕右下角,图片移动过去
代码说明一切:
在TouchDemo工程下,com.cn.daming的包下面:
一、MainActivity.java类的代码:
- package com.cn.daming;
-
- import android.app.Activity;
import android.graphics.Color;
import android.graphics.drawable.GradientDrawable;
import android.graphics.drawable.GradientDrawable.Orientation;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.AbsoluteLayout;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends Activity {
private ImageView mImageView01;
private int intWidth, intHeight, intDefaultX, intDefaultY;
private float mX, mY;
private int intScreenX, intScreenY;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
drawBackground();
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
intScreenX = dm.widthPixels;
intScreenY = dm.heightPixels;
intWidth = 100;
intHeight = 100;
mImageView01 =(ImageView) findViewById(R.id.myImageView1);
mImageView01.setImageResource(R.drawable.body);
RestoreButton();
mImageView01.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v)
{
RestoreButton();
}
});
}
public void drawBackground()
{
GradientDrawable grad = new GradientDrawable(
Orientation.TL_BR,
new int[] {
Color.rgb(0, 0, 127),
Color.rgb(0, 0, 255),
Color.rgb(127, 0, 255),
Color.rgb(127, 127, 255),
Color.rgb(127, 255, 255),
Color.rgb(255, 255, 255)
}
);
this.getWindow().setBackgroundDrawable(grad);
}
public boolean onTouchEvent(MotionEvent event)
{
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);
break;
case MotionEvent.ACTION_UP:
picMove(x, y);
break;
}
}catch(Exception e)
{
e.printStackTrace();
}
return true;
}
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.i("jay", Float.toString(mX)+","+Float.toString(mY));
mImageView01.setLayoutParams
(
new AbsoluteLayout.LayoutParams
(intWidth,intHeight,(int) mX,(int)mY)
);
}
public void RestoreButton()
{
intDefaultX = ((intScreenX-intWidth)/2);
intDefaultY = ((intScreenY-intHeight)/2);
mMakeTextToast
(
"("+
Integer.toString(intDefaultX)+
","+
Integer.toString(intDefaultY)+")",true
);
mImageView01.setLayoutParams
(
new AbsoluteLayout.LayoutParams
(intWidth,intHeight,intDefaultX,intDefaultY)
);
}
public void mMakeTextToast(String str, boolean isLong)
{
if(isLong==true)
{
Toast.makeText(MainActivity.this, str, Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();
}
}
}
二、在main.xml布局文件中的代码:
- <?xml version="1.0" encoding="utf-8"?>
- <AbsoluteLayout
- android:id="@+id/widget27"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- xmlns:android="http://schemas.android.com/apk/res/android"
- >
- <TextView
- android:id="@+id/myTextView"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_x="80dip"
- android:text="@string/hello"
- />
- <ImageView
- android:id="@+id/myImageView1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- >
- </ImageView>
- </AbsoluteLayout>
评论暂时关闭