我正在写一个应用程序。其一个方面是在图像上绘制线条。这是我一直在使用的练习代码:
公共类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课程,所以我们将不胜感激。
答案 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);
}`