2011-10-20 67 views
0

为什么mImage没有显示?Drawable not displayed

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.S.对不起4我的英语

P.P.S. 我试图创建自己的双击自动滚屏射手哈 完整的代码在这里(SRY坏评论) 类经理http://pastebin.com/Sjd57uqT 类视图类scrolBckgr http://pastebin.com/A5u5UJea

+0

检查这个答案http://stackoverflow.com/questions/7740687/add-image-to-surface-view-in-android –

+0

Lalit Poptani,谢谢你的帮助! – MarkMark

回答

1

您需要调用mImage.setBounds(...);否则画布不知道绘制Drawable的位置。

+0

谢谢!有用 :) – MarkMark

0

我觉得你的主要问题是,一旦你开始线程.start();布尔mRunning为假,线程将立即完成。当您尝试在线程启动后调用.setRunning(true);时,它将不会产生任何效果,因为线程已完成。

+0

thx,但我不这么认为 - 实际上'doDraw()'是有效的,如果我重新评论说唱 – MarkMark

+0

我尝试在构造函数中设置'mRunning = true;'也没有任何改变 – MarkMark

+0

好吧,穿线一直很困难与绘图。你可以尝试调用invalidate()方法http://developer.android.com/reference/android/view/View.html#invalidate(),否则阅读这篇博文http://android-developers.blogspot.com /2009/05/painless-threading.html –