Android 用 2 点画线
Android Drawing Line with 2 points
目前我正在开发一个应用程序,通过在位图上单击按钮,可以从一个点绘制到另一个点。
这是我在 MainActivity.java:
中的代码
public class MainActivity extends Activity {
LineView lineview;
Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//lineview = (LineView)findViewById (R.id.lineView1);
button = (Button)findViewById(R.id.btnCapture);
//lineview.setVisibility(View.INVISIBLE);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// lineview.setVisibility(View.VISIBLE);
}
});
}
}
LineView.java - class 画线
public class LineView extends View {
Paint paint = new Paint();
public LineView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public LineView(Context context, AttributeSet attrs, int defstyle) {
super(context, attrs, defstyle );
}
public LineView(Context context) {
super(context);
paint.setColor(Color.BLACK);
}
@Override
public void onDraw(Canvas canvas) {
canvas.drawLine(0, 0, 20, 20, paint);
}
}
现在它使用定义的坐标从头开始画线。我希望使用在 main activity 中声明的 2 个点的坐标绘制线。并且该功能应该在 onClick 之后工作。
提前致谢。
您必须创建一个扩展 View
的自定义视图 class。在那个 class 中,您将覆盖传递给 canvas 的 onDraw
方法。创建一个 Paint
对象并将其与上面的 drawLine
函数一起使用。
我建议您查找 Finger Paint 应用程序教程。网上至少有几个,很好的介绍了自定义视图和重写onDraw
方法
通过扩展视图 class 使用自定义视图来实现:
让我们称您的自定义 class 为 LineView。这就是 Line 的样子。
LineView.java
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;
public class LineView extends View {
Paint paint = new Paint();
public LineView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public LineView(Context context, AttributeSet attrs, int defstyle) {
super(context, attrs, defstyle );
}
public LineView(Context context) {
super(context);
paint.setColor(Color.BLACK);
}
@Override
public void onDraw(Canvas canvas) {
canvas.drawLine(0, 0, 20, 20, paint);
}
}
现在,您必须在主活动中对此进行实例化。您可以使用 java 代码或 xml 来做到这一点。使用 java 代码将如下所示:
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
public class MainActivity extends Activity {
LineView lineview;
Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lineview = (LineView)findViewById (R.id.lineView1);
button = (Button)findViewById(R.id.button1);
lineview.setVisibility(View.INVISIBLE);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
lineview.setVisibility(View.VISIBLE);
}
});
}
}
目前我正在开发一个应用程序,通过在位图上单击按钮,可以从一个点绘制到另一个点。 这是我在 MainActivity.java:
中的代码 public class MainActivity extends Activity {
LineView lineview;
Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//lineview = (LineView)findViewById (R.id.lineView1);
button = (Button)findViewById(R.id.btnCapture);
//lineview.setVisibility(View.INVISIBLE);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// lineview.setVisibility(View.VISIBLE);
}
});
}
}
LineView.java - class 画线
public class LineView extends View {
Paint paint = new Paint();
public LineView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public LineView(Context context, AttributeSet attrs, int defstyle) {
super(context, attrs, defstyle );
}
public LineView(Context context) {
super(context);
paint.setColor(Color.BLACK);
}
@Override
public void onDraw(Canvas canvas) {
canvas.drawLine(0, 0, 20, 20, paint);
}
}
现在它使用定义的坐标从头开始画线。我希望使用在 main activity 中声明的 2 个点的坐标绘制线。并且该功能应该在 onClick 之后工作。 提前致谢。
您必须创建一个扩展 View
的自定义视图 class。在那个 class 中,您将覆盖传递给 canvas 的 onDraw
方法。创建一个 Paint
对象并将其与上面的 drawLine
函数一起使用。
我建议您查找 Finger Paint 应用程序教程。网上至少有几个,很好的介绍了自定义视图和重写onDraw
方法
通过扩展视图 class 使用自定义视图来实现: 让我们称您的自定义 class 为 LineView。这就是 Line 的样子。
LineView.java
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;
public class LineView extends View {
Paint paint = new Paint();
public LineView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public LineView(Context context, AttributeSet attrs, int defstyle) {
super(context, attrs, defstyle );
}
public LineView(Context context) {
super(context);
paint.setColor(Color.BLACK);
}
@Override
public void onDraw(Canvas canvas) {
canvas.drawLine(0, 0, 20, 20, paint);
}
}
现在,您必须在主活动中对此进行实例化。您可以使用 java 代码或 xml 来做到这一点。使用 java 代码将如下所示:
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
public class MainActivity extends Activity {
LineView lineview;
Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lineview = (LineView)findViewById (R.id.lineView1);
button = (Button)findViewById(R.id.button1);
lineview.setVisibility(View.INVISIBLE);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
lineview.setVisibility(View.VISIBLE);
}
});
}
}