2012-11-15 48 views
0

我正在做應用程序,它在畫布內顯示一個圖像。它在一個設備上運行良好,但是如果我在另一個設備上運行相同的應用程序,圖像顯示不正確,因爲在此onDraw我沒有提及imageview寬度或高度,所以任何人都可以建議我如何給寬度和高於imageview在方onDraw方法。如何使用畫布顯示圖像的所有尺寸

我的代碼是:

@Override 
public void onDraw(Canvas canvas) { 
    Paint painto = new Paint(); 
    painto.setAntiAlias(true); 
    painto.setColor(getResources().getColor(R.color.magnata)); 
    painto.setStrokeWidth(3); 
    painto.setStyle(Paint.Style.FILL); 
    Paint paint = new Paint(); 
    int leftx2 = (int) (10 * (screenWidth/1024)); 
    int topy1 = (int) (10 * (screenHeight/600)); 

    Bitmap kangoo = BitmapFactory.decodeResource(getResources(), 
      R.drawable.kangoo); 
    canvas.drawColor(Color.BLACK); 
    canvas.drawBitmap(kangoo, leftx2, topy1, painto); 
} 

回答

1

您可以通過使用onSizeChange()這可以讓你變更寬度和高度

protected void onSizeChanged(int w, int h, int oldw, int oldh) { 
     // TODO Auto-generated method stub 
     super.onSizeChanged(w, h, oldw, oldh); 
     newwidth=w; 
       newheight=h; 
    } 
+0

ok.but我的代碼我在這裏使用kangoo圖像我沒有提到任何hight和寬度先前.so如果給內部onsizechange()new寬度和高度也沒有使用權利? – user1105975

+0

嘗試使用newwidth和newheight而不是screenWidth和screenHeight – Abx

+0

是的。屏幕寬度和screenhight是在這個設備我可以運行該設備的高度和寬度 – user1105975

1

嘗試這樣

設置寬度和高度。
@Override 
protected void onSizeChanged(int w, int h, int oldw, int oldh) { 
      // TODO Auto-generated method stub 
      super.onSizeChanged(w, h, oldw, oldh); 
      newwidth=w; 
        newheight=h; 
     } 
@Override 
    public void onDraw(Canvas canvas) { 
     Paint painto = new Paint(); 
     painto.setAntiAlias(true); 
     painto.setColor(getResources().getColor(R.color.magnata)); 
     painto.setStrokeWidth(3); 
     painto.setStyle(Paint.Style.FILL); 
     Paint paint = new Paint(); 
     int leftx2 = (int) (10 * (newwidth/1024)); 
     int topy1 = (int) (10 * (newheight/600)); 

     Bitmap kangoo = BitmapFactory.decodeResource(getResources(), 
       R.drawable.kangoo); 
     canvas.drawColor(Color.BLACK); 
     canvas.drawBitmap(kangoo, leftx2, topy1, painto); 
    } 
+0

嗨嘗試過的代碼,但使用。 – user1105975

+0

是有沒有給imageview高和寬的任何另一種方式。 – user1105975

+0

是你使用getMeasuredWidth()和getMeasuredHeight()來獲得屏幕寬度和screenHeight? – Abx