java - Android 绘图线 2 点

标签 java android android-canvas

目前我正在开发一个应用程序,通过在位图上单击按钮,可以从一个点绘制一条线到另一个点。 这是我在 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 - 画线的类

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);
}

}

现在它使用定义的坐标从头开始画线。我希望使用在主要 Activity 中声明的 2 个点的坐标绘制线。并且该功能应该在 onClick 之后工作。 提前致谢。

最佳答案

通过扩展 View 类来使用customview来实现: 让我们称您的自定义类为 LineView。这就是 Line 的样子。

线型 View

    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);
}

}

现在,您必须在主 Activity 中实例化它。您可以使用 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);
        }
    });


  }
}

关于java - Android 绘图线 2 点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30877994/

相关文章:

java - 使用 Comparator 对列表进行排序时出现 java.lang.illegalArgumentException : comparison method violates its general contract !

VM上的Android应用程序开发

java - 如何找出应用程序保存我的可变位图的位置

Android 相机卡住 - 无法拍摄照片

android - 如何删除启动画面之前出现的白屏?

java - 通过触摸检测位图中的颜色

java - 从像素坐标在图片上绘制矩形

java - 如何在 Android Realm 中保存对象列表?

java - 将 ByteBuffer 转换为字节数组 java

java - 具有依赖注入(inject)错误的生产者/消费者模式