Java 不显示可绘制的图形

Java 不显示可绘制的图形,java,android,drawable,Java,Android,Drawable,为什么不显示mImage public class Manager extends Thread{ private SurfaceHolder mSurfaceHolder; private boolean mRunning; public Drawable mImage; public Manager(SurfaceHolder surfaceHolder, Context context){ mSurfaceHolder = surfaceHolder;

为什么不显示
mImage

public class Manager extends Thread{
    private SurfaceHolder mSurfaceHolder;
    private boolean mRunning;



public Drawable mImage;
public Manager(SurfaceHolder surfaceHolder, Context context){

     mSurfaceHolder = surfaceHolder;
     mRunning = false;

     Resources res = context.getResources();


         mImage = res.getDrawable(R.drawable.nhero2);


  public void setRunning(boolean running)
   {
       mRunning = running;
   }

   public void run()
   {
       while (mRunning)
       {
           Canvas canvas = null;
           try
           {
               // подготовка Canvas-а
               canvas = mSurfaceHolder.lockCanvas();
               synchronized (mSurfaceHolder)
               {
                   // собственно рисование
                   //doDraw(canvas);
                   mImage.draw(canvas);
               }
           }
           catch (Exception e) { }
           finally
           {
               if (canvas != null)
               {
                   mSurfaceHolder.unlockCanvasAndPost(canvas);
               }
           }
       }
   }
}
对不起,我的英语不好

p.p.S。 我想创造我自己的斯克罗尔射手哈 此处的完整代码(sry用于错误注释) 班级经理
类视图和类scrolBckgr

我认为您遇到的主要问题是,只要使用
.start()启动线程
布尔值
mRunning
为false,线程将立即完成。当您尝试调用
.setRunning(true)时线程启动后不会有任何效果,因为线程已经完成

您需要调用mImage.setBounds(…);否则画布将不知道在何处绘制可绘制对象。

请检查此答案Lalit Poptani,谢谢您的帮助!thx,但我不这么认为-实际上,如果我重新打包注释,并尝试设置
mRunning=true,则
doDraw()是有效的也在构造函数中,但没有任何变化。好吧,绘制线程总是很困难的。您可以尝试调用invalidate()方法,或者阅读本文