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

11 xml android bitmap

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

延伸出app徽标

以下是我的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>
Run Code Online (Sandbox Code Playgroud)

我试过了

android:width="75sp"
android:height="75sp"
Run Code Online (Sandbox Code Playgroud)

<bitmap>但它不起作用.因此,我想知道是否有办法调整图像大小(最好不使用Java代码),除了使用ImageView.任何帮助,将不胜感激!

Kau*_* NP 8

在为我的应用程序设计启动画面时,我也遇到了同样的问题(按照您上面提到的相同链接和其他一些链接),并且通过一些谷歌搜索得到了我的答案。

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

解决方案 :

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


对于Android 移动设备

LDPI- 426 x 320

MDPI- 470 x 320

HDPI- 640 x 480

XHDPI- 960 x 720


对于安卓平板设备

LDPI- 200 x 320

MDPI- 320 x 480

HDPI- 480 x 800

XHDPI- 720 x 1280


所以你需要做的就是调整所有尺寸的图像大小,根据它们的大小加载Drawable 中的图像(例如:drawable-hdpi包含hdpi图像)并将其传递给 background_splash.xml(当然你可以保留相同的名称)。重建项目并运行它。应该按照你的规格。

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

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

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


Jnr*_*Jnr 6

Just change

android:gravity="center"
Run Code Online (Sandbox Code Playgroud)

To

android:gravity="fill"
Run Code Online (Sandbox Code Playgroud)

  • 填充拉伸图像 (2认同)

kis*_*ara 0

R 你使用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);
Run Code Online (Sandbox Code Playgroud)

或者 检查一下

<?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>
Run Code Online (Sandbox Code Playgroud)

  • 不,我没有使用 ImageView。我使用位图直接显示它。没有使用 imageView。 (3认同)