相关疑难解决方法(0)

在运行时构建9个可绘制的补丁

我使用Brian Griffey提供的优秀要点(在此处找到),在Android 3.0+上成功构建了一个9patch drawable .

基本上我从网络加载原始(无补丁)图形文件,文件名包含我需要使用的上限,以便相应地缩放图像.然后我使用这些值与上面找到的类,并应用该图像作为背景的各种元件(如TextView,ImageButton,Button,ViewGroup,等等).

这可以完美地工作,你可以在这里看到:

Android 3.0+结果

但是,在Android 2.3.x上运行相同的代码会产生结果:

Android 2.x结果

我查看了Android中使用的源代码来解析9patch图像(此处此处),但没有找到使其正常工作的方法.我已经尝试了几乎所有我可以抛出的东西都无济于事.

为了记录,9patch由每个轴上的三列组成,一个固定,一个可伸缩,一个固定.

这里希望别人之前解决过这个问题.

提前致谢.

编辑我只对在Android 2.3及更高版本上复制此行为感兴趣(我最初有2.x).

编辑#2这个要点准确描述了我正在尝试做的事情 +源图像:源图像

编辑#3图像的大小为22px/58px(宽度/高度),插图为14/6/14/6(上/左/下/右).

graphics android bytearray nine-patch android-drawable

13
推荐指数
2
解决办法
4855
查看次数

使用代码创建九个补丁图像

我试图以编程方式创建九个补丁图像.我尝试过Griffey的方法,但似乎无法让它发挥作用.关于如何使用该课程的信息非常少.我相信我错误地导入了位图.如果有人知道如何让这个工作或知道更好的方式,我将非常感谢你的帮助.

我的代码:

// Dynamically create the 9patch image and apply it to a LinearLayout
LinearLayout llcode = (LinearLayout) findViewById(R.id.llcode);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.white_button);
Drawable np = NinePatchBitmapFactory.createNinePathWithCapInsets(getResources(), bitmap, 15, 15, 16, 16, null);

llcode.setBackgroundDrawable(np);

// The following code using the actual 9patch image: white_button_np.9.png
LinearLayout llxml = (LinearLayout) findViewById(R.id.llxml);
llxml.setBackgroundDrawable(getResources().getDrawable(R.drawable.white_button_np));
Run Code Online (Sandbox Code Playgroud)

此屏幕截图显示了顶部的编程方法和底部使用android工具的典型9patch方法.

在此输入图像描述

原始图像在转换为9patch之前.

在此输入图像描述

android

5
推荐指数
1
解决办法
4439
查看次数

动态设置9patch背景

有没有人试图动态设置9Patch背景的按钮?如果重要,则按钮的宽度和高度设置为wrap_content

如果是的话,你是如何解决"黑线"问题的?

谢谢

android background button nine-patch

4
推荐指数
1
解决办法
1861
查看次数

位图到NinePatch到新的缩放位图

我的问题是:

我需要创建一个使用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)

android bitmap nine-patch

3
推荐指数
1
解决办法
8743
查看次数