在xml中调整位图中的图像大小

时间:2016-03-15 13:14:30

标签: android xml bitmap

我是Android编程新手。最近,我开始了一个项目,并希望为Android应用程序制作一个闪屏。我在following this tutorial之后阅读并成功实现了启动画面。但是,我意识到我的应用程序徽标延伸到我的屏幕之外,如下所示:

Stretched out app logo

以下是我的background_splash.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@drawable/splash_background" />

    <item>
        <bitmap
            android:gravity="center"
            android:src="@drawable/tap" />
    </item>
</layer-list>

我试过了

android:width="75sp"
android:height="75sp"
<bitmap>中的

但它不起作用。因此,我想知道是否有一种方法可以调整图像大小(最好不使用Java代码),除了使用ImageView。任何帮助将不胜感激!

8 个答案:

答案 0 :(得分:5)

只需更改

android:gravity="center"

android:gravity="fill"

答案 1 :(得分:4)

我为我的应用设计启动画面时遇到了同样的问题(按照上面提到的相同链接和其他几个),以及一些谷歌搜索得到了我的答案。

解决方案很简单,不涉及编码。 即。您不需要在xml中指定高度和宽度。至于为什么会发生这种情况,您的图像分辨率高于,而不是下面指定的。

解决方案:

您需要提供映射到各种屏幕尺寸的各种分辨率的图像。以下是Google提供的各种显示的最小屏幕尺寸列表(全部以像素为单位): -

Android移动设备

LDPI- 426 x 320

MDPI- 470 x 320

HDPI- 640 x 480

XHDPI- 960 x 720

对于 Android平板电脑设备

LDPI- 200 x 320

MDPI- 320 x 480

HDPI- 480 x 800

XHDPI- 720 x 1280

所有您需要做的就是 调整大小 所有尺寸的 加载 < / strong> Drawable中的图像根据其尺寸(例如: drawable-hdpi 包含 hdpi 图像)并将其传递给background_splash。 xml(你可以保持相同的名称)。重建项目并运行它。应该符合您的规范。

注意:代码根本不需要更改。对于图像大小调整,您可以使用Adobe Photoshop(我发现它更容易使用)。

根据偏好,您还可以使用 9 Patch image ,以便图像的边框可以拉伸以适应屏幕的大小,而不会影响图像的静态区域。

http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch

答案 2 :(得分:2)

尝试使用项目而不是位图。

位图无法更改其大小。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@android:color/white"/> 

    <item
        android:width="200dp"
        android:height="200dp"
        android:drawable="@drawable/ic_launcher"
        android:gravity="center" />

</layer-list>

答案 3 :(得分:1)

位图不允许使用gravity =&#34; center&#34;来调整图像尺寸。并为闪屏选择一个具有特定大小的单独图标。

答案 4 :(得分:1)

试试这个不要使用drawable

如果你想改变背景颜色,将它赋予相对布局, 如果您希望将完整图像设置为使用match_parent到图像视图的scree(最适合启动画面)

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleType="fitXY"
        android:layout_centerInParent="true"
        android:src="@drawable/splash" />

</RelativeLayout>

答案 5 :(得分:1)

有更简单的方法可以做到这一点。在您的launch_background.xml文件中,删除该位图标签,然后像这样添加它

 <item
    android:width="200dp"
    android:height="200dp"
    android:drawable="@drawable/yourImagehere"
    android:gravity="center" />

答案 6 :(得分:0)

你使用 ImageView 尝试它我觉得它可以帮助你...

ImageView img=(ImageView)findViewById(R.id.ImageView01);
Bitmap bmp=BitmapFactory.decodeResource(getResources(), R.drawable.sc01);
int width=200;
int height=200;
Bitmap resizedbitmap=Bitmap.createScaledBitmap(bmp, width, height, true);
img.setImageBitmap(resizedbitmap);

检查

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="100dp"
 android:layout_height="100dp">
<item
    android:drawable="@drawable/splash_background" />

<item>
    <bitmap
        android:gravity="center"
        android:src="@drawable/tap" />
</item>
</layer-list>

答案 7 :(得分:-4)

如果要调整项目中的位图大小,则不应使用位图 要更改尺寸,请直接使用项目..示例:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@drawable/splash_background"/>
    <item
        android:src="@drawable/tap"
        android:gravity="center"
        android:width="150dp"
        android:height="150dp"/>
    </item>
</layer-list>

位图不允许使用gravity =“center”

调整图像尺寸