私は最近Androidに問題がありました: Unconnの助けを借りて解決された中心の周りの画像の回転。
ただし、このソリューションは、機能しているだけでなく、RotateAnimationのものよりもはるかにパフォーマンスが劣っています。
これまでのところ:1)2つのImageViewが重なり合ったFrameLayout 2)測定された見出しに従って下のビューを移動するSensorEventHandler。RotateAnimationを使用する場合、これは許容範囲内で機能します
スピードを上げてアニメーションを少しスムーズにしたかったのですが、劇的に失敗しました。現在の解決策は次のとおりです。1)個別のスレッドを使用し、レイヤーの描画を制御するSurfaceView 2)以下のコードを実行しないと、スレッドは約50fpsに達する可能性があります。3)以下のコードでは、フレームレートが5ps以下に低下するため、非常にスムーズなものではなくなります...
コードは次のとおりです。
mRadar:以前のリソースからロードされた「レーダー」を示すビットマップmHeading:センサーから取得された現在の方位(度単位)mRadarW、mRadarH:作成時に決定された画像の初期幅/高さ
Matrix m = new Matrix();
m.setRotate(mHeading, mRadarW/2, mRadarH/2);
Bitmap rotated_radar = Bitmap.createBitmap(mRadar, 0, 0, mRadarW, mRadarH, m, true);
canvas.drawBitmap(rotated_radar, (mRadarW - rotated_radar.getWidth())/2, (mRadarH - rotated_radar.getHeight())/2, null);
canvas.drawBitmap(mRadar, 0, 0, null);
Matrix / drawBitmapのものはそれほど良くないことが知られていますか、実際にはRotateAnimationよりも悪いですか?これを使用する機会がない場合:どのようなオプションを提案できますか?今のところRotateAnimationは機能しますが、RotateAnimationに行く前に、もっと複雑な画像を作成する必要があるので、drawBitmapや友達と一緒にまた緩むのではないかと心配しています...
ああ、私はCALayersが恋しいです:)