多屏幕支持大屏幕和小屏幕

时间:2012-01-27 08:54:44

标签: android android-layout android-screen-support android-screen

okey,我已经阅读了很多章节,但我仍然不知道这个项目最好的做法是什么。

以下是我有一个项目[大一个:)的情况,在这个项目中,一切都是针对分辨率为480 x 800像素的屏幕完成的。

这是新要求:)。他们要求支持分辨率为240 x 320像素的设备(这种布局分辨率很小)。好到目前为止这么好:),但问题是240x320的分辨率太小,无法适应组件只需缩放布局 - 正常。我需要为小屏幕手机设计全新的设计。

这意味着如果我现在在layout-small / main.xml中的layout / main.xml中提交了文本R.id.textview1我将不会有R.id.textview1但我现在有两个组件让我们说R.id.button1和R.id.textviewsmall ...我的观点是这样的代码不起作用因为在layout / main.xml中textview1存在但是在layout-small / main.xml中没有,它会抛出异常

((TextView)findViewbyId(R.id.textview1)).setText("something");
当然,我所解释的是非常愚蠢的情绪,我有一些非常复杂的东西,但我希望你明白我想要实现的目标。

问题是实施碎片为时已晚,因为应该做很多工作。所以我需要一些指导如何做到这一点......

任何想法或一些设计指南都会有很大的帮助,谢谢......

2 个答案:

答案 0 :(得分:2)

是的,你可以这样做。 在许多应用程序中,我们可以手动设置我们想要的这种类型的布局。

为此,您首先必须以编程方式获取屏幕高度和宽度。 如果你得到它,现在一次。 你可以在Java文件中创建条件,如果屏幕高度和宽度那么左右。然后这样做。

希望你得到我的观点。

或者

如果您想通过XML设置布局,那么就制作不同的布局XML,如下所示:

res/layout/my_layout.xml             // layout for normal screen size("default")        res/layout-small/my_layout.xml       // layout for small screen size
res/layout-large/my_layout.xml       // layout for large screen size
res/layout-xlarge/my_layout.xml      // layout for extra large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation
res/drawable-mdpi/my_icon.png        // bitmap for medium density
res/drawable-hdpi/my_icon.png        // bitmap for high density
res/drawable-xhdpi/my_icon.png       // bitmap for extra high density

执行此操作后,您可以手动设置特定布局的高度和宽度。希望它能解决您的问题。

如果不是你的解决方案,请告诉我。 。

享受。 :)

答案 1 :(得分:1)

一种可能的方法是为小屏幕创建布局并指定权重属性,然后它也会在大屏幕上自行调整。如果您还使用不同密度的图像,那么在大多数情况下它可能适合您。 以下是如何在布局中指定权重。

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
 <TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="small"
android:layout_weight="0.2"
android:background="#123" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0.8"
android:text="huge"
android:background="#456"
 />
</LinearLayout>