Android触屏测试实例代码
程序员文章站
2022-05-16 12:49:56
本文实例详细描述了android触屏测试代码,可实现对触屏的点击、移动、离开等事件的处理,对于android初学者有很好的借鉴价值。
具体功能代码如下:
pac...
本文实例详细描述了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(); } } }
读者还可以在该实例的基础上完善各种事件的响应处理函数,使其功能更加丰富。
推荐阅读