注:1 只做了一套地图图片,放在SD卡上,不考虑做多套不同分辨率下应用的地图;
2 因打算仅使用SDK包中基本的类(如cavas,surface等)做这个小应用,所以不会采用安卓SDK中一些现有的图片控键,或开源的SDK。
敬请高手能帮帮忙,指点指点我这个新手,感激不尽!
7 个解决方案
#1
做一套针对所有手机dpi的适配,就可以用一套图了,网上有很多相关的文章。
#2
自定义布局,
#3
大哥,能说得详细点吗?谢谢了。
#4
简单点说就是 dp2px
#5
不存在所谓的“所有dpi的适配”。那种缩放,也不是什么“所有dpi的”,而只能是“多套不同分辨率下”。只不过,如果某个dpi下的不存在,那么就找到最接近的分辨率而进行缩放。因此其实你已经看到这个方法的不靠谱指出。
在当今的手机、单板机下,分辨率、屏幕大小,有上百种了,可不能像2、3年前的iOS那样了。现在讲的是“响应式布局”。
在响应式布局的概念之下,就不采用很来记得缩放机制了。比如说你的地图自动的停靠到背景窗口的内部,你的按钮自动停靠在右边,当宽度小于某个数值时自动将某个部分下移......
不管地图的窗口有多大,不管它的宽和高有多大,都不影响里边的瓦片。不管是3行2列瓦片,还是5行7列瓦片的地图窗口,不管地图向左右还是向上下移动,完全看不到的瓦片就可以销毁了,而至看到部分的瓦片会走动被窗口剪切。因此地图瓦片在手机上跟桌面、网页上是一样的自动剪切、自动加载或者移除,根本没什么特别的。
除非,你之前根本没有这么设计过。
在当今的手机、单板机下,分辨率、屏幕大小,有上百种了,可不能像2、3年前的iOS那样了。现在讲的是“响应式布局”。
在响应式布局的概念之下,就不采用很来记得缩放机制了。比如说你的地图自动的停靠到背景窗口的内部,你的按钮自动停靠在右边,当宽度小于某个数值时自动将某个部分下移......
不管地图的窗口有多大,不管它的宽和高有多大,都不影响里边的瓦片。不管是3行2列瓦片,还是5行7列瓦片的地图窗口,不管地图向左右还是向上下移动,完全看不到的瓦片就可以销毁了,而至看到部分的瓦片会走动被窗口剪切。因此地图瓦片在手机上跟桌面、网页上是一样的自动剪切、自动加载或者移除,根本没什么特别的。
除非,你之前根本没有这么设计过。
#6
大哥,我想的问题的,同一级的切片集,拼接形成地图以后,在不同的手机看到相同级别地图的尺寸大小都是一样的,也就是说同一张图片在所有手机屏幕上占用的长宽是一样的。比如假设一张图片在电脑上看到的原始尺寸是5cm*5cm(像素256*256),那我要求它在任何分辨率,任何尺寸的手机上所占的长宽都是5cm*5cm,而不去考虑原始图的像素是多少。
#7
正好今天我要培训适配的内容。看到相关的我就来献个丑。
我们都知道: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都是这么长的物理长度。然后代码里面去处理缩放。
不知道我有没有说明白,当然如果我有说错了的地方,也请大家不吝指正。
我们都知道: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都是这么长的物理长度。然后代码里面去处理缩放。
不知道我有没有说明白,当然如果我有说错了的地方,也请大家不吝指正。
#1
做一套针对所有手机dpi的适配,就可以用一套图了,网上有很多相关的文章。
#2
自定义布局,
#3
大哥,能说得详细点吗?谢谢了。
#4
简单点说就是 dp2px
#5
不存在所谓的“所有dpi的适配”。那种缩放,也不是什么“所有dpi的”,而只能是“多套不同分辨率下”。只不过,如果某个dpi下的不存在,那么就找到最接近的分辨率而进行缩放。因此其实你已经看到这个方法的不靠谱指出。
在当今的手机、单板机下,分辨率、屏幕大小,有上百种了,可不能像2、3年前的iOS那样了。现在讲的是“响应式布局”。
在响应式布局的概念之下,就不采用很来记得缩放机制了。比如说你的地图自动的停靠到背景窗口的内部,你的按钮自动停靠在右边,当宽度小于某个数值时自动将某个部分下移......
不管地图的窗口有多大,不管它的宽和高有多大,都不影响里边的瓦片。不管是3行2列瓦片,还是5行7列瓦片的地图窗口,不管地图向左右还是向上下移动,完全看不到的瓦片就可以销毁了,而至看到部分的瓦片会走动被窗口剪切。因此地图瓦片在手机上跟桌面、网页上是一样的自动剪切、自动加载或者移除,根本没什么特别的。
除非,你之前根本没有这么设计过。
在当今的手机、单板机下,分辨率、屏幕大小,有上百种了,可不能像2、3年前的iOS那样了。现在讲的是“响应式布局”。
在响应式布局的概念之下,就不采用很来记得缩放机制了。比如说你的地图自动的停靠到背景窗口的内部,你的按钮自动停靠在右边,当宽度小于某个数值时自动将某个部分下移......
不管地图的窗口有多大,不管它的宽和高有多大,都不影响里边的瓦片。不管是3行2列瓦片,还是5行7列瓦片的地图窗口,不管地图向左右还是向上下移动,完全看不到的瓦片就可以销毁了,而至看到部分的瓦片会走动被窗口剪切。因此地图瓦片在手机上跟桌面、网页上是一样的自动剪切、自动加载或者移除,根本没什么特别的。
除非,你之前根本没有这么设计过。
#6
大哥,我想的问题的,同一级的切片集,拼接形成地图以后,在不同的手机看到相同级别地图的尺寸大小都是一样的,也就是说同一张图片在所有手机屏幕上占用的长宽是一样的。比如假设一张图片在电脑上看到的原始尺寸是5cm*5cm(像素256*256),那我要求它在任何分辨率,任何尺寸的手机上所占的长宽都是5cm*5cm,而不去考虑原始图的像素是多少。
#7
正好今天我要培训适配的内容。看到相关的我就来献个丑。
我们都知道: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都是这么长的物理长度。然后代码里面去处理缩放。
不知道我有没有说明白,当然如果我有说错了的地方,也请大家不吝指正。
我们都知道: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都是这么长的物理长度。然后代码里面去处理缩放。
不知道我有没有说明白,当然如果我有说错了的地方,也请大家不吝指正。