Android “什么是”呢;位图源“;在createBitmap()参数中?

Android “什么是”呢;位图源“;在createBitmap()参数中?,android,android-layout,android-drawable,android-image,android-bitmap,Android,Android Layout,Android Drawable,Android Image,Android Bitmap,下面我将介绍如何使用位图裁剪图像 如中所确认的,有一个方法createBitmap()具有以下参数: createBitmap(Bitmap source, int x, int y, int width, int height) 但我不明白这个位图源需要什么。我相信它一定是指我希望用于位图对象的图像。我希望使用的图像存储为名为rainbow的可绘制图像,因此我尝试了以下方法: Bitmap cropedBitmap = Bitmap.createBitmap(R.id.rainbow

下面我将介绍如何使用位图裁剪图像

如中所确认的,有一个方法createBitmap()具有以下参数:

createBitmap(Bitmap source, int x, int y, int width, int height)
但我不明白这个位图源需要什么。我相信它一定是指我希望用于位图对象的图像。我希望使用的图像存储为名为rainbow的可绘制图像,因此我尝试了以下方法:

    Bitmap cropedBitmap = Bitmap.createBitmap(R.id.rainbow, 0, 0, 300, 300);
在这种情况下,Android Studio报告“无法解析符号‘彩虹’”

我还尝试:

      Bitmap cropedBitmap = Bitmap.createBitmap(R.drawable.rainbow, 0, 0, 300, 300);
androidstudio报告“无法解析方法createBitmap(int,int,int,int,int)

我从文档中看到,第一个参数是位图。这不是用位图来创建位图吗?此外,我在其文档页面上没有看到任何位图类的构造函数


关于我缺少什么或下一步尝试什么,有什么建议吗?

R.drawable.rainbow
是一个整数值,不是位图,因为它只是生成的资源标识符号

您需要使用一种方法将可绘制资源id设置为位图对象,就像以前一样

编辑:添加选项和可绘制调用方法

BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 4;
Drawable drawable = getResources().getDrawable(R.drawable.rainbow);
Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();
Bitmap cropedBitmap = Bitmap.createBitmap(bitmap, options), 0, 0, 300, 300);

如果您想裁剪出一段位图,可以使用BitmapFactory.Options直接从资源加载到ram中
当你在游戏中设置动画并且图像来自一个更大的精灵时,这种情况很常见

请不要这样做。这将创建两个位图(一个在解码时,然后是缩放版本),前者立即用于垃圾收集。但是,由于位图内存不足,不创建临时位图非常重要。@dhke//hi。谢谢你的指点。那么
((BitmapDrawable)drawable.getBitmap()怎么样?会一样吗?@dhke有好的选择吗?如果是这样的话,想发布一个答案吗?对了,太多的开销加载与选项解决了这样的问题problems@TimothySteele我建议始终使用图像加载程序库。一旦你开始考虑类似的事情,正确地完成它的代码就会变得相当长和混乱。