【问题标题】:am I supposed to make images larger for tablets, or same size as handset?我应该为平板电脑制作更大的图像,还是与手机大小相同?
【发布时间】:2013-12-18 08:34:40
【问题描述】:

我正在努力思考缩放图像的想法,这对我来说是全新的。我终于明白,对于图标启动器,你想要 mdpi 的 48x48 和 hdpi 的 72x72 之类的东西。为此,我使用谷歌提供的工具没有问题。我有一张从网上下载的 178x283 像素、96 dpi 的图像。当我的(4 英寸 480x800hdpi)手机模拟器看到这个时,图像非常大,大约占屏幕的一半。在我的 (10inch1280x800mdpi) 手机上,它看起来更小,实际上和原来的完全一样。这不是我想要的吧?我希望如何缩放图像?我希望它们与原始尺寸相同,还是在小手机上更小,在大手机上更大。我假设在这一步之后我创建了正确的限定符并在这个线程中完成了数学以调整图像的大小? Supporting multiple screens on Android。我忘了提到android OS会自动做什么,因为我想如果我有一个可绘制的图像,那么它会自动使较小的手机有一个小图像,而较大的手机有一个大图像,但这并没有发生(假设我不硬编码值)。

EDIT: 决定使用这个http://android-ui-utils.googlecode.com/hg/asset-studio/dist/nine-patches.html

EDIT2: 我现在已经得到了我想要的图像和布局,但是我的 10 英寸无法使用正确的布局文件夹。我有这个

layout
layout-land
layout-sw720dp
layout-sw720dp-land

它仅在我将它们命名为 layout-xlarge 时才有效,它已被弃用,它提供了什么

edit:是不是因为 sw 限定符只适用于 3.3+ 而我的目标是 2.3+?

【问题讨论】:

  • 只有你自己才能确定你想要什么;如果它看起来不像你所期望或想要的,那么不,这是不对的。我相信对于许多图像,使用 Photoshop 或类似工具重新调整它们的大小并为每个定义提供适当的图像会更容易。

标签: android android-layout


【解决方案1】:

您想要缩放图像吗?还是您希望它们保持特定大小。

如果你想让它们缩放,你可以在你的布局中使用这样的东西

    android:adjustViewBounds="true"

然后使用 layout_width 或 maxWidth(分别为长度)设置您想要的尺寸。

然后按你想要的方式缩放:

    android:scaleType="centerInside"

如果图像是像素化的,那么您需要在 res 文件夹下为每个屏幕尺寸添加更大的图像。

【讨论】:

  • 现在我已经有了 adjustviewbounds true 并使用 wrap_content 或 match_parent。我阅读了硬编码值的不良做法,所以我不想这样做,除非它是唯一的方法。我想我有景观的 scalefitstart 。问题是大手机的图像很小,而小手机的图像很大。如果它为我自动调整大小,为什么它在大平板电脑上这么小
  • 因为它正在包装内容...更多像素,更小的图像,更少的像素,更大的图像。硬编码某些值是不好的做法,但布局不应该成为问题某些东西...例如 textSizes 等。除非您想以编程方式将大小设置为特定的屏幕百分比。
  • 您还可以将不同大小的图像放入您的drawables-mdpi、hdpi等文件夹中。
【解决方案2】:

为 10 英寸平板电脑和 7 英寸平板电脑创建不同的布局,然后使用以下代码:

     DisplayMetrics dm = new DisplayMetrics();
            getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);

            final int height = dm.heightPixels;
            final int width = dm.widthPixels;

          if ((height == 1280) && (width == 800)) {
                        setContentView(R.layout.10inchLayout);
                    }else if ((heig

ht == 1024) && (width == 600)) {
                    setContentView(R.layout.7inchLayout);
                }

                 else {
                    setContentView(R.layout.PhoneinchLayout);
                }

希望对你有帮助。

【讨论】:

  • 谢谢你,我目前在学习 android 方面还没有那么远,我正在学习一个超级慢的 coursera 课程哈哈。我正在寻找一种简单的方法让我的 10 英寸 mdpi 使用更大的图像,我尝试过 drawables-sw600dp 和 sw600dp-mdpi,但它总是有这么小的图像。
  • 我认为使用高度和宽度来识别 10" 或 7" 屏幕不是一个好主意。由于 Nexus 7 2013 (7") 在 7" 上是 1920x1080。 @Immanuel - 你的方法只会失败。更好的方法是使用资源文件夹,例如 layout-sw600dp 用于 7" 和 layout-sw720dp 用于 10"。在此处查看详细说明 - android-developers.blogspot.com/2011/07/…
  • @Varun ye,这可能不是一个好方法,因为有这么多屏幕尺寸不同的设备,您可以使用此代码获得最流行的尺寸,您建议的内容也将使用在我未来的安卓应用中
猜你喜欢
  • 2017-12-01
  • 2012-04-22
  • 1970-01-01
  • 1970-01-01
  • 2016-01-09
  • 2017-06-01
  • 1970-01-01
  • 2012-12-18
  • 1970-01-01
相关资源
最近更新 更多