如何解决,在不同分辨率安卓手机上,加载SD卡上相同图片,显示的长宽度一样?

zw7521 2015-09-21 11:28:02
正在做一个安卓的地图应用。地图图片资源就只有一套,在加载同一级别地图切片时(大小固定为256*256像素),如何保持在不同分辨率手机下,同一张地图图片占用手机屏幕的尺寸一样(长度和宽度)。最好能和电脑上显示的效果一样。

注:1 只做了一套地图图片,放在SD卡上,不考虑做多套不同分辨率下应用的地图;
2 因打算仅使用SDK包中基本的类(如cavas,surface等)做这个小应用,所以不会采用安卓SDK中一些现有的图片控键,或开源的SDK。

敬请高手能帮帮忙,指点指点我这个新手,感激不尽!



...全文
230 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
leobert_lan 2015-09-22
  • 打赏
  • 举报
回复
正好今天我要培训适配的内容。看到相关的我就来献个丑。 我们都知道:android中推荐使用dp来作为长度单位。dp(dip)是设备独立像素,它弱化了屏幕密度给px带来的影响。不谈这些扯淡的,可以这样说:dp直接反应物理长度。 而楼主想要的效果是什么呢?我看题目似乎是按照屏幕比例,也就是说,屏幕越大,资源越大。看回复五楼的时候似乎是想要物理大小一定。 OK,想要怎么样的效果,是楼主说了算的。再看了看题目,似乎楼主真的是要图片显示的物理长度一定。 如果想要物理大小一样,那么就不要想px的事情,因为它是受设备影响的。 地图应当(至少我这么觉得)事由小图片拼接成的。那么一定会在代码中操作了,代码中默认的单位是px,而我们上面提到用px是达不到效果的,所以我们最终得到的图片应当以dp为单位。但是图片在代码中能以dp为单位吗? 答案是不可以的,诸位看官不要晕,我梳理一下:大小一定>dp为单位>按照实际需求确定长度大小假设M*Ndp(dp单位)>代码中不能以dp为单位>按照设备信息,将M*N dp换算成相应的以px为单位的m*n px >将地图转换成 m*n px大小。 所以说,要做得事情是:以一款设备为基准,将cm转inch,根据分辨率信息和屏幕尺寸信息得到px,按照屏幕密度得到dp,这个dp就是定值了,随你什么设备,这个dp都是这么长的物理长度。然后代码里面去处理缩放。 不知道我有没有说明白,当然如果我有说错了的地方,也请大家不吝指正。
zw7521 2015-09-22
  • 打赏
  • 举报
回复
引用 5 楼 sp1234 的回复:
不存在所谓的“所有dpi的适配”。那种缩放,也不是什么“所有dpi的”,而只能是“多套不同分辨率下”。只不过,如果某个dpi下的不存在,那么就找到最接近的分辨率而进行缩放。因此其实你已经看到这个方法的不靠谱指出。 在当今的手机、单板机下,分辨率、屏幕大小,有上百种了,可不能像2、3年前的iOS那样了。现在讲的是“响应式布局”。 在响应式布局的概念之下,就不采用很来记得缩放机制了。比如说你的地图自动的停靠到背景窗口的内部,你的按钮自动停靠在右边,当宽度小于某个数值时自动将某个部分下移...... 不管地图的窗口有多大,不管它的宽和高有多大,都不影响里边的瓦片。不管是3行2列瓦片,还是5行7列瓦片的地图窗口,不管地图向左右还是向上下移动,完全看不到的瓦片就可以销毁了,而至看到部分的瓦片会走动被窗口剪切。因此地图瓦片在手机上跟桌面、网页上是一样的自动剪切、自动加载或者移除,根本没什么特别的。 除非,你之前根本没有这么设计过。
大哥,我想的问题的,同一级的切片集,拼接形成地图以后,在不同的手机看到相同级别地图的尺寸大小都是一样的,也就是说同一张图片在所有手机屏幕上占用的长宽是一样的。比如假设一张图片在电脑上看到的原始尺寸是5cm*5cm(像素256*256),那我要求它在任何分辨率,任何尺寸的手机上所占的长宽都是5cm*5cm,而不去考虑原始图的像素是多少。
a1070415177 2015-09-21
  • 打赏
  • 举报
回复
自定义布局,
  • 打赏
  • 举报
回复
做一套针对所有手机dpi的适配,就可以用一套图了,网上有很多相关的文章。
  • 打赏
  • 举报
回复
不存在所谓的“所有dpi的适配”。那种缩放,也不是什么“所有dpi的”,而只能是“多套不同分辨率下”。只不过,如果某个dpi下的不存在,那么就找到最接近的分辨率而进行缩放。因此其实你已经看到这个方法的不靠谱指出。 在当今的手机、单板机下,分辨率、屏幕大小,有上百种了,可不能像2、3年前的iOS那样了。现在讲的是“响应式布局”。 在响应式布局的概念之下,就不采用很来记得缩放机制了。比如说你的地图自动的停靠到背景窗口的内部,你的按钮自动停靠在右边,当宽度小于某个数值时自动将某个部分下移...... 不管地图的窗口有多大,不管它的宽和高有多大,都不影响里边的瓦片。不管是3行2列瓦片,还是5行7列瓦片的地图窗口,不管地图向左右还是向上下移动,完全看不到的瓦片就可以销毁了,而至看到部分的瓦片会走动被窗口剪切。因此地图瓦片在手机上跟桌面、网页上是一样的自动剪切、自动加载或者移除,根本没什么特别的。 除非,你之前根本没有这么设计过。
xzy2046 2015-09-21
  • 打赏
  • 举报
回复
简单点说就是 dp2px
zw7521 2015-09-21
  • 打赏
  • 举报
回复
引用 1 楼 u012301841 的回复:
做一套针对所有手机dpi的适配,就可以用一套图了,网上有很多相关的文章。
大哥,能说得详细点吗?谢谢了。

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧