我想在Android上创建一个启动画面,中间有一个小徽标, 但徽标在更大的设备上拉伸。我以为我可以使用9补丁图像,但似乎9补丁图像与我试图达到的内容相反。
这是必须位于中间的徽标。
这是我将图像设置为9补丁时的结果。 中心伸展,角落完好无损。 我需要反对。 我需要一个9补丁,可以定义一个总是以正确的1:1比例显示的中心区域,以及左,右,上和下的边框区域,如果图像小于屏幕,可以拉伸。
我该怎么做?有或没有9补丁。
答案 0 :(得分:10)
以下是如何执行此操作的示例。这是一个9patch,所以保存如下:yourname.9.png并且不要忘记在android:scaleType="fitXY"
上设置ImageView
答案 1 :(得分:7)
您可能想要标记4个拉伸位置 请参阅以下X标记,只需添加一个点而不是它们。 并使用(如果尚未完成)SDK文件夹中的9path工具来预览Android SDK将生成的内容
X X
************
X ************
************
****LOGO****
************
X ************
************
答案 2 :(得分:2)
您有两种解决方案:
答案 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" />