Android Drawable在转换为位图后丢失颜色过滤器
我试图添加一个颜色文件在一个可绘制的,然后在位图转换它。问题是,当将可绘制文件转换为位图时,它会丢失其颜色过滤器。我在imageview中使用了可绘制文件,其具有颜色过滤器,但在imageview中使用位图不会产生任何颜色效果。为什么会这样?提前谢谢 使用画布将可绘制的内容点放到位图上:Android Drawable在转换为位图后丢失颜色过滤器,android,bitmap,drawable,colorfilter,Android,Bitmap,Drawable,Colorfilter,我试图添加一个颜色文件在一个可绘制的,然后在位图转换它。问题是,当将可绘制文件转换为位图时,它会丢失其颜色过滤器。我在imageview中使用了可绘制文件,其具有颜色过滤器,但在imageview中使用位图不会产生任何颜色效果。为什么会这样?提前谢谢 使用画布将可绘制的内容点放到位图上: Canvas canvas; Drawable drawable = <yourDrawable created from wherever>; Bitmap bmp = &
Canvas canvas;
Drawable drawable = <yourDrawable created from wherever>;
Bitmap bmp = <your Bitmap which is the same width/height as the drawable>
// blit the drawable onto the bitmap using a Canvas
canvas = new Canvas(bmp);
drawable.draw(canvas);
Canvas;
可拉伸=;
位图bmp=
//使用画布将可绘制的图形点放到位图上
画布=新画布(bmp);
可绘制。绘制(画布);
我也遇到了同样的问题,我终于解决了 我们需要做下面的事情来获得应用了颜色过滤器的位图
image_view.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(image_view.getDrawingCache());
我也面临同样的问题,最终找到了解决办法。 Drawable可以有多个状态,因此您可能绘制了错误的状态 在绘制之前,应将其切换到正确的模式:
Drawable drawable = icon.loadDrawable(getContext());
if (drawable == null) {
return;
}
drawable.setState(new int[] {android.R.attr.state_enabled});
Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
drawable.draw(canvas);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
可能重复:你到底想做什么?您正在尝试将可绘制回位图。向我们显示您的代码。我想向绘图表添加颜色过滤器并将其转换为位图。您得到解决方案了吗?使用了此代码,但结果不是预期的。我需要与颜色过滤器应用在绘图位图。