Android:使用drawText()书写时看不到文本

|
          @Override 
          protected void onDraw(Canvas canvas) 
          {
            //Note:I do not  want to use the canvas object from this function param
            //If i do so its working , But i would like to understand why the following is not working

         Canvas c =new Canvas();
             Paint paint = new Paint();
             paint.setStyle(Paint.Style.FILL);
             paint.setAntiAlias(true);
             paint.setColor(Color.WHITE);
             c.drawText(\"HELLO CANVAS\",200,300,paint);
        }
更多代码
public class graphicProj extends Activity {

   private Canvas canvas;

    @Override
    public void onCreate(Bundle savedInstanceState) {
    {
        ....

        SimpleView simpleview_obj = new SimpleView(this);
        setContentView(simpleview_obj);
        simpleview_obj.onDraw(canvas); 
         .....

     new GetData().execute();

     }
    private static class SimpleView extends View {
        private ShapeDrawable mDrawable = new ShapeDrawable();
....    
    protected void onDraw(Canvas canvas) {

    //draw graphic objects
    ....
        }
     }

    public class GetData extends AsyncTask<Void, String, Void> {

         @Override
        protected void onPreExecute() {
             Log.d(\"PROJ\",\"STARTIN\");
        }

        @Override
        protected Void doInBackground(Void... unused) {
        ////My calculation and reading frm DataStream

         }

        @Override
        protected void onProgressUpdate(String... data) {

           //I Keep updating the result...
            Paint paint = new Paint();
            paint.setStyle(Paint.Style.FILL);
            paint.setAntiAlias(true);
            paint.setColor(Color.WHITE);
            canvas.drawText(result, 200, 300, paint);


        }

        @Override
        protected void onPostExecute(Void unused) {
             Log.d(\"PROJ\",\"END\");
        }
    }

}
    
已邀请:
在这里或您的其他问题中,您没有提供有关为什么ѭ2why的足够信息。没有理由在新画布上而不是已经存在的画布上绘画。 该代码不起作用,因为您的新Canvas
c
未分配任何内容。就像为日志创建字符串
myString
,但从未使用
Log.d(tag, myString)
编辑(阅读所有评论后) 如果您在onCreate()中计算一个值并想在onDraw()中显示该值,则只需这样做。将结果存储在成员变量中,然后可以在onDraw()中访问它。 否则:请提供完整的代码。我想您只是这样做比应该做的要复杂得多... 编辑2 您的代码有点混乱,并且在您不应该执行的地方做了很多事情。因此在ѭ6里面绘制是严重错误的。您应该封装计算和图形。 您应该做什么(无论如何,我建议使用SurfaceView代替View ...): 您应该启动AsynchTask,它会更新您要绘制的字符串。该字符串应该是View内部的变量,您可以在其中使用它进行绘图。 绘图本身应该由绘图线程调用(我记得:使用SurfaceView代替View作为父类)。在onDraw()内部,您应该只使用绘画对象,给定的画布和要绘制的字符串(不要忘记使
paint
变量也成为成员变量,以防止一次又一次地重新创建相同的对象以提高性能。 /内存原因)。 如果您不知道如何使用SurfaceView,或者想学习如何使用绘图线程,请阅读我有关2D绘图的教程:www.droidnova.com/2d-tutorial-series 最后一句话:您以正确的方式做了很多事情,只是与做事的地方混在一起。您应该尝试重新考虑您真正想要实现的目标以及如何以最简单的方式完成它。也许我的教程可以帮助您清除思路。     

要回复问题请先登录注册