美文网首页
关于NinePatch图片

关于NinePatch图片

作者: 钦_79f7 | 来源:发表于2019-12-19 12:53 被阅读0次

获取chunk的pading

mport android.graphics.Rect;

import java.nio.ByteBuffer;
import java.nio.ByteOrder;

/**
 * Created By: sqq
 * Created Time: 16/11/1 下午2:06.
 */

public class NinePatchChunk {
    public static final int NO_COLOR = 0x00000001;
    public static final int TRANSPARENT_COLOR = 0x00000000;

    public final Rect mPaddings = new Rect();

    public int mDivX[];
    public int mDivY[];
    public int mColor[];

    private static void readIntArray(final int[] data, final ByteBuffer buffer) {
        for (int i = 0, n = data.length; i < n; ++i)
            data[i] = buffer.getInt();
    }

    private static void checkDivCount(final int length) {
        if (length == 0 || (length & 0x01) != 0)
            throw new RuntimeException("invalid nine-patch: " + length);
    }

    public static NinePatchChunk deserialize(final byte[] data) {
        final ByteBuffer byteBuffer =
                ByteBuffer.wrap(data).order(ByteOrder.nativeOrder());

        if (byteBuffer.get() == 0) return null; // is not serialized

        final NinePatchChunk chunk = new NinePatchChunk();
        chunk.mDivX = new int[byteBuffer.get()];
        chunk.mDivY = new int[byteBuffer.get()];
        chunk.mColor = new int[byteBuffer.get()];

        checkDivCount(chunk.mDivX.length);
        checkDivCount(chunk.mDivY.length);

        // skip 8 bytes
        byteBuffer.getInt();
        byteBuffer.getInt();

        chunk.mPaddings.left = byteBuffer.getInt();
        chunk.mPaddings.right = byteBuffer.getInt();
        chunk.mPaddings.top = byteBuffer.getInt();
        chunk.mPaddings.bottom = byteBuffer.getInt();

        // skip 4 bytes
        byteBuffer.getInt();

        readIntArray(chunk.mDivX, byteBuffer);
        readIntArray(chunk.mDivY, byteBuffer);
        readIntArray(chunk.mColor, byteBuffer);

        return chunk;
    }
}

参考

相关文章

  • 关于NinePatch图片

    获取chunk的pading 参考 NinePatchDrawable详解 android从sdcard加载.9....

  • android 9patch

    NinePatch是一种很有用的PNG图片格式,它可以在特定区域随文字大小进行缩放。如下: 从上图可以看到,背景图...

  • cap insets

    原文链接 在很多编程语言中都有resizable image这样的概念,比如android中的NinePatch ...

  • LibGDX图形模块之Ninepatches

    本文介绍了NinePatch图像,如何创建它们以及如何在Libgdx上下文中使用它们。 在你开始之前 本指南适用于...

  • android自定义View中用NinePatch类画9图

    9图的制作在官网和其他博客中都有大量教程,最终可以制作出XXX.9.png文件 没有用NinePatch: 在自定...

  • 关于图片

  • iOS关于多张图片上传、地址返回顺序问题

    iOS关于多张图片上传、地址返回顺序问题 iOS关于多张图片上传、地址返回顺序问题

  • 关于图片压缩

    #pragma mark -将图片大小压缩在1.5M以下 //图片大小压缩 -(NSData *)compress...

  • 关于图片/视频

    起始 今天get到一个表情包 水印太多已经看不清楚照片到底是谁发的 照片上的水印可能并不是原作者 找到了原作者但是...

  • 关于图片错误

    答:可能这个图片不是真正的.png图片,只是手动将.jpg改成了png。我的就是这个问题 重新导出再加入后就...

网友评论

      本文标题:关于NinePatch图片

      本文链接:https://www.haomeiwen.com/subject/liemnctx.html