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();
}
}
}
读者还可以在该实例的基础上完善各种事件的响应处理函数,使其功能更加丰富。


猜你喜欢
- 引用开源框架通过AsyncHttpClient进行文件上传,具体内容如下一、步骤:1.添加权限(访问网络权限和读写权限)2.获取上传文件路径
- 详解Java中HashSet和TreeSet的区别1. HashSetHashSet有以下特点:不能保证元素的排列顺序,顺序有可能发生变化不
- 通常我们用惯的ListView每一项的布局都是相同的,只是控件所绑定的数据不同。但单单只是如此并不能满
- 这里以电视遥控器的一个例子来引出桥接模式解决的问题,首先,我们每个牌子的电视机都有一个遥控器,此时我们能想到的一个设计是——把遥控器做为一个
- 在 Java SE 6 所提供的诸多新特性和改进中,值得一提的是为 Java 程序提供数据库访问机制的 JDBC 版本升级到了 4.0, 这
- 一、简介本文主要介绍jmeter在控制台在点击执行之后底层所做的一些主要事情及内容,由于便于断点调试采用GUI方式进行操作二、配置简介为了调
- 前言我们在日常开发中,经常会用到一个系统需要链接多个数据库来实现业务的需求,比如多个系统之间数据调用、两个数据之间同步等等。今天给大家分享使
- springmvc下载中文文件名称为下划线springboot项目中,在下载文件的时候,通过封装ResponseEntity,将文件流写入b
- package list;import java.util.ArrayList;/** * Java约瑟夫问题: n个人(不同id
- 在多线程处理问题时,无法通过@Autowired注入bean,报空指针异常,在线程中为了线程安全,是防注入的,如果要用到这个类,只能从bea
- 目录前沿快速开始引入依赖定义接口配置类开始调用json序列化接口层面指定header:指定Encoder跟Decoder使用 * 注解详解@
- 在开发中,用到springboot项目,当打包后部署运行时,出现了这个问题,网上搜了好多,又是加META-INF配置,又是加啥的,感觉spr
- 上篇博客我们了解了请求参数的获取,那么获取到请求参数之后,需要对参数进行出来,然后进行数据响应。那么这篇博客我们就来了解 Controlle
- 快速幂取模算法的引入是从大数的小数取模的朴素算法的局限性所提出的,在朴素的方法中我们计算一个数比如5^1003%31是非常消耗我们的计算资源
- 我以2018版的intellij idea为例一.创建JavaWeb1.第一步点击左上角的File-->New-->Projec
- Mapper 就是“映射”的意思,Mapper 文件时 Mybatis 中的 SQL 语句的配置文件
- 介绍Java中介者模式(Mediator Pattern)是一种行为设计模式,它可以降低多个对象之间的耦合性,通过一个中介者对象来协调这些对
- SnackBar是DesignSupportLibrary中的一个重要的控件,用于在界面下面提示一些关键信息,跟Toast不同的地方是Sna
- 互连网早期的时候,主机间的互连使用的是NCP协议。这种协议本身有很多缺陷,如:不能互连不同的主机,不能互连不同的操作系统,没有纠错功能。为了
- 前言本文主要介绍了关于unity代码C#封装为dll的相关内容,分享出来供需要的朋友们学习,下面话不多说了,来一起学习学习吧。方法如下1 V