[Android]加载外部.9图片

  1. 制作.9.png图片

  2. 编译制作好的图片

  3. NinePathDrawable解析:


  4.  public static Drawable decodeStream(Resources resources, InputStream is, Options options) throws IOException{
            Bitmap bitmap = BitmapFactory.decodeStream(is);
            byte[] chunks = bitmap.getNinePatchChunk();
            boolean isNinePatchChunk = NinePatch.isNinePatchChunk(chunks);
            Log.v(TAG, "isNinePatchChunk:"+isNinePatchChunk);
            if(!isNinePatchChunk){
                return new BitmapDrawable(resources, bitmap);
            }else {
                Rect padding = new Rect();
                padding.left = getInt(chunks, 12);
                padding.right = getInt(chunks, 16);
                padding.top = getInt(chunks, 20);
                padding.bottom = getInt(chunks, 24);
                return new NinePatchDrawable(resources, bitmap, chunks, padding, null);
            }
        }
        private static int getInt(byte[] chunk, int from) {
            int result = 0;
            result = ((result << 8) | (chunk[from + 3] & 0xFF));
            result = ((result << 8) | (chunk[from + 2] & 0xFF));
            result = ((result << 8) | (chunk[from + 1] & 0xFF));
            result = ((result << 8) | (chunk[from + 0] & 0xFF));
            return result;
        }

你可能感兴趣的:(android,drawable,.9,ninepath)