2012-11-03 13 views
24

私は、キャンバスの現在の変換マトリックスを使用して境界のセットを変換する、次のコードスニペットを持っています。廃止予定のCanvas.getMatrix()の代わりになるものは何ですか?

final RectF bounds = renderer.computeBounds 
    activeCanvas.getMatrix().mapRect(result, bounds); 
    return bounds; 

はしかし、最新のAPIレベル(16)と私はAPI 16 Diff Specificationによって確認されるよう

The method getMatrix() from the type Canvas is deprecated

を示す警告を取得します。

どちらも問題ありませんが、Canvas.getMatrix()の現在のドキュメントには、非推奨が記載されておらず、代替手段も提供されていません。回避策として、私は今この警告を単に抑止していますが、私は本当にこのように見えるのは新しいと改善された(tm)の方法を知りたいと思います。

+0

canvas.concat(matrix) –

答えて

9

マトリックスはキャンバスではなくビューで処理されるようになりました。残念ながら、この件に関するGoogleの決定については説明できませんが、2つの方法で全く同じものを再現できるはずです。

+0

これは本当ですが、 'getMatrix'、' getRotation' ...がapi 11に導入されました。とにかく、TransformationInfoがこの情報を保持するために導入されました。どうして?私は気づいていませんが、新しいアニメーションapiと関係していると思われます –

+0

なぜ、Canvasを使って作業するのがViewで直接作業するより複雑になるのでしょうか?ビューを扱うロジックは、コードをより統一しています。これはおそらく、実現しようとするロジックです。 – ben

+0

しかし、キャンバスはビットマップを描画/生成するときに非常に便利です。 –

3

ビューへのアクセス権がない場合は:問題を回避するには

を、ほとんどの状況では、あなたが)(canvas.scaleを使用して、任意の変換を適用することができ、canvas.translate()など行列を検索して変更し、再度行列を設定するのではなく、

Google issue with getMatrix when hardwareAcceleration is enabled(Sandeepが参照)。

関連する問題