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)

相关推荐

  • Android编程实现两点触控功能示例

    本文实例讲述了Android编程实现两点触控功能.分享给大家供大家参考,具体如下: 下面是一个两点触控的案例代码: package com.zzj; import android.app.Activity; import android.os.Bundle; import android.view.MotionEvent; public class AndroidTestActivity extends Activity { private float x0, y0; private float

  • Android多点触控实现对图片放大缩小平移,惯性滑动等功能

    文章将在原有基础之上做了一些扩展功能: 1.图片的惯性滑动 2.图片缩放小于正常比例时,松手会自动回弹成正常比例 3.图片缩放大于最大比例时,松手会自动回弹成最大比例 实现图片的缩放,平移,双击缩放等基本功能的代码如下,每一行代码我都做了详细的注释 public class ZoomImageView extends ImageView implements ScaleGestureDetector.OnScaleGestureListener, View.OnTouchListener , V

  • Android开发实例之多点触控程序

    智能终端设备的多点触控操作为我们带来了种种炫酷体验,这也使得很多Android开发者都对多点触控程序的开发感兴趣.实际上多点触控程序的实现并不是那么遥不可及,而是比较容易.本文就主要通过一个实例具体讲解多点触控程序的实现.        首先来了解一下Android中多点触控的原理. Android多点触控在本质上需要LCD驱动和程序本身设计上支持,目前市面上HTC.Motorola和Samsung等知名厂商只要使用电容屏触控原理的手机均可以支持多点触控Multitouch技术,对于网页缩放.手

  • Android多点触控实现图片自由缩放

    Android多点触控涉及到的知识点 1.ScaleGestureDetector 2.OnScaleGestureListener 3.Matrix 4.OnTouchListener 四个知识点需要了解一下,需要注意的是Matrix在内存中是一个一维数组,操控图片的Matrxi是一个3X3的矩阵,在内存中也就是一个大小为9的一维数组. 实现多点触控,自由变化图片 1. ImageView的基础上继承 2.因为要在图片加载完成就获取到相关的属性,所以实现OnGlobalLayoutListen

  • Android实现多点触控,自由缩放图片的实例代码

    Android多点触控涉及到的知识点 1.ScaleGestureDetector 2.OnScaleGestureListener 3.Matrix 4.OnTouchListener 四个知识点需要了解一下,需要注意的是Matrix在内存中是一个一维数组,操控图片的Matrxi是一个3X3的矩阵,在内存中也就是一个大小为9的一维数组. 实现多点触控,自由变化图片 1. ImageView的基础上继承 2.因为要在图片加载完成就获取到相关的属性,所以实现OnGlobalLayoutListen

  • Android单点触控实现图片平移、缩放、旋转功能

    相信大家使用多点对图片进行缩放,平移的操作很熟悉了,大部分大图的浏览都具有此功能,有些app还可以对图片进行旋转操作,QQ的大图浏览就可以对图片进行旋转操作,大家都知道对图片进行缩放,平移,旋转等操作可以使用Matrix来实现,Matrix就是一个3X3的矩阵,对图片的处理可分为四个基础变换操作,Translate(平移变换).Rotate(旋转变换).Scale (缩放变换).Skew(错切变换),如果大家对Matrix不太了解的话可以看看这篇文章(点击查看),作者对每一种Matrix的变换写

  • Android 通过触摸动态地在屏幕上画矩形效果

    需求概述: 在屏幕上用手指画出一个区域,返回所圈的区域坐标. 技术实现: 自定义View,设置画笔及对应参数,在onTouchEvent()回调函数里,对触摸事件进行判断.画出矩形图形. 代码: 自定义View: public class GameView extends View { // 声明Paint对象 private Paint mPaint = null; private int StrokeWidth = 5; private Rect rect = new Rect(0,0,0,

  • Android多点触控技术实战 针对图片自由缩放和移动

    在上一篇文章中我带着大家一起实现了Android瀑布流照片墙的效果,虽然这种效果很炫很酷,但其实还只能算是一个半成品,因为照片墙中所有的图片都是只能看不能点的.因此本篇文章中,我们就来对这一功能进行完善,加入点击图片就能浏览大图的功能,并且在浏览大图的时候还可以通过多点触控的方式对图片进行缩放. 如果你还没有看过 Android瀑布流照片墙实现,体验不规则排列的美感 这篇文章,请尽量先去阅读完再来看本篇文章,因为这次的代码完全是在上次的基础上进行开发的. 那我们现在就开始动手吧,首先打开上次的P

  • Android应用开发中触摸屏手势识别的实现方法解析

    很多时候,利用触摸屏的Fling.Scroll等Gesture(手势)操作来操作会使得应用程序的用户体验大大提升,比如用Scroll手势在 浏览器中滚屏,用Fling在阅读器中翻页等.在Android系统中,手势的识别是通过 GestureDetector.OnGestureListener接口来实现的,不过William翻遍了Android的官方文档也没有找到一个相 关的例子,API Demo中的TouchPaint也仅仅是提到了onTouch事件的处理,没有涉及到手势. 我们先来明确一些概念

  • android 触屏的震动响应接口调用方法

    调用native 方法来开启和关闭vibrator: native static void vibratorOn(long milliseconds); native static void vibratorOff(); 调用方法如下: VibratorService.vibratorOn()

随机推荐