onDraw()でキャンバスにいくつかのビットマップを描画するカスタムビューがあります。図面は機能しています。コードスニペットを見てください:
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
canvas.save();
if(appInitialized) {
hsSide.draw(canvas);
scaleA.draw(canvas);
scaleB.draw(canvas);
}
canvas.scale(mScaleFactor, mScaleFactor, pivotX, pivotY);
canvas.restore();
}
ピンチズームが画面に適用されたときにキャンバスを拡大縮小するScaleGestureListenerを実装しました。問題は、キャンバスがスケーリングされていないことです。キャンバスを拡大縮小するcanvas.scale(mScaleFactor, mScaleFactor, pivotX, pivotY);
前に配置したが、その後に描画を配置すると、つまり拡大縮小されません。通常の縮尺で描画します。描画方法は次のとおりです。if(appInitialized) {
hsSide.draw(canvas);
hsDide.draw:
@Override
public void draw(Canvas canvas) {
// TODO Auto-generated method stub
canvas.drawBitmap(mBitmap, canvas.getWidth()/2 - mBitmap.getWidth()/2, 0, null);
}
scaleA.draw:
@Override
public void draw(Canvas canvas) {
// TODO Auto-generated method stub
canvas.drawBitmap(mBitmap, canvas.getWidth()/2 - mBitmap.getWidth()/2, canvas.getHeight()/2 - mBitmap.getHeight()/2, null);
}
scaleB.draw:
@Override
public void draw(Canvas canvas) {
// TODO Auto-generated method stub
canvas.save();
mMatrix.setRotate(currentAngle, canvas.getWidth()/2, canvas.getHeight()/2);
canvas.setMatrix(mMatrix);
canvas.drawBitmap(mBitmap, canvas.getWidth()/2 - mBitmap.getWidth()/2, canvas.getHeight()/2 - mBitmap.getHeight()/2, null);
canvas.restore();
}
私がどこで間違っているのか考えてください...???