【发布时间】:2013-12-08 09:44:11
【问题描述】:
所以我似乎有一个难题。我需要向框架布局添加多个自定义视图。这个代码工作得很好。但是,我希望访问画布在视图 onDraw 方法中使用的底层位图。像这个(在扩展 View 的类中):
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
canvas.drawARGB(Color.alpha(bgColor), Color.red(bgColor),
Color.green(bgColor), Color.blue(bgColor));
m.reset();
m.setTranslate(imgPosX - ((float) userImage.getWidth() / 2.0f), imgPosY
- ((float) userImage.getHeight() / 2.0f));
m.postRotate(angle);
m.postScale(1.0f, 1.0f);
canvas.drawBitmap(userImage, m, null);
}
我希望从本质上擦除某些像素。现在,我知道我可以通过 setPixel 方法做到这一点,这很好,但速度非常慢且不能令人满意。我有一个工作的 ndk 函数,它完全符合我的要求,但它传递了一个位图。我知道我可以使用 SurfaceView 而不是 View 来访问这样的位图,但是正如 here FrameLayout 中提到的多个 SurfaceView 不是一种选择。所以,我认为我需要在 onDraw 方法中操作画布使用的位图本身。我该怎么做呢?或者我不介意创建另一个位图,将其传递给 ndk 函数并返回/绘制它,但是我会做一个带有透明像素的 canvas.drawBitmap 吗?
【问题讨论】:
标签: java android view android-framelayout