0

キャンバス内に1つの画像を表示するアプリをやっています。あるデバイスではうまく機能していますが、別のデバイスで同じアプリを実行すると、画像が正しく表示されません。これは、画像ビューの幅や高さonDrawについて言及していないためです。サイドメソッドのイメージビュー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);
}
4

2 に答える 2

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;
    }
于 2012-11-15T10:43:36.847 に答える
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);
    }
于 2012-11-15T10:59:52.223 に答える