我的问题是:
我需要创建一个使用NinePatch创建的重新缩放的位图.
我当前的系统从NinePatch文件创建一个Bitmap.然后将其输入NinePatch(或NinePatchDrawable).然后我需要调整它并输出到另一个Bitmap.
我已审阅本,它帮了不少忙.
这是我目前的代码:
try {
Bitmap bitmap1 = BitmapFactory.decodeStream(getAssets().open("gfx/head.9.png"));
// Using NinePatch?
NinePatch patch = new NinePatch(bitmap1, bitmap1.getNinePatchChunk(), null);
// Or NinePatchDrawable?
NinePatchDrawable patch = new NinePatchDrawable(bitmap1, bitmap1.getNinePatchChunk(), new Rect(), null);
// Set dimensions from NinePatch and create new bitmap
// Bitmap bitmap2 = ?
}
catch (IOException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用9补丁技术来创建按钮.
它在Eclipse的布局窗口中看起来非常棒

当我在模拟器中运行它时,它显示如下:

这是实际的PNG图像

选择器XML
<item android:drawable="@drawable/splash_facebook_button" />
Run Code Online (Sandbox Code Playgroud)
布局中的按钮代码
<Button
android:id="@+id/button1"
android:layout_width="208dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="20dip"
android:background="@drawable/splash_facebook_button_selector"
android:text="Sign up with Facebook" />
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用9补丁图片创建一个新的微调器背景.我已经尝试了许多方法来获得完美的图像,但我失败了:s
这是我的9补丁: 
当我使用Draw-9-patch进行模拟但是没有显示带箭头的部分时,内容看起来很好,或者当它显示时,这部分是完全错误形成的.
我把顶部黑线放到整个尺寸上,问题仍然是一样的.
你知道怎么解决吗?
谢谢.
问候.
V.
我正在Android中创建一个实现聊天功能的应用程序.我有2种聊天气泡 - 其他用户为蓝色,登录用户为橙色.我正在使用Nine-patch图像来处理这些气泡,因为气泡可以被拉伸.
蓝色气泡中的文字显示正常 - 位于中间(如下图所示).但是橙色气泡中的文字显示在图像上边缘的一些垂直间隙之后.我无法弄清楚为什么会这样.两个气泡都具有相同的属性,并且是按照相同的步骤创建的.请帮忙.提前致谢.
这是橙色聊天泡泡:

正如标题所说,当您处理出现在闪屏或背景或警报弹出窗口中的真实图像时,您是将它们转换为九个补丁还是只需将它们调整为多个图像(800x480,960x540,720x1280等) ?
我不是将它们转换为九个补丁,而是调整为最常用的格式,我想知道我是否犯了这样的错误.
我的问题就像标题所说:为什么我们需要9个补丁图像?它们真的如此重要吗?实际上,他们真正做了什么?我没有清楚地得到9补丁图像的概念.
我知道9补丁图像是可扩展的.所以,假设我有一些完全适合我的ldpi设备的图像按钮.使用Draw 9-patch工具(android SDK的一部分),我可以标记可扩展区域,这个图像非常适合hdpi甚至xhdpi设备.边缘将是美好而顺利的.
但这是非常好的实践还是仅仅是另类?我应该为ldpi,mdpi,hdpi和xhdpi设备创建每个图像,还是只需在一个图像上使用Android SDK"Draw 9-patch",让Android处理各种设备?
我不是关于边缘,而是图片的实际内容.内容是否可扩展?
我将此布局作为列表项:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:gravity="center_vertical"
android:layout_width="match_parent"
android:orientation="horizontal"
android:minHeight="42.3dp"
android:layout_height="wrap_content">
<TextView android:id="@+id/txtTagName"
android:textColor="@color/White"
android:layout_width="wrap_content"
android:layout_height="32dp"
android:layout_marginLeft="10dp"
android:textSize="13sp"
android:gravity="center"
android:layout_gravity="left"
android:background="@drawable/tag"/>
<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_action_discard"
android:layout_marginLeft="10dp"
android:layout_gravity="right"
android:gravity="center"
android:scaleType="center"
android:alpha="0.5"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
看起来像这样:

标签补丁9看起来像这样:

我有3个问题:
谢谢。
我正在尝试为我的应用创建一个在所有分辨率/方向上看起来都很清晰的背景图像.
我是Android开发的新手,但我知道实现这一目标的最简单方法是使用9个补丁图像.我以为我明白他们是如何运作的,但我无法让它发挥作用.
我已经创建了一个背景图像@ 768 x 1280这是我的Nexus 4的分辨率.当我不修补它并在我的设备上查看它时,它看起来很好(显然,因为分辨率/方向与设备的匹配) :

所以看起来很漂亮.
但后来我使用该drawer9patch.bat文件将补丁添加到图像上,并将文件重命名为'.9.png',结果如下:

精疲力竭!
奇怪的是:在draw9patch工具右侧的预览窗格中,它看起来都很好....
我也试过以较小的分辨率制作图像,但徽标和文字看起来并不清晰; 他们看起来像素化......
我觉得必须有一些我不知道的难题的重要部分?我定义为内容的区域正在被拉伸?
这是我的布局代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/my_background_image_patched"
android:padding="0px">
<!-- Login controls here --->
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
这是我的9补丁图片(位于'drawable'文件夹):

我是Swift和iOS的新手.在Android中,我们可以轻松地拉伸图像并将一些内容放在此图像中,但我找不到iOS的任何等效内容.
我用resizableImage(withCapInsets)方法找到了很多教程/帖子,但它并不是我想要的.看这个图像:

区域2,4,5,6和8将被拉伸并且仅被拉伸.使用Android 9补丁,我可以定义多个可伸缩区域,如下所示:

在这里,只有红色区域是可拉伸的.此方法对于保持绿色区域固定非常有用,但resizableImage(withCapInsets)是不可能的.
此外,使用Android 9补丁,我们可以在蓝色区域轻松定义内容区域,如texview,imageview,...,图像根据此区域中的文本大小进行拉伸.iOS和Swift有可能吗?