【问题标题】:What size in Pixels should my images be for ldpi, mdpi, ldpi, and xhdpi?对于 ldpi、mdpi、ldpi 和 xhdpi,我的图像应该是多大的像素?
【发布时间】:2014-03-28 18:12:19
【问题描述】:

在我的应用程序中,我想要一个背景是图像的屏幕。该图像将存储在 drawable 中,我知道我需要在其他可绘制文件夹中存储相同图像但不同尺寸的版本,以支持不同的屏幕尺寸/密度。

我找到了这个信息:

ldpi: Low-density screens; approximately 120dpi.
mdpi: Medium-density (on traditional HVGA) screens; approximately 160dpi.
hdpi: High-density screens; approximately 240dpi.
xhdpi: Extra high-density screens; approximately 320dpi. Added in API Level 8

不过,我的问题是,我如何知道每个文件夹的图像大小(以像素为单位)?这张图片作为背景的屏幕只能在纵向模式下查看,所以我想知道纵向布局的尺寸。

【问题讨论】:

  • 不再需要 ldpi 资产,但无论如何,用于缩放资产的比例如下 - ldpi : mdpi : hdpi : xhdpi : xxhdpi : xxxhdpi :: 3 : 4 : 6 : 8 : 12 : 16
  • 并且比例因子如下:ldpi, mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi => 0.75, 1.0, 1.5, 2.0, 3.0, 4.0
  • @Ankhwatcher,那是在谈论启动图标,全屏背景图像是否相同?我认为是的。
  • 一般来说,您不能拥有“全屏背景图像”,就像您在 Web 浏览器中不能拥有一样。设备屏幕,如浏览器窗口,可以有任意分辨率。您首先需要确定处理该问题的策略(例如,将背景图像叠加在纯色全屏背景之上,并将图像设计为融入该背景)。然后你需要考虑屏幕密度。

标签: android size screen pixels dpi


【解决方案1】:

对不起用户,我第一次没有阅读你的整个问题。

如果您要设置背景,则可以使用大图和create a scaled bitmap from it

您需要使用一种方法来测量屏幕尺寸,以确定您应该将位图缩小到什么尺寸。 例如:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
metrics.heightPixels;
metrics.widthPixels;

然后缩放位图:

Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.welcome_background);
int nh = (int) (bm.getHeight() * (512.0 / bm.getWidth()));
Bitmap scaled = Bitmap.createScaledBitmap(bm, 512, nh, true);
BitmapDrawable bitmapDrawable = new BitmapDrawable(getResources(), scaled);
welcomeScreen.setBackgroundDrawable(bitmapDrawable);

(此代码不会缩放到显示大小,它只是缩放到 512 像素的宽度,但它应该作为示例)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    相关资源
    最近更新 更多