我正在开发一个应用程序,该应用程序在启动时会从网络下载图像并将其显示在主要活动中。
我担心的是此图像在具有不同屏幕密度的设备上的大小。
例如:假设我正在下载一个 400x200 像素的图像。它会在 Galaxy S (480x800 res) 和 Galaxy S3 (1280x720 res) 上显示为 400x200,还是在 Galaxy S3 上调整为更大的尺寸?
关于它如何工作以及在处理下载的图像时如何与不同屏幕兼容的任何提示?
非常感谢。
我正在开发一个应用程序,该应用程序在启动时会从网络下载图像并将其显示在主要活动中。
我担心的是此图像在具有不同屏幕密度的设备上的大小。
例如:假设我正在下载一个 400x200 像素的图像。它会在 Galaxy S (480x800 res) 和 Galaxy S3 (1280x720 res) 上显示为 400x200,还是在 Galaxy S3 上调整为更大的尺寸?
关于它如何工作以及在处理下载的图像时如何与不同屏幕兼容的任何提示?
非常感谢。
除非网站做了一些花哨的用户代理切换来为请求的图像提供不同的分辨率,否则图像文件应该是相同的。但是,在显示图像时,它将调整大小以适应屏幕(例如,如果在 ImageView 中缩放)。由于不同设备的内存限制不同,如果您检索的图像未进行下采样,则在显示时可能会遇到内存不足错误(文件大小保持不变,只是内存大小是这里的问题)。
假设您在 ImageView 中显示图像,您确实需要关注以下几件事:
ImageView 上的 layout_width/layout_height 和 scaleType 设置。
Android 将根据这些设置处理放大/缩小。
如果需要,您可以动态调整宽度/高度。使用类似于以下的代码:
// banner image layout adjustment
LayoutParams lp = mImageView.getLayoutParams();
lp.width = mImageView.getDrawable().getIntrinsicWidth() ;
lp.height = mImageView.getDrawable().getIntrinsicHeight() ;
mImageView.setLayoutParams(lp);
但要小心将此视图保持在一些预定义的范围内……例如设备屏幕的宽度/高度。