ogiso雪菜 2018-05-03 02:24 采纳率: 37.5%
浏览 2965
已结题

为什么用drawBitmap图片还是显示不出来。

我想做一个画板,现在需要增加一个插入图片功能。
目前能从相册中选取图片,但是因为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;
    }
}
  • 写回答

9条回答

  • 独孤灬二爷 2018-05-03 02:36
    关注

    尝试一下把继承ImageView改成了继承View,就能够正常显示了。
    原文:https://blog.csdn.net/feiniao8651/article/details/39483017
    希望对你有用

    评论

报告相同问题?

悬赏问题

  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥30 用arduino开发esp32控制ps2手柄一直报错
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿