Android mdpi drawables可用于Droid手机和Xoom吗?

时间:2011-04-04 15:13:17

标签: android

我有一个为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目录。

3 个答案:

答案 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