2012-11-26 32 views
4

我開發了一個小遊戲,我的一個朋友/同事在他的摩托羅拉Xoom平板電腦上試了一下,發現渲染全部搞砸了!我試圖簡化所有事情,看看出了什麼問題,我認爲摩托羅拉Xoom在繪圖方面只是越野車。兩個版本都使用完全相同的APK,並使用完全相同的繪圖代碼。我有一個剛剛繪製一個黑色的矩形,現在,像這樣的自定義視圖:摩托羅拉Xoom是否有繪製錯誤,還是隻是我?

@Override 
public void draw(Canvas canvas) { 
    super.draw(canvas); 

    canvas.save(); 
    canvas.scale(16.0f, 16.0f); 
    float lineWidth = 20/16.0f; 

    paint.setAntiAlias(false); 
    paint.setStyle(Paint.Style.STROKE); 
    paint.setStrokeWidth(lineWidth); 
    paint.setColor(boardColor); // boardColor is just black 
    canvas.drawRect(100/16.0f, 
        100/16.0f, 
        200/16.0f, 
        200/16.0f, 
        paint); 

    canvas.restore(); 
} 

在我的衝刺GALAXY SII的Android 4.0.4,我得到(我也得到這個銀河SIII設備上) : Galaxy SII screenshot

在我朋友的摩托羅拉XOOM,安卓4.1.2,我得到: Motorola Xoom screenshot

所有我想要的是一個正確的尺寸,非抗鋸齒矩形。我究竟做錯了什麼?或者它是Xoom?

+0

另一件事情,哈哈,是,如果你設置抗鋸齒爲true,怪異的,褪色的XOOM廣場上至少對稱。 XD雖然仍然模糊不清,這讓我覺得它的確與這個非常小的原始線寬尺寸有關。 – leenephi

回答

0

你的縮放比較奇怪。如果我取出canvas.scale()並刪除rect中的所有「/ 16.0f」,那麼矩形看起來就好了。通過這些,我可以確認我的xoom從朋友的xoom中顯示了奇怪的矩形。

所以,你需要弄清楚縮放形狀的另一種方法。

mPixelsInOneDp = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1, 
      res.getDisplayMetrics()); 

我使用「mPixelsInOneDp,以確保所有的測量並沒有什麼最終被同樣在不同設備的DPS。我還沒有與任何結垢的問題,所以我你到底」的身影會需要,直到它看起來對Xoom的精細調整你的號碼。

+0

感謝在另一個Xoom上確認它。你有什麼想法,爲什麼Xoom在縮放圖形失敗? – Cornstalks

+0

它實際上不..我的意思是,我目前正在進行大量縮放的項目,並且沒有任何問題。這可能與平板電腦較低的Dp相比,較高的SII有所影響。要用我用來縮放設備上的圖形的東西來編輯該答案。 – leenephi

+0

也許因爲你的lineWidth以1.something像素結尾,縮放1-2像素使它看起來很奇怪。老實說,我只能想到! – leenephi

相關問題