zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

Android触屏测试实例代码

2023-06-13 09:15:40 时间

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

具体功能代码如下:

packagecom.test;
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.util.DisplayMetrics;
importandroid.util.Log;
importandroid.view.MotionEvent;
importandroid.view.View;
importandroid.widget.AbsoluteLayout;
importandroid.widget.Button;
importandroid.widget.ImageView;
importandroid.widget.Toast;
publicclassTouchActivityextendsActivity{
/*声明ImageView变量*/
privateImageViewmImageView01;
/*声明相关变量作为存储图片宽高,位置使用*/
privateintintWidth,intHeight,intDefaultX,intDefaultY;
privatefloatmX,mY;
/*声明存储屏幕的分辨率变量*/
privateintintScreenX,intScreenY;
publicvoidonCreate(BundlesavedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

/*取得屏幕对象*/
DisplayMetricsdm=newDisplayMetrics();
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(newButton.OnClickListener()
{
@Override
publicvoidonClick(Viewv)
{
RestoreButton();
}
});
}

/*覆盖触控事件*/
publicbooleanonTouchEvent(MotionEventevent)
{
/*取得手指触控屏幕的位置*/
floatx=event.getX();
floaty=event.getY();

try
{
/*触控事件的处理*/
switch(event.getAction())
{
/*点击屏幕*/
caseMotionEvent.ACTION_DOWN:
picMove(x,y);
break;
/*移动位置*/
caseMotionEvent.ACTION_MOVE:
picMove(x,y);
break;
/*离开屏幕*/
caseMotionEvent.ACTION_UP:
picMove(x,y);
break;
}
}catch(Exceptione)
{
e.printStackTrace();
}
returntrue;
}
/*移动图片的方法*/
privatevoidpicMove(floatx,floaty)
{
/*默认微调图片与指针的相对位置*/
mX=x-(intWidth/2);
mY=y-(intHeight/2);

/*防图片超过屏幕的相关处理*/
/*防止屏幕向右超过屏幕*/
if((mX+intWidth)>intScreenX)
{
mX=intScreenX-intWidth;
}
/*防止屏幕向左超过屏幕*/
elseif(mX<0)
{
mX=0;
}
/*防止屏幕向下超过屏幕*/
elseif((mY+intHeight)>intScreenY)
{
mY=intScreenY-intHeight;
}
/*防止屏幕向上超过屏幕*/
elseif(mY<0)
{
mY=0;
}
/*通过log来查看图片位置*/
Log.i("jay",Float.toString(mX)+","+Float.toString(mY));
/*以setLayoutParams方法,重新安排Layout上的位置*/
mImageView01.setLayoutParams
(
newAbsoluteLayout.LayoutParams
(intWidth,intHeight,(int)mX,(int)mY)
);
}

/*还原ImageView位置的事件处理*/
publicvoidRestoreButton()
{
intDefaultX=((intScreenX-intWidth)/2);
intDefaultY=((intScreenY-intHeight)/2);
/*Toast还原位置坐标*/
mMakeTextToast
(
"("+
Integer.toString(intDefaultX)+
","+
Integer.toString(intDefaultY)+")",true
);

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

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

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