簡體   English   中英

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 - 繪制線條的類

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

}

現在,它使用定義的坐標從頭開始繪制線條。 我希望使用在主要活動中聲明的2個點的坐標繪制線。 並且該功能應該在onClick之后工作。 提前致謝。

您必須創建一個擴展View的自定義視圖類。 在該類中,您將覆蓋傳遞畫布的onDraw方法。 創建一個Paint對象並將其與上面的drawLine函數一起使用。

我建議查找Finger Paint應用程序教程。 至少有幾個在線,它們是對自定義視圖的良好介紹並覆蓋了onDraw方法。

通過擴展視圖類來實現這一點來使用customview:讓我們調用你的自定義類說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);
}

}

現在,您必須在mainactivity中實例化它。 你可以使用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);
        }
    });


  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM