
你好,
见上面我的9补丁图片.它是使用Android工具中的9补丁编辑器创建的.我有很多问题:
谢谢.
我需要从drawable文件夹外部加载9补丁文件.这样我的应用程序就可以从服务器下载新的皮肤.我发现在制作.apk时会编译存储在drawable文件夹中的9补丁图像.从assets文件夹读取的完全相同的文件没有9补丁块.因此,制作.apk的行为是在可绘制文件夹中编译源9补丁文件,但不在资源目录中编译.
如何自己编译9补丁文件,以便我可以将它安装在assets目录中?是否有(批量)工具将源转换为带有9补丁块的编译版本?我真的非常喜欢不必使用Eclipse/Ant来构建.apk,然后将其拆开以提取已编译的9补丁文件(如果可能的话).
现在我只想从资源目录中读取(例如,每个皮肤有一个子目录)以保持简单.下一步是编译源映像以添加到9补丁块中.之后我会担心即时下载到/ data文件夹 - 如果我无法编译9补丁文件那么添加服务器端的工作就没什么意义了.
我正在创建一个Android应用程序,我想要多个屏幕支持.对于这些我使用了9个补丁图像.
但我的问题是,使用9个补丁图像是否足以用于不同密度的设备,或者我需要为不同的密度创建不同的-2 9个补丁图像(如mdpi,ldpi,hdpi).
提前致谢
我现在已经使用了9张补丁图片了一段时间.但是已经出现了问题.Eclipse中的GUI设计器告诉我图像工作正常.它看起来应该如何.
然而,在设备中,它只是将图像拉伸为正常的png.
最糟糕的是,它正在工作,但后来我做了一个清洁和重建,我似乎无法让9patch图像工作.
我的问题是有其他人遇到过这个问题.在android编译或eclipse中是否有某些设置可以将其关闭.我已经在draw9patch.bad中打开了图像,它们似乎正常工作.真正令人困惑的问题是它们在eclipse中表现得很好,而且它们正在设备中的应用程序中工作.突然他们不能正确伸展.
我有一个活动,在HorizontalScrollView中定义了ImageView.图像源是一个9补丁文件,仅限于拉伸右边缘以填充屏幕.我已经实现了一个简单的缩放功能,允许用户通过调整位图大小并将新位图分配给视图来双击放大和缩小.我目前的问题是,当双击点击以缩小时,当我将新的已调整大小的位图分配给视图时,不会应用9补丁.换句话说,它不是像9补丁文件中那样只拉伸右边缘,而是拉伸整个图像.
这是我的XML:
<HorizontalScrollView
android:id="@+id/hScroll"
android:fillViewport="true"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fadingEdge="none" >
<RelativeLayout
android:id="@+id/rlayoutScrollMap"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ImageView
android:id="@+id/imgResultMap"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="fitXY"
android:src="@drawable/map_base"/>
</RelativeLayout>
</horizontalScrollView>
Run Code Online (Sandbox Code Playgroud)
这是我的代码的相关部分,在onDoubleTap()调用中:
public boolean onDoubleTap(MotionEvent e)
{
if (zoom == 1) {
zoom = 2; // zoom out
} else {
zoom = 1; // zoom in
}
Bitmap image = BitmapFactory.decodeResource(getResources(),R.drawable.map_base);
Bitmap bmp = Bitmap.createScaledBitmap(image, image.getWidth() * zoom, image.getHeight() * zoom, false);
ImageView imgResultMap = (ImageView)findViewById(R.id.imgResultMap);
imgResultMap.setImageBitmap(bmp);
return false;
}
Run Code Online (Sandbox Code Playgroud)
编辑:经过一些研究,我发现它.我不仅要操纵位图,还需要包含不是位图图像一部分的9补丁块,以重新构建一个新的9补丁drawable.请参阅以下示例代码:
...
else {
// Zoom out …Run Code Online (Sandbox Code Playgroud) android android-widget nine-patch android-layout android-imageview
我使用九个补丁图像作为选择器项目元素的drawable.九个补丁图像在这里:

最终渲染的图像是这个(模拟器和设备截图,两个设备都有分辨率> mdpi):

正如您所看到的,它已经在可伸展区域之外缩放(如9补丁文件中所定义),较暗的绿色条纹应该更厚.为什么这样,可以避免吗?draw9patch工具正确缩放此图像.是否与Android试图在高分辨率设备上保留物理尺寸有关?
我有一个TransitionDrawable.这两个状态都是9个补丁并且定义了内容区域.问题是利润率太高 - 实际上它基本上是应有的两倍.似乎它增加了两个九个补丁的边缘.
如果我将这九个补丁中的一个直接设置为背景并且不使用TransitionDrawable,那么边距可以正常工作,因此九个补丁肯定是正确的.
有没有人遇到这样的问题?
编辑:如果我将内容区域设置为资产的完整大小,并在xml中定义填充,它的工作原理.相反,它总是会让保证金错误.这似乎是Android中的一个错误,所以这似乎是唯一的解决方案,但也许有一个更好的解决方法:/
android nine-patch android-ui android-layout transitiondrawable
我正在创建一个聊天应用程序.我希望将我的png图像转换为9patch图像.我使用此链接.... http://android-ui-utils.googlecode.com/hg/asset-studio /dist/nine-patches.html
但问题是聊天气泡总是保持最小宽度,即使对于小消息也是如此.例如,如果我输入类似"hello"的文本,它会显示在宽度大于消息的气泡中.如何创建9patch形象好吗?
这是我的png图像

我使用Android Studio功能"创建9补丁文件"制作了9补丁图像.
现在android studio告诉我有一个"重复"resorces错误,因为我有image.png和image.9.png.
如果删除了image.png(甚至在清理和重新制作项目之后),我收到此错误:
Error:java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException:
Error:Execution failed for task ':app:mergeDebugResources'.
> Error: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException:
Run Code Online (Sandbox Code Playgroud)
你知道如何解决这个问题吗?
nine-patch ×10
android ×9
image ×2
adt ×1
android-ui ×1
css ×1
css3 ×1
javascript ×1
jquery ×1
scaling ×1