Android 位图 - 什么是 nativeBitmap?
Android Bitmap - What is nativeBitmap?
所以我在查看位图的源代码 class 我看到了这个:
public final long mNativeBitmap;
原生位图长什么样?它肯定不是实际的位图,因为 long 是 64 位(8 字节),不能处理大于 2 像素的位图(假设位图是 ARGB_8888,所以每个像素 32 位)。但是 mNativeBitmap
用于所有使用位图的绘制方法。
我认为如下:位图被加载到内存中 "bitmap pool" 并被赋予一个长标识符以供稍后使用(类似于音池)。当你绘制它时,你需要它的标识符,就像从音池中播放声音一样。我认为 mNativeBitmap
是标识符。现在,为什么我们需要 Bitmap
class 呢?我想我们需要它用于所有使用此标识符的本机方法以及加载时保存到其中的数据(宽度、高度、密度等)。现在,考虑到所写的所有内容,我有一些问题:
我的想法是真的吗?或者至少部分正确?如果不是,原生位图长什么样?
提前致谢!
在Android框架中,一个名为native
anything的长成员通常是一个存储在整数中的平台指针(C/C++指针)。位图对象在本机 (C/C++) 代码中分配,指向该对象的指针作为 long 存储在 Java 对象中。
他们使用 long
因为它是 64 位类型,并且它可以在 32 位和 64 位体系结构上保存指针值。
所以我在查看位图的源代码 class 我看到了这个:
public final long mNativeBitmap;
原生位图长什么样?它肯定不是实际的位图,因为 long 是 64 位(8 字节),不能处理大于 2 像素的位图(假设位图是 ARGB_8888,所以每个像素 32 位)。但是 mNativeBitmap
用于所有使用位图的绘制方法。
我认为如下:位图被加载到内存中 "bitmap pool" 并被赋予一个长标识符以供稍后使用(类似于音池)。当你绘制它时,你需要它的标识符,就像从音池中播放声音一样。我认为 mNativeBitmap
是标识符。现在,为什么我们需要 Bitmap
class 呢?我想我们需要它用于所有使用此标识符的本机方法以及加载时保存到其中的数据(宽度、高度、密度等)。现在,考虑到所写的所有内容,我有一些问题:
我的想法是真的吗?或者至少部分正确?如果不是,原生位图长什么样?
提前致谢!
在Android框架中,一个名为native
anything的长成员通常是一个存储在整数中的平台指针(C/C++指针)。位图对象在本机 (C/C++) 代码中分配,指向该对象的指针作为 long 存储在 Java 对象中。
他们使用 long
因为它是 64 位类型,并且它可以在 32 位和 64 位体系结构上保存指针值。