我有一个为Droid(手机)开发的应用程序。在应用程序中,我使用:
位图b = BitmapFactory.decodeResource(getResources(),R.drawable.bg);
在应用程序中设置背景位图。位图的大小为480x800 这是Droid的WVGA屏幕尺寸(没有状态或标题栏)。
两个问题: 当我旋转手机时,Droid进入横向模式,背景不再正确。当我不使用布局时,如何告诉应用程序使用横向模式?
其次,当我在Xoom上运行这个应用程序时,它会选择mdpi drawable,它远不及Xoom屏幕的大小。如何定义具有1280x800大小的第二个mdpi drawable?我想如果我使用布局,我会创建一个layout-xlarge目录并在该布局的imageview中放置1280x800背景,对吗?
谢谢!
更新 * : 谢谢你的答案!我赞成所有人。 我更新了代码,使用了Xoom的drawable-xlarge-port / drawable-xlarge-land和Droid的drawable-port-mdpi / drawable-land-mdpi。
我没有使用布局,因为我需要直接绘制到活动画布上,并且不确定如何在我扩展View并挂钩到onDraw()的类中使用setContentView()以进行动画(将需要单独发布)。
如果我能弄清楚如何自己旋转图像,我确实可以取消绘制 - * - land和* -port目录。
答案 0 :(得分:3)
您可以定位drawable,而不仅仅是布局。您希望drawable-hdpi-large-long-land
用于第一种情况(假设您让系统处理轮换事件并重新创建您的活动),并且drawable-mdpi-xlarge
用于第二种情况。
当然,尝试为每个可以想象的手机分辨率提供单独的图像是徒劳的;部分是因为你需要很多,部分是因为有些目标不可区分(854x480和800x480手机都有hdpi-large-long,例如,尽管有54px的差异)。尝试使用可缩放图像,可伸展的9patch或可以在右上角修复的图像(可以使用XML定义的bitmapdrawable定义拉伸行为)。
答案 1 :(得分:1)
当我旋转手机时,Droid 进入景观模式和 背景不再适合。 如何告诉应用程序需要使用它 横向模式,当我不使用 布局?
如果您确实检测到旋转,那么the Device class就可以了。
其次,当我运行这个应用程序时 Xoom,它选择了mdpi drawable 远不及Xoom的大小 屏幕。我如何定义第二个mdpi 尺寸为1200x800的drawable?
您可以使用取决于设备分辨率的各种图像文件夹:ldpi,mdpi,hdpi或xhdpi。您应该查看the following page以获得对各种分辨率和屏幕尺寸的适当支持。
答案 2 :(得分:1)
这是正确的。您也可以混合使用纵向,横向和其他修改器。不要忘记将它们与您的drawable以及布局(以及任何其他资源目录)一起使用。如果它是相同的布局和不同的drawable,那么你只需要将它应用于drawable,例如。
您需要查看资源目录的文档,并使用大小和方向目录修饰符。
例如:
drawable-land-mdpi
drawable-xlarge-land
layout-port-mdpi
等
有关详细信息,请参阅:
http://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources
http://developer.android.com/guide/practices/screens_support.html#qualifiers