2012-11-15 47 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