9中心为1:1的补丁图像

时间:2013-11-05 14:44:15

标签: android splash-screen nine-patch

我想在Android上创建一个启动画面,中间有一个小徽标, 但徽标在更大的设备上拉伸。我以为我可以使用9补丁图像,但似乎9补丁图像与我试图达到的内容相反。

splash logo

这是必须位于中间的徽标。

9 patch splash logo

这是我将图像设置为9补丁时的结果。 中心伸展,角落完好无损。 我需要反对。 我需要一个9补丁,可以定义一个总是以正确的1:1比例显示的中心区域,以及左,右,上和下的边框区域,如果图像小于屏幕,可以拉伸。

我该怎么做?有或没有9补丁。

6 个答案:

答案 0 :(得分:10)

以下是如何执行此操作的示例。这是一个9patch,所以保存如下:yourname.9.png并且不要忘记在android:scaleType="fitXY"上设置ImageView

enter image description here

答案 1 :(得分:7)

您可能想要标记4个拉伸位置 请参阅以下X标记,只需添加一个点而不是它们。 并使用(如果尚未完成)SDK文件夹中的9path工具来预览Android SDK将生成的内容

    X       X
  ************
X ************
  ************
  ****LOGO****
  ************
X ************
  ************

答案 2 :(得分:2)

您有两种解决方案:

  1. 将初始颜色设置为具有蓝色背景(您正在使用)的RelativeLayout。添加到此RelativeLayout中心图像。
  2. 以正确的方式使用9补丁。每个角上需要4个补丁:
  3. enter image description here

答案 3 :(得分:2)

如果它只是背景颜色中心的徽标,您可以尝试这种方法:

不需要9补丁。只需使用普通图像(称为" splash_logo"此处),并通过创建一个新的可绘制xml文件(在res / drawable中)来包装它:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item>
        <color android:color="@color/default_background" />
    </item>
    <item>
        <bitmap
            android:gravity="center"
            android:src="@drawable/splash_logo" >
        </bitmap>
    </item>

</layer-list>

在您想要使用的imageView上使用此drawable。

如果它是全屏,您可以进一步使用主题进行第一个活动,从而无需创建任何视图:

在styles.xml(或theme.xml)中

<style name="SplashTheme" parent="@android:style/Theme.NoTitleBar">
    <!-- Background color must match splash image borders ! -->
    <item name="android:windowBackground">@drawable/activity_splash</item>
    <item name="android:background">@null</item>
</style>

并在清单中:

    <activity
        android:name="..."
        android:theme="@style/SplashTheme" >

答案 4 :(得分:1)

您可以指示9补丁图像的哪些部分使用顶部和左侧边框中的像素进行拉伸。所以只需填充边缘附近的像素。

答案 5 :(得分:1)

9-patch不适用于这种渲染。 (http://developer.android.com/tools/help/draw9patch.html) 但是你按照下面提到的代码,使用和使用重力进行集中化。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:gravity="center" >

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world"
    android:src="@drawable/your_logo" />