在 Android 画布上设置屏幕范围

问题描述

我在 Android 上实现了用于绘图的画布,但绘图视图填满了屏幕。我想调整这个屏幕的大小。我该怎么办?

一旦我在 oncreate 方法中将 MyView 设置为使用 setContentView 显示

MainActivity.java

MyView view = new MyView(this);
setContentView(view);

这是在画布上绘画的部分。但是,如前所述,我想调整可以绘制的范围。我不希望整个屏幕成为绘图视图。 MyView.java

public class MyView extends View {

    private Paint paint = new Paint();
    private Path path = new Path();
    private int x,y;

    public MyView(Context context){
        super(context);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        paint.setColor(Color.BLACK);
        //stroke속성을 이용하여 테두리...선...
        paint.setStyle(Paint.Style.stroke);

        //두께
        paint.setstrokeWidth(3);
        //path객체가 가지고 있는 경로를 화면에 그린다...
        canvas.drawPath(path,paint);
    }


    @Override
    public boolean onTouchEvent(MotionEvent event) {
        x = (int)event.getX();
        y = (int)event.getY();

        switch(event.getAction()){
            case MotionEvent.ACTION_DOWN:
                path.moveto(x,y);
                break;
            case MotionEvent.ACTION_MOVE:
                x = (int)event.getX();
                y = (int)event.getY();
                Log.e("s",x+""+y);

                path.lineto(x,y);
                break;
        }

        //View의 onDraw()를 호출하는 메소드...
        invalidate();

        return true;
    }
}

解决方法

您可以像这样设置宽度和高度:

MyView view = new MyView(this);
setContentView(view);
view.setLayoutParams(new FrameLayout.LayoutParams(500,500));

父 ViewGroup 的 FrameLayout.LayoutParams 可以在哪里变化。如果父级为 LinearLayout,则应为 LinearLayout.LayoutParams,依此类推。