Canvas DrawLine是不可见的

时间:2016-10-12 19:16:42

标签: android canvas

我正在尝试使用canvas

在Android中绘制一行

我的班级:

public class LineDrawer extends View {

    public LineDrawer(Context context) {
        super(context);

    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Paint paint = new Paint();
        paint.setColor(Color.BLACK);
        paint.setStyle(Paint.Style.FILL_AND_STROKE);
        paint.setStrokeWidth(10);

        float left = 20;
        float top = 20;
        float right = 50;
        float bottom = 100;

        canvas.drawLine(left, top, right, bottom, paint);

    }
}

我的主要活动:

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       LineDrawer lineDrawer = new  LineDrawer(this);

        setContentView(R.layout.activity_Main);
    }
}

我找不到问题出在哪里,我尝试了互联网上的所有解决方案,但没有任何反应,仍然是空白活动..

我应该导入一些代码吗?

1 个答案:

答案 0 :(得分:0)

lineDrawer已创建,但未在任何地方添加。仅创建视图是不够的,您需要将其添加到当前显示的视图中以便考虑和绘制。您有两种选择:

  • 将其添加到XML布局中。您必须将以下构造函数添加到自定义视图中。

    public LineDrawer(Context context, AttributeSet attrs) { super(context, attrs); }

  • 使用addView()。无论如何,鉴于你的例子有多么简单,我将使用第一种(常用)方法。

作为附加注释,应在视图初始化时创建Paint paint对象,这是一项代价高昂的操作。有关详细信息,请参阅original documentation