Android:如何制作可滚动的画布?

时间:2018-02-12 01:41:34

标签: java android canvas drawable

我正在写一个应用程序。其一个方面是在图像上绘制线条。这是我一直在使用的练习代码:

公共类DrawView扩展View {     Paint paint = new Paint();

private void init() {
    paint.setColor(Color.BLACK);
}

public DrawView(Context context) {
    super(context);
    init();
}

public DrawView(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
}

public DrawView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init();
}

@Override
public void onDraw(Canvas canvas) {
    paint.setStrokeWidth(20);
    canvas.drawLine(100, 100, 20, 20, paint);
    canvas.drawLine(20, 0, 0, 20, paint);

}

}

我希望Canvas相当大,所以我需要人们能够向两个方向滚动(左/右和上/下)。我该如何做到这一点?我不熟悉Canvas课程,所以我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果你想在自定义高度和宽度的画布上绘图,你必须在你的活动类中调用setContentView(android.view.View yourView,android.view.Viewgroup.LayoutParam yourLayout)。因为默认情况下setContentView(View view) )方法使用全宽和高度。所以你必须使用其重载方法和两个参数以及你想要的。有关更多信息,请参阅文档。并且不要仅使用LayoutParams()构造函数来创建其对象。通过编写像android.view.ViewGroup.LayoutParams这样的完整路径来使用它。因为Android SDK中还有其他一些具有相同名称的类。

MyView customView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    customView = new MyView(getApplicationContext());
    android.view.ViewGroup.LayoutParams lp = new android.view.ViewGroup.LayoutParams(100,200);//100 is width and 200 is height
    setContentView(customView, lp);
    customView.setOnClickListener(this);

}`