0

目前我正在尝试为 Android 设备开发一个移动应用程序(使用 Appcelerator)。

有很多具有不同屏幕分辨率的 Android 设备。所以我基本上希望应用程序在每台 Android 设备上看起来都一样。

所以假设我在屏幕中央有一个背景图像。这是(以像素为单位)550x300。

我只是尝试将图像视图的宽度和高度设置为下降(与密度无关的像素)。所以在我的情况下:332dpx 226dp

我首先在HTC One X. 在那里,图像很好地居中,我在屏幕边缘的左侧和右侧留有一个小空间。

然后我在稍旧的设备上进行了测试,HTC Desire Z. 在那里,图像宽度比屏幕的实际宽度略大。(示例屏幕。蓝色方块代表图像)

在此处输入图像描述

所以这意味着将宽度和高度设置为dp对于图像来说也不是一个好的选择。

设置图像宽度和高度以使其在两部手机上看起来相同的好方法是什么。即,这样它们在图像的其他边缘上都有一个小的空白区域(就像我现在在 HTC One X 中一样)??

关于这个问题有什么建议吗?

编辑

感谢您提供到目前为止的信息。你们中的一些人发布了资源等链接并提出了一些建议。我会在接下来的几天内尝试解决它们,所以我可能需要几天时间才能接受答案。同时,欢迎任何想法建议。

4

5 回答 5

1

我建议使用适合的尺寸。

在目标 c 中,它看起来有点像这样......不是一个 android 程序员,但这可能会有所帮助。

CGRect frame = _textView.frame;
frame.size.height = _textView.contentSize.height;
_textView.frame = frame; 

因此,如果您能想出一种方法来获取框架大小,那么您可以以任何视图定位的方式将图像设置为该大小。

如果你不希望它占据整个屏幕而只占据侧面,那么可能会有一个适用于 android 的自动调整大小功能,这样你的图像将随着你的框架而变得灵活,这将根据手机尺寸而变化。

于 2012-08-01T20:06:32.193 回答
1

使用各种可绘制文件夹,即drawable、drawable-large、drawable-xlarge 来存储各种尺寸的背景图像资源。查看http://developer.android.com/guide/topics/resources/providing-resources.html了解更多信息。

另请参阅Android: Scale a Drawable or background image? 获取有用的信息。

于 2012-08-01T20:10:22.910 回答
0

我认为问题不在于图像更宽,而是 HTC Desire Z 上手机的屏幕宽度更小。
我认为让图像在所有设备上看起来相同的最佳方法是设置宽度/高度以编程方式。
但我认为这并不重要,因为在为多种设备开发时,您会遇到更复杂的问题。两者看起来都不错。

于 2012-08-01T20:11:51.783 回答
0

我会设置你android:layout_widthfill_parent,然后添加一个android:layout_marginLeftandroid:layout_marginRight浸入。您还可以为顶部和底部设置边距,但根据您的屏幕截图,这似乎不是问题。

作为一般规则,尽量避免为小部件设置固定的高度和宽度。这是处理不同屏幕尺寸的一个很好的参考:

http://developer.android.com/guide/practices/screens_support.html

于 2012-08-01T20:12:11.273 回答
0

所以我基本上希望应用程序在每台 Android 设备上看起来都一样。

不,你没有。你认为你有,但你真的没有。这就像试图将一张照片放入 4x6、5x7 和 8x10 的框架中一样——必须付出一些努力。您有小型手机、中型手机、大型手机、7 英寸平板电脑、10 英寸平板电脑——这些体验一样,您只需对设计进行一些宽大处理即可使其正常工作。如果您只想要图像之外的特定空间量,只需为您的 ImageView 指定 DP 单位的特定边距,例如:

<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="10dip"
    //...
    />

您应该努力使体验相同(尽管强烈建议使用不同的平板电脑布局),但您不能期望它在所有屏幕尺寸和密度上看起来都相同。

于 2012-08-01T20:22:43.693 回答