2011-10-20 68 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 –