【问题标题】:Draw a Line with a Java class Android用 Java 类 Android 画一条线
【发布时间】:2016-07-09 04:18:04
【问题描述】:

我是 Android(Java)的新手。 我想用这个画一条线:

public void drawAline(int x1,int y1, int x2, int y2){
        Canvas canvas=new Canvas();
        paint.setColor(Color.BLACK);
        canvas.drawLine(x1,y1,x2,y2,paint);
    }

paint.setColor 正在工作,但它没有画线:

呼叫:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        drawView = new DrawView(this);
        drawView.setBackgroundColor(Color.RED);
        drawView.drawAline(0,10,1000,10);

        setContentView(drawView);

有什么问题?

谢谢!

亲切的问候

丹尼尔

【问题讨论】:

  • drawAline 创建一个Canvas 并在其上绘制,但是这个Canvas 显示在哪里?
  • 如何显示画布?
  • 您必须覆盖您的视图的onDraw,例如:stackoverflow.com/questions/26727753/…

标签: java android canvas paint picturebox


【解决方案1】:

画一条线然后用这段代码简单地画线

public class MainActivity extends Activity {

DrawLine drawLine;

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    drawLine = new DrawLine(this);

    drawLine.setBackgroundColor(Color.CYAN);

    setContentView(drawLine);
  }

    class DrawLine extends View {
        Paint paint = new Paint();
        public DrawLine(Context context) {
            super(context);
            paint.setColor(Color.BLACK);
        }

        @Override
        public void onDraw(Canvas canvas) {
            canvas.drawLine(50, 100, 600, 600, paint);
            canvas.drawLine(50, 550, 770, 0, paint);
        }

    }
}

【讨论】:

    【解决方案2】:

    你不能像你试图做的那样去做。基本上在android中每个视图,即按钮或图像或EditText都在xml文件中定义,这些文件将连接到你的java文件(你也可以在你的java文件中定义视图)。在您的情况下,如果您想画一条线,例如将线视为图像。你可以像下面那样做。

    1) 首先创建一个扩展 ImageView 并覆盖 onDraw() 方法的类。

    2)然后在你的xml文件中定义视图

    Java 类

     package com.stack.line;
        public class CustomView extends View {
            Paint paint = new Paint();
            public CustomImageView(Context context) {
                super(context);
                   paint.setAntiAlias(true);
                paint.setColor(Color.RED);
            }
    
            @Override
            public void onDraw(Canvas canvas) {
                canvas.drawLine(10, 100, 150, 300, paint);
    
            }
    
        }
    

    custom_view.xml 文件

    <LinearLayout
    
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
    
    
    
        >
    
    <com.stack.line.CustomView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/custom"
    
        />
    
    </LinearLayout>
    

    MainActivity.java

    public class MainActivity extends Activity{
      @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.custom_view);
    
    }
    }
    

    希望这对您有所帮助。谢谢你

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 2014-12-27
      相关资源
      最近更新 更多