您的位置:首页 > 移动开发 > Android开发

关于Android连连看中的图片分布

2016-03-05 14:19 267 查看
一、连连看中出现触点偏移的问题

原因:

出现这样问题的原因是由于同样的图片,在不同屏幕分辨率手机上显示的时候,图片的长宽却有差异。通过调用Bitmap的getHeight() 和getWidth()就知道这个结果了。比如在windows上查看长宽为64的图片,实际在我手机上Height和Width的值都是96.所以,在没有指定图片显示区域的大小的时候,canvas在显示图片时会用图片自身的长宽来显示。因此就出现了这样的情况:由于我们通过windows工具看到图片的长宽为64,但是实际画的时候却是长宽为96.由于我们自己写的简单测试程序,在代码里面把图片的长宽hard
code为64,因此,假如我们点击水平的第二个图片,在收到touch event的事件后,假如我们收到的坐标为(假设我们从(0,0)开始显示图片)(130,80),但是我们通过程序计算得到的:130除以64为2.1,80除以64为1.25,通过计算得到的是第二行的第三个图片。这时程序就错误的选中了第二行的第三个图片,与我们实际选择的不符合。

(本来视觉上在第一行的第二个人图标上,但实际上触点离原点的距离远远大于两个图片的宽度或者远远小于实际触点离原点的距离)

解决方案:

为了适应各种手机,我们通过具体手机的分辨率计算得到每个图片可以显示的长宽,然后让图片在我们计算好的区域显示。同时,我们计算坐标时也要用我们通过分辨率计算出来的长和宽。

(也就是说我们先不设定图片的长宽,而是通过实际测得手机中的图片大小为依据)

获得屏幕大小的程序:

DisplayMetrics dm = new DisplayMetrics();
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(dm); 
<span style="white-space:pre"> </span>PIECE_WIDTH= PIECE_HEIGHT = dm.widthPixels/(xSize); 后面的xSize为需要放置的图片的数量。
此处一定要注意手动import
android.app.Activity;

Eclipse不提示导入!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: