gpt4 book ai didi

Android 布局和自动调整图像大小

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:23:36 26 4
gpt4 key购买 nike

我的 Android 应用目前有两种布局,分别是启动画面、纵向和横向。两者都使用相同的简单格式 - 与屏幕大小相同的图像,采用简单的线性布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="fitCenter"
android:src="@drawable/splash_p"
/>
</LinearLayout>

使用的图像为 320w x 480h,Android 会自动调整其大小以适应屏幕,无论设备的屏幕尺寸如何。显然,例如,为平板电脑调整大小时,图像不那么清晰。

我应该在这里指出,我的目标是尽可能减少最终应用程序的安装大小,并且我知道我可以为每个不同的屏幕尺寸包含相同图像的不同布局和尺寸。

我的启动画面由屏幕顶部三分之一处的应用程序名称和底部三分之二处的图像组成。为了节省内存,我想将应用程序名称和图像裁剪成两个单独的图像,然后在纵向模式下的设备上以线性垂直布局显示它们。然后,我将使用图像的线性水平布局,然后使用横向模式的应用程序名称。

对于纵向布局,我有这个:

     <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical">
<LinearLayout android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical">
<View android:layout_height="45dp" android:layout_width="45dp" />
<ImageView android:layout_height="fill_parent"
android:src="@drawable/splashtext"
android:scaleType="fitCenter"
android:layout_gravity="center"
android:layout_width="fill_parent"></ImageView>

<View
android:layout_height="35dp"
android:layout_width="35dp" />

<ImageView
android:scaleType="fitCenter"
android:src="@drawable/splashpic"
android:layout_height="fill_parent" android:scaleType="fitCenter" android:layout_width="fill_parent" android:layout_gravity="center"/>
</LinearLayout>
</LinearLayout>

当我在 eclipse 中显示上面的内容时,它在智能手机上看起来不错,但是在平板电脑上显示时图像没有按比例放大,尽管我使用了 android:scaleType="fitCenter"参数。我试过在 imageview layout_width 和 layout_height 中使用 dips 而不是 fill_parent 但这也不起作用。

我做错了什么?还有另一种方法吗?

谢谢

我已经根据 @KaHa6u 下面的帮助编辑了这个问题以包含这个修改后的 XML。所以现在我有:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<View
android:layout_height="15dp"
android:layout_width="15dp"
/>
<ImageView android:layout_height="wrap_content"
android:src="@drawable/splashtext"
android:adjustViewBounds="true"
android:scaleType="fitXY"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_weight="1">
</ImageView>


<View
android:layout_height="15dp"
android:layout_width="15dp"
/>
<ImageView
android:scaleType="fitXY"
android:src="@drawable/splashpic"
android:adjustViewBounds="false"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_weight="4"
android:layout_gravity="center"/>
</LinearLayout>
</LinearLayout>

它会垂直放大,但不会水平放大,所以当屏幕尺寸增加时,我最终会得到又高又瘦的图像。

最佳答案

@basinbasin

我刚刚遇到的情况和你解释的很相似。我需要在布局顶部有一个 ImageView,它必须仅水平拉伸(stretch)并在手机进入横向时保持其高度。我成功了:

<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/main_header"
android:scaleType="fitXY"
/>

当然还有 Activity 的属性:

<activity android:configChanges="keyboardHidden|orientation">

希望这对您有所帮助。谢谢。

关于Android 布局和自动调整图像大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6832426/

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