关于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不提示导入!!!
原因:
出现这样问题的原因是由于同样的图片,在不同屏幕分辨率手机上显示的时候,图片的长宽却有差异。通过调用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不提示导入!!!
相关文章推荐
- android studio 查看 /data/data/ 目录资源
- android TypedArray
- Android开发之自定义控件
- Android:Activity中onCreate方法的参数及用途
- Android之Design Support Library整理
- android 系统应用在运行时被卸载
- Android SQLite的使用
- Best practices in Android development
- Android中的HandlerThread和IntentService
- android编译与反编译
- Android 将assets中的文件拷贝到本地SD卡使用
- Android开发学习之路--【前言】
- Android开发之蓝牙开发
- Android获取代码Color资源
- android开发之路05
- Android为RecyclerView添加头部底部的简单方法
- Android 利用shape自定义进度条样式
- 《Android开发艺术探索》读后笔记1
- Android的DisplayUtil
- Android之Notification的多种用法