Search code examples
androidnine-patch

Unwanted stretching of nine-patch image for splash screen


I want to use a nine-patch image to make a splash screen for my application, which should look the same (square) in both portrait and landscape orientation.

My code is simple:

public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.splashscreen);
  // more code here...
}

My resource file is:

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

Nine-patch image looks fine in Draw 9-patch utility: enter image description here

But as the result the image is stretched: enter image description here

What's wrong? Can nine-patch images be used this way at all?


Solution

  • Can nine-patch image be used this way at all? Well, no. Not properly.

    Because 9 patches are meant to be stretchable.
    A nice tutorial: https://radleymarx.com/2011/simple-guide-to-9-patch

    You'd better use a square image and use it as a source (android:src), not as a background (android:background) for your ImageView.
    Then you can ajust it by setting the android:scaleType attribute (FIT_XY ?).

    Reference: http://developer.android.com/reference/android/widget/ImageView.ScaleType.html