gpt4 book ai didi

java - 在运行时创建 NinePatch

转载 作者:行者123 更新时间:2023-12-04 06:38:47 24 4
gpt4 key购买 nike

我有一个业务需要在运行时创建 NinePatchDrawable 对象,也就是说,从服务器接收外部 .png 图像,它必须作为 9-patch 应用于按钮的背景(例如)。

我试图创建 NinePatchDrawable 对象,但构造函数要求我提供描述补丁的“byte[] chunck”。问题是,我不知道如何从没有 9patch 信息的位图构建这个块。

关于这个主题的任何想法?我是否从错误的角度看待问题?

最佳答案

查看我对 Create a NinePatch/NinePatchDrawable in runtime 的回答

我开发了一个工具来从(未编译的)NinePatch 位图创建 NinePatchDrawable。
https://gist.github.com/knight9999/86bec38071a9e0a781ee .

方法NinePatchDrawable createNinePatchDrawable(Resources res, Bitmap bitmap)帮助你。

例如,

    ImageView imageView = (ImageView) findViewById(R.id.imageview);
Bitmap bitmap = loadBitmapAsset("my_nine_patch_image.9.png", this);
NinePatchDrawable drawable = NinePatchBitmapFactory.createNinePatchDrawable(getResources(), bitmap);
imageView.setBackground( drawable );

在哪里
public static final Bitmap loadBitmapAsset(String fileName,Context context) {
final AssetManager assetManager = context.getAssets();
BufferedInputStream bis = null;
try {
bis = new BufferedInputStream(assetManager.open(fileName));
return BitmapFactory.decodeStream(bis);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
bis.close();
} catch (Exception e) {

}
}
return null;
}

在这种情况下, my_nine_patch_image.9.png位于 Assets 目录下。

关于java - 在运行时创建 NinePatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4547255/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com