5

私は、キャンバス#drawLinesとアンチエイリアスが有効になっているペイントオブジェクトを使用するAndroidカスタムグラフビューで作業しています。私の見解ではハードウェアアクセラレーションがオンになっていますときどきズームイン/ズームアウトすると、グラフの線の一部がばらばらに表示され、グラデーションにテーパーが付けられます。ソフトウェア層に変更したり、アンチエイリアスを無効にすると、問題は解決します。これはdrawLinesのバグですか?誰かが何が起こっているのか考えていますか?Android - ハードウェアアクセラレーションとアンチエイリアスを使用したdrawlineはアーティファクトの原因となる

最初のイメージが問題を示し、2番目のイメージがわずかに移動され、完全に結合された線でほとんどの時間にグラフがどのように見えるかを示します。

(画像は実証問題) enter image description here

(グラフがどのように見えるべきかを示す画像 - まだカップルマイナーギャップ) enter image description here

答えて

1

私はロマン・ガイによってこの記事は、あなたの質問のいくつかの答えだと思う:http://android-developers.blogspot.com/2011/03/android-30-hardware-acceleration.html

本質的にハードウェアアクセラレーションがオンになっていると、drawLinesではアンチエイリアスがサポートされません。また、ハードウェアアクセラレーションが常にあなたのアプリにとって「良い」とは限りません。あなたが描いているものが加速されるならば、あなたのアプリはそこから恩恵を受けるでしょうが、ある種の操作のために悪化するかもしれません。

私は、ハードウェアアクセラレーションを使用したときにラインがばらばらに見える理由を説明していると思います。あなたがアンチエイリアスをオフにしたときに、なぜそれが動作するのか、私は確信していません。私は、アンチエイリアスをオフにしても分かれているように見えますが、明らかにそうではありません!

+0

ありがとうございました。私は同様の問題に遭遇しました。 'LAYER_TYPE_SOFTWARE'を使って解決しようとしました。しかし、私のタッチイベントに基づいて、チャートには十字架がありますが、物事は遅くなります。なぜなのかご存知ですか?私の推測では、 'LAYER_TYPE_SOFTWARE'が使われているときに、ソフトウェアのオフスクリーンビットマップをGPUに転送するのに時間がかかります。 –

+0

アンチエイリアスを無効にした後、個別の問題は見えなくなりますが、描画された線はスムーズではありません。 –

1

サイズ変更ジェスチャー後に強制的にリフレッシュを試みてください。

私の古いAccelerometer Toyアプリを見てください。 (ええ、それは本当に更新する必要があります...)あなたがそのアプリケーションで問題が表示されない場合はおそらく私は助けることができます。