ピボット ポイントからキャンバスを回転させるためにこれを適用すると、正しく動作しません。回転ポイントが変わっていないように見えます。私もマトリックスを使用してこれを適用しましたが、その時点ではうまく機能していません。キャンバスで回転しています。ビットマップを回転させたいのですが、UI に他の画像もいくつかあります。回転する必要があるビットマップを描画する直前に、キャンバスを回転させています。
@Override protected void onDraw(Canvas canvas)
{
/* * draw the background */
canvas.drawBitmap(mWood, 0, 0, null);
/* * compute the new position of our object, based on accelerometer */
final ParticleSystem particleSystem = mParticleSystem;
final long now = mSensorTimeStamp + (System.nanoTime() - mCpuTimeStamp);
final float sx = mSensorX;
final float sy = mSensorY;
particleSystem.update(sx, sy, now);
final Bitmap bitmap = mBitmap;
final Bitmap bitmapOvel = mBitmapOvel;
Paint p = new Paint();
p.setStyle(Style.FILL);
p.setColor(Color.GREEN);
canvas.drawBitmap(mWoodDial, 10, centerY - centerX + 20, null);
p.setColor(Color.RED);
p.setStyle(Style.FILL_AND_STROKE);
if (height <= 320)
{
p.setTextSize(14f);
}
else if (height <= 480)
{
p.setTextSize(18f);
}
else
{
p.setTextSize(26f);
}
String ss = Html.fromHtml(xx + "° && " + yy + "°") .toString();
canvas.drawBitmap(mBitmapOvelAlter, centerX + xx * 1.7f - 15f, centerY + 6f - yy, null);
canvas.rotate(xx, centerX, centerY);
p.setAntiAlias(true);
p.setFilterBitmap(true);
p.setDither(true);
canvas.save();
canvas.drawBitmap(mWoodDial1, 10, centerY - centerX + 20, p);
canvas.restore();
System.out.println("xx:" + xx + "::.. yy:" + yy);
// and make sure to redraw asap
invalidate();
}