用于 Droid 手机和 Xoom 的 Android mdpi 可绘制对象?

标签 android

我有一个为 Droid(手机)开发的应用程序。在应用程序中,我使用:

位图 b = BitmapFactory.decodeResource(getResources(), R.drawable.bg);

在应用程序中设置背景位图。位图大小为 480x800 这是 Droid 的 WVGA 屏幕尺寸(没有状态栏或标题栏)。

两个问题: 当我旋转手机时,Droid 进入横向模式并且背景不再正确显示。当我不使用布局时,如何告诉应用它需要使用横向模式?

其次,当我在 Xoom 上运行这个应用程序时,它选择了 mdpi 可绘制对象,它与 Xoom 屏幕的大小相去甚远。如何定义第二个大小为 1280x800 的 mdpi 可绘制对象?我想如果我使用布局,我会创建一个 layout-xlarge 目录并在该布局的 ImageView 中放置一个 1280x800 背景,对吗?

谢谢!

更新*: 感谢您的精彩回答!我给大家投了赞成票。 我更新了代码,为 Xoom 使用 drawable-xlarge-port/drawable-xlarge-land,为 Droid 使用 drawable-port-mdpi/drawable-land-mdpi。

我没有使用布局,因为我需要直接在 Activity Canvas 上绘制,并且不确定如何从我扩展 View 的类中使用 setContentView() 并挂接到 onDraw() 以执行动画(将需要单独发帖)。

如果我能自己弄清楚如何旋转图像,我确实可以取消 drawable-*-land 和 *-port 目录。

最佳答案

您可以定位可绘制对象,而不仅仅是布局。在第一种情况下,您需要 drawable-hdpi-large-long-land(假设您让系统处理旋转事件并重新创建您的 Activity ),并且 drawable-mdpi-xlarge第二个。

当然,尝试为每一种可以想到的手机分辨率提供单独的图像是徒劳的;部分是因为你需要很多,部分是因为一些目标是不可区分的(例如,854x480 和 800x480 手机都是 hdpi-large-long,尽管有 54px 的差异)。尝试使用可缩放图像、可拉伸(stretch) 9patch 或可以固定在右上角的图像(您可以使用 XML 定义的位图可绘制对象来定义拉伸(stretch)行为)。

关于用于 Droid 手机和 Xoom 的 Android mdpi 可绘制对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5540538/

相关文章:

android - 如何使用 com.facebook.fresco 和 com.parse :parse-android without confilicting each other?

android - DialogFragment 缺少内容,只显示 "ok"按钮

android - 如何在Android中使用FFMPEG命令制作可以无限次播放/循环的视频?

android - Binder 防止垃圾回收

android - 如何将SpannableString写入parcel?

java - Android 6.0 - 使用 PlaybackParams 设置视频速度

android - 如何刷新 RecyclerView + PagedListAdapter 并滚动到顶部?

java - 我的库未检测到其gradle文件中提到的外部依赖项

Android - 是否可以有硬件交互方法的内容提供者?

android - 寻找关于如何在我的应用程序中可靠地维护联系人列表的明确答案