我用以下方法动态创建画布:
Canvas canvas = new Canvas();
但是如何将其添加到linearLayout中呢?
linearLayout ll = new linearLayout(this);
解决方法:
您可以使用简单的addVIEw进行 *** 作,也可以执行更复杂的 *** 作(例如需要新线程进行图形绘制),然后可以使用自定义SurfaceVIEw将其添加到xml布局中
<com.util.MyDraw androID:ID="@+ID/surfaceVIEw" androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:layout_margintop="10px" androID:layout_marginleft="10px" androID:layout_marginRight="10px" androID:layout_below="@+ID/spinner1" />
然后创建一个名为MyDraw的类,该类扩展了SurfaceVIEw,在其中可以调用Thread进行绘制.
package com.util;public class MyDraw extends SurfaceVIEw implements Callback { private MyThread myThread; private SurfaceHolder holder; private Paint paint; Path path; public linkedList<Integer> List; { List = new linkedList<Integer>(); } public MyDraw(Context context) { super(context); holder = getHolder(); holder.addCallback(this); paint = new Paint(Paint.ANTI_AliAS_FLAG); paint.setStyle(Paint.Style.stroke); paint.setstrokeWIDth(2); paint.setcolor(color.GREEN); path = new Path(); } public voID surfaceCreated(SurfaceHolder holder) { myThread = new MyThread(holder, this); myThread.setFlag(true); myThread.start(); } public voID surfaceChanged(SurfaceHolder holder, int format, int wIDth, int height) {} public voID surfaceDestroyed(SurfaceHolder holder) { myThread.setFlag(false); } @OverrIDe protected voID onDraw(Canvas canvas) { path.rewind(); path.reset(); if (canvas != null) { canvas.drawcolor(color.BLACK); if (List != null && List.size() > 0) { path.moveto(0, List.get(0)); int sec; for(sec = 1; sec < List.size(); sec++) { path.lineto(sec, (List.get(sec)/divFactor)); } canvas.drawPath(path, paint); } }}
总结 以上是内存溢出为你收集整理的添加画布-Android全部内容,希望文章能够帮你解决添加画布-Android所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)