我想绘制ImageView(就像一个简单的绘画,但只是在图像上)。我创建了一个自定义的MyImageView类,它扩展了ImageView,我重写了onDraw。我希望ImageView位于屏幕的中心。在ImageView上绘图
当我使用一种布局时,图像出现在左上角,我可以在上面画出没有问题的图像。
当我使用不同的布局,图像出现在屏幕中央但画布仍然停留在左上角这个小的小矩形。因此,当我尝试绘制图像时,我只能在左上角进行绘制,并在中间的图像上显示变化。
在我的MainActivity我设置:
myImageView = (MyImageView) findViewById(R.id.pdfView);
// I also extract the bitmap myBitmap from the pdf ...
// and pass it to the ImageView
myImageView.setImageBitmap(myBitmap);
// and I set the Canvas too:
Canvas myCanvas = new Canvas(myBitmap);
myImageView.setMyCanvas(myCanvas);
然后这里是MyImageView的关键部分:
public class MyImageView extends
android.support.v7.widget.AppCompatImageView {
// variables...
public MyImageView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
setupDrawing();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawPath(drawPath, drawPaint);
}
private void setupDrawing() { //...usual stuff here }
@Override
public boolean onTouchEvent(MotionEvent event) { //...usual stuff here }
public void setMyCanvas(Canvas canvas) { this.myCanvas = canvas; }
我一定要在MyImageView或添加/更改某事MainActivity,以便画布仅位于ImageView的顶部或至少在整个屏幕上延伸?
你可以在这里添加你的onDraw()方法的代码。你有硬编码的价值吗?另外,第二种情况看起来像是将宽度和高度设置为匹配图像视图的match_parent,这就是为什么您将整个区域作为画布。 – user2520215
我想加入 android:gravity =“center” 到你的线性布局应该使它按照需要工作。 – user2520215