在onCreate中将照片加载到画布上并没有效果

时间:2018-01-09 14:41:50

标签: java android canvas android-bitmap oncreate

我创建了自己的视图,包括画布。

我正在开始一个从oncreate中的内部存储器加载位图的活动,并将此位图设置为画布。

当我尝试在功能onCreate中将照片加载到此画布时,它无效。

但是当我尝试从onClickListener加载这张照片时,它正在运行。

可能是什么问题? 如何在活动开始时自动将此照片加载到画布?

编辑: 代码在这里:

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_sign);
    signatureView = findViewById(R.id.signView);
    clearBtn = findViewById(R.id.clearBtn);
    acceptSignBtn = findViewById(R.id.acceptSignBtn);


    String fileName = getIntent().getStringExtra("photo");
    try {
        FileInputStream fis = openFileInput(fileName);
        byte[] byteArray = new byte[getIntent().getIntExtra("size", fis.available())];
        fis.read(byteArray);
        fis.close();
        photo = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
        photo = photo.copy(Bitmap.Config.ARGB_8888, true);
        Log.i("TAG", "load done" +photo.getHeight());
        signatureView.setBitmap(photo);                        //There is no result, canvas stay clear

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }


    clearBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            signatureView.clearCanvas();
            signatureView.setBitmap(photo);                     //after click photo appears
        }
    });
}

2 个答案:

答案 0 :(得分:0)

尝试在onStart或onResume方法中加载照片(通常它应该在onCreate中工作)

答案 1 :(得分:0)

@Override
public void onAttachedToWindow() {
    super.onAttachedToWindow();
    //Your Image Loading Logic Goes Here
}

在UI完全可见后调用此方法。

因为在完全创建并可见UI之后调用onClick。