在 Android 中通过画布创建一个空位图并进行绘图
Posted
技术标签:
【中文标题】在 Android 中通过画布创建一个空位图并进行绘图【英文标题】:Creating an empty bitmap and drawing though canvas in Android 【发布时间】:2011-08-05 12:58:50 【问题描述】:我想创建一个空位图并为该位图设置一个画布,然后在该位图上绘制任何形状。
【问题讨论】:
【参考方案1】:这可能比你想象的要简单:
int w = WIDTH_PX, h = HEIGHT_PX;
Bitmap.Config conf = Bitmap.Config.ARGB_8888; // see other conf types
Bitmap bmp = Bitmap.createBitmap(w, h, conf); // this creates a MUTABLE bitmap
Canvas canvas = new Canvas(bmp);
// ready to draw on that bitmap through that canvas
这是我在该主题上找到的一系列教程:Drawing with Canvas Series
【讨论】:
如果我在一个单独的类中创建它,我将如何在另一个类中引用该位图。例如:Bitmap text = BitmapFactory.decodeResource(mContext.getResources(), 这里放什么?);我需要一个 opengl 动态壁纸中的 textView。提前致谢 嗨@bigstones,当我创建位图时,我正在关注您在 onSizeChanged() 中创建位图的代码,我收到 OutOfMemoryError,请参阅***.com/questions/24303759/… 在使用 SurfaceView 时如何在另一个线程中完成? 只要确保 x 和 y 不为零,否则会抛出异常非法参数【参考方案2】:不要使用 Bitmap.Config.ARGB_8888
改为使用 int w = WIDTH_PX, h = HEIGHT_PX;
Bitmap.Config conf = Bitmap.Config.ARGB_4444; // see other conf types
Bitmap bmp = Bitmap.createBitmap(w, h, conf); // this creates a MUTABLE bitmap
Canvas canvas = new Canvas(bmp);
// ready to draw on that bitmap through that canvas
在处理更多位图或大型位图时,ARGB_8888 会使您陷入 OutOfMemory 问题。 或者更好的是,尽量避免使用 ARGB 选项本身。
【讨论】:
ARGB_4444 现已弃用 (developer.android.com/reference/android/graphics/…)以上是关于在 Android 中通过画布创建一个空位图并进行绘图的主要内容,如果未能解决你的问题,请参考以下文章
在android中通过firebase进行Facebook登录时身份验证失败