我想做一个画板,现在需要增加一个插入图片功能。
目前能从相册中选取图片,但是因为onDraw方法没被调用,所以显示不出来。
需要怎么做才行?网上查的setWillNotDraw(false);也没用
log显示结果
E/TAG: 宽291高295mSrcRectRect(0, 0 - 291, 295)mDestRectRect(0, 0 - 291, 295)
public class DrawBitmapView extends View{
private Paint mBitPaint;
private Bitmap mBitmap;
private int mBitWidth,mBitHeight;
private Rect mSrcRect,mDestRect;
public DrawBitmapView(Context context,int width,int height,Bitmap bitmap) {
super(context);
initPaint();
mBitWidth = width;
mBitHeight = height;
mBitmap = bitmap;
mSrcRect = new Rect(0,0,mBitWidth,mBitHeight);
mDestRect = new Rect(0,0,mBitWidth,mBitHeight);
Log.e("TAG", "宽"+mBitWidth+"高"+mBitHeight+"mSrcRect"+mSrcRect+"mDestRect"+mDestRect);
setWillNotDraw(false);
}
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
canvas.drawBitmap(mBitmap,mSrcRect,mDestRect,mBitPaint);
//canvas.drawBitmap(mBitmap,0,0,mBitPaint);
}
private void initPaint() {
mBitPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mBitPaint.setFilterBitmap(true);
mBitPaint.setDither(true);
}
}
下面是在MainActivity.java里的代码
public static final int CHOOSE_PHOTO = 0;
private void openAlbum(){
Intent intent = new Intent("android.intent.action.GET_CONTENT");
intent.setType("image/*");
startActivityForResult(intent,CHOOSE_PHOTO);
}
public void onRequestPermissionsResult(int requestCode,String[] permission,int[] grantResults){
switch(requestCode){
case 1:
if(grantResults.length>0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
openAlbum();
}
else {
Toast.makeText(this,"You denied the permission",Toast.LENGTH_SHORT);
}
break;
default:
}
}
protected void onActivityResult(int requestCode,int resultCode,Intent data){
switch (requestCode){
case CHOOSE_PHOTO:
if(resultCode == RESULT_OK){
Bitmap bitmap = null;
int mbitWidth,mbitHeight;
//判断手机系统版本号
if(Build.VERSION.SDK_INT >= 19){
//4.4及以上系统使用这个方法处理图片
bitmap = ImgUtil.handleImageOnKitKat(this,data);
mbitWidth = bitmap.getWidth();
mbitHeight = bitmap.getHeight();
drawBitmapView = new DrawBitmapView(this,mbitWidth,mbitHeight,bitmap);
}
}
break;
default:
break;
}
}