1

私が遊んでいるおもちゃのグラフィックアプリでは、次のようなものがあります。

Path p = new Path();
p.addCircle(40,40,40,Path.Direction.CW);
canvas.drawPath(p);

これは、エミュレーターと電話の両方で期待どおりに機能します。しかし今、私はこれを試します:

Path p = new Path();
p.addCircle(40,40,40,Path.Direction.CW);
Path q = new Path(p);
canvas.drawPath(q);

これはエミュレータで期待どおりに機能しますが、4.04を実行しているNexusSでは何もしません。

同様に、私が試してみると:

Path p = new Path();
p.addCircle(40,40,40,Path.Direction.CW);
Matrix m = new Matrix();
m.setTranslate(50,50);
Path q = new Path();
p.transform(m,q);
canvas.drawPath(q);

繰り返しますが、これはエミュレーターでのみ機能し、私の電話では機能しません。ここでの問題は何ですか?例外はなく、ログには何も役立ちません。実行は関連するコードを介して実行されます。

4

1 に答える 1

1

ハードウェアアクセラレーションが原因で、これが失敗していると思います。簡単なテストとして、スイッチをオフにしてみてください。

私が使用しているプロットライブラリで同様の問題に遭遇しました。この問題は、描画コードに含まれていた複数の新しい Path() 呼び出しに関連しているようです。それらが実際に属するコンストラクターにそれらを引き出したところ、問題なく動作しています。

于 2012-07-11T17:19:12.273 に答える