【发布时间】:2014-05-04 07:43:44
【问题描述】:
我想要获取自定义类的整个 bimap 地图...我得到空值...我尝试各种方法我没有得到写答案..
Bitmap b = mBoardTile.getDrawing();我用了它但是得到了空值..
我也使用了视图缓存,例如..
Bitmap b = null;
try {
mBoardTile.setDrawingCacheEnabled(true);
mBoardTile.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
mBoardTile.layout(0, 0, mBoardTile.getMeasuredWidth(), mBoardTile.getMeasuredHeight());
mBoardTile.buildDrawingCache(true);
b = mBoardTile.getDrawingCache();
} catch (Exception e) {
e.printStackTrace();
}`
但再次获得空值..
自定义类在下面..
public class BoardTile extends ImageView {
Context mContext;
int posx, posy;
ArrayList<Datavo> mArrayListDta;
float width, height, newx, newy;
ArrayList<Datavo> mArrayListNew;
public BoardTile(Context context) {
super(context);
this.mContext = context;
mArrayListNew = new ArrayList<Datavo>();
}
@Override
protected void onDraw(Canvas canvas) {
for (int i = 0; i < mArrayListNew.size(); i++) {
Datavo mDatavo = mArrayListNew.get(i);
Bitmap mOriginalBitmap = mDatavo.getmBitmap();
// Scale to target size
mOriginalBitmap = Bitmap.createScaledBitmap(mOriginalBitmap, mDatavo.getWidth_new(), mDatavo.getHeight_new()/2, true);
// Canvas mCanvas = new Canvas(mOriginalBitmap);
canvas.drawBitmap(mOriginalBitmap, 0, 0, null);
}
}
public void getData(ArrayList<Datavo> mArrayList) {
this.mArrayListDta = mArrayList;
for (int i = 0; i < mArrayListDta.size(); i++) {
newx = 480 * mArrayListDta.get(i).getxCordi() / mArrayListDta.get(i).getWidth();
newy = 800 * mArrayListDta.get(i).getyCordi() / mArrayListDta.get(i).getHeight();
width = newx * mArrayListDta.get(i).getWidth() / mArrayListDta.get(i).getxCordi();
height = newy * mArrayListDta.get(i).getHeight() / mArrayListDta.get(i).getyCordi();
Datavo mDatavo = new Datavo();
mDatavo.setxCordi_new((int) newx);
mDatavo.setyCordi_new((int) newy);
mDatavo.setWidth_new((int) width);
mDatavo.setHeight_new((int) height);
mDatavo.setmBitmap(mArrayListDta.get(i).getmBitmap());
mArrayListNew.add(mDatavo);
}
}
}
【问题讨论】:
-
你为什么在 onDraw 方法中这样做它会调用多次..
-
@kalyanpvs 我在 getdata() 数组列表中添加了多个图像视图.. 所以我需要 for 循环..
-
@kalyanpvs 我只是添加了多个图像视图并将其全部绘制在画布上.. 它的绘制完美但没有获取自定义类图像视图位图..
-
不要在
onDraw()回调中做繁重的工作。这里createScaledBitmap()是一项昂贵的工作...... -
@GopalRao 我知道但没有另一种方法来处理所有尺寸合适的图像位图..
标签: android canvas bitmap android-custom-view