gpt4 book ai didi

android - Android XLarge屏幕如何处理?

转载 作者:搜寻专家 更新时间:2023-11-01 09:06:24 27 4
gpt4 key购买 nike

我开发了一个时钟小部件。在许多设备上看起来都不错。摩托罗拉 Xoom 除外,因为它属于 XLARGE 类别。

这是clock.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="#00000000"
android:layout_width="wrap_content"
android:layout_height="wrap_content">

<AnalogClock android:id="@+id/AnalogClock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:dial="@drawable/widgetclock"
android:hand_hour="@drawable/widgethour"
android:hand_minute="@drawable/widgetminute" />

<!-- Time Row -->
<LinearLayout
android:id="@+id/lltimeheaderrow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="center|top"
android:layout_marginTop="45dp"
android:visibility="gone">

<!-- TIME -->
<LinearLayout android:id="@+id/llTimeDefault"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center">

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">

<TextView
android:id="@+id/HOUR"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/my_gray"
android:textStyle="bold"
android:textSize="15sp"/>

<TextView
android:id="@+id/MINUTE"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/my_gray"
android:textStyle="bold"
android:textSize="15sp" />
</LinearLayout>

<TextView
android:id="@+id/AM_PM"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/my_gray"
android:textStyle="bold"
android:textSize="13sp"
android:padding="1dp" />
</LinearLayout>
</LinearLayout>

<!-- Calendar Graph -->
<LinearLayout
android:id="@+id/llCalGraph"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center|left"
android:layout_marginLeft="45dp">
<FrameLayout android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:id="@+id/CalendarImg"
android:src="@drawable/calendar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView android:id="@+id/DateDayG"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center|top"
android:layout_marginTop="3dp"
android:textSize="11sp"
android:textStyle="bold"
android:textColor="@color/my_gray"
android:shadowColor="@color/my_black"
android:shadowDx="1"
android:shadowDy="1"
android:shadowRadius="2"
></TextView>
<TextView android:id="@+id/DateNoG"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="5dp"
android:textSize="25sp"
android:textColor="@color/my_gray"
></TextView>
</FrameLayout>

</LinearLayout>

<!-- BATTERY -->
<LinearLayout
android:id="@+id/llBattGraph"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="center|right"
android:layout_marginRight="45dp">
<FrameLayout android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:id="@+id/BatteryImg"
android:src="@drawable/batt_00"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<ImageView
android:id="@+id/BatteryFlashing"
android:src="@drawable/flashing"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="13dp"
android:layout_marginLeft="2dp"
android:visibility="gone" />
<TextView
android:id="@+id/BatteryLevel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/my_gray"
android:textSize="18sp"
android:layout_gravity="center" />


</FrameLayout>
</LinearLayout>

<!-- Weather Row -->
<LinearLayout
android:id="@+id/llweatherrow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="center|bottom"
android:layout_marginBottom="45dp">

<!-- WEATHER IMAGE -->
<LinearLayout
android:id="@+id/llWeatherImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="visible"
android:layout_gravity="center">

<ImageView android:id="@+id/ivWeather"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/w3200"
/>
</LinearLayout>

</LinearLayout>

</FrameLayout>

小部件上基本上有 4 个元素。上,下。左右部分。我只是使用 FrameLayout 作为基本布局,每个元素都使用 LinearLayout,每个角的重力为 45dp。

这是小部件在 Xoom 上的样子我希望元素位置应该在我绘制的红色圆圈上。

  1. 我应该使用哪种布局组合最好?你能推荐一下吗?
  2. 假设我坚持使用这种布局。我如何为 Xoom 设备提供替代布局?我试图将 clock.xml 放在 layout-xlarge 和 drawable-xlarge 上,但没有...

最佳答案

最好和更简洁的方法是创建一个文件夹 layout-xlarge 并在其中包含将在目标设备具有 xlarge 布局时加载的 clock.xml .

通过这种方式,您可以根据屏幕尺寸、密度等进行不同的布局。从开发人员文档中获得 http://developer.android.com/guide/practices/screens_support.html#DeclaringTabletLayouts

另一种解决方案是将特定 45dpXdp 中的所有尺寸放入名为 dimen 的文件中的值文件夹中,然后然后在您的 xml 中将它们声明为:...="@dimen/largeButton" 并使用与之前提到的相同的方式创建相应的 values-xlarge 并添加适当的dimen 文件。

这是非常有用的机制,因为您可以根据屏幕的大小创建不同的布局,并使其能够获得每个尺寸的不同密度像素。如果您没有听说过这些条款中的任何一个,请让我提供更多详细信息。

编辑:来自文档

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

您确定是这种目录吗?到处都使用与 clock.xml 这样的布局相同的文件名?

评论的另一个编辑:

它的效率要高得多,因为您可以猜到,仅替换数字而不是加载完整布局文件夹的转换效率要高得多。尽管如此,您可以重复使用尺寸,而不是在布局之间来回检查“那个尺寸又是什么?”就像一个大按钮的固定尺寸。

更重要的是,每个文件夹都可以出于特定原因进行扩展。如果您想要相同的布局但尺寸不同,那么您应该覆盖尺寸而不是复制粘贴整个布局。更有意义,不是吗?

而努力几乎是一回事。与 layout-large/ 文件夹一样,您将拥有 values-large/。在我提供的文档和整个互联网上都有一个很好的例子。

关于android - Android XLarge屏幕如何处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11584107/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com