软件编程
位置:首页>> 软件编程>> Android编程>> Android触屏测试实例代码

Android触屏测试实例代码

作者:shichen2014  发布时间:2023-05-30 07:15:08 

标签:Android,触屏,测试

本文实例详细描述了Android触屏测试代码,可实现对触屏的点击、移动、离开等事件的处理,对于Android初学者有很好的借鉴价值。

具体功能代码如下:


package com.test;
import android.app.Activity;
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 TouchActivity extends Activity {
 /*声明ImageView变量*/
 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);

/* 取得屏幕对象 */
  DisplayMetrics dm = new DisplayMetrics();
  getWindowManager().getDefaultDisplay().getMetrics(dm);

/* 取得屏幕解析像素 */
  intScreenX = dm.widthPixels;
  intScreenY = dm.heightPixels;

/* 设置图片的宽高 */
  intWidth = 100;
  intHeight = 100;
  /*通过findViewById构造器创建ImageView对象*/
  mImageView01 =(ImageView) findViewById(R.id.myImageView1);
  /*将图片从Drawable赋值给ImageView来呈现*/
  mImageView01.setImageResource(R.drawable.baby);

/* 初始化按钮位置居中 */
  RestoreButton();

/* 当点击ImageView,还原初始位置 */
  mImageView01.setOnClickListener(new Button.OnClickListener()
  {
   @Override
   public void onClick(View v)
   {
    RestoreButton();
   }
  });
 }

/*覆盖触控事件*/
 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 来查看图片位置*/
  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);
  /*Toast还原位置坐标*/
  mMakeTextToast
  (
   "("+
   Integer.toString(intDefaultX)+
   ","+
   Integer.toString(intDefaultY)+")",true
  );

/* 以setLayoutParams方法,重新安排Layout上的位置 */
  mImageView01.setLayoutParams
  (
   new AbsoluteLayout.LayoutParams
   (intWidth,intHeight,intDefaultX,intDefaultY)
  );
 }

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

读者还可以在该实例的基础上完善各种事件的响应处理函数,使其功能更加丰富。

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com