Android 4.0.3 を搭載した低価格のタブレットを使用しています。ここにログ:
06-11 23:36:04.653: D/SynopticElement(1583): Size changed to 200x200
06-11 23:36:04.693: D/dalvikvm(1583): GC_FOR_ALLOC freed 62K, 12% free 7275K/8199K, paused 33ms
06-11 23:36:04.713: D/SynopticElement(1583): Size changed to 190x190
06-11 23:36:04.733: D/dalvikvm(1583): GC_FOR_ALLOC freed 9K, 12% free 7583K/8583K, paused 22ms
06-11 23:36:04.743: A/libc(1583): Fatal signal 11 (SIGSEGV) at 0xc52c9d4c (code=1)
コードのデバッグ:
canvas.scale(getWidth(), getWidth()); //I'm drawing a custom component
Paint frameBackgroundPainter = new Paint();
frameBackgroundPainter.setAntiAlias(true);
frameBackgroundPainter.setStyle(Paint.Style.FILL);
frameBackgroundPainter.setColor(0xff000000);
Paint frameBorderPainter = new Paint();
frameBorderPainter.setAntiAlias(true);
frameBorderPainter.setStrokeWidth(0.007f); //canvas is scaled
frameBorderPainter.setStyle(Paint.Style.STROKE);
frameBorderPainter.setColor(0xffaaaaaa);
RectF frameRect = getFrameBorder(); //simply get the Rect to draw on canvas
canvas.drawRect(frameRect, frameBackgroundPainter); //draw the background
// ---> If I comment this line app does not crash!!!!! <---
canvas.drawRect(frameRect, frameBorderPainter); //draw the border
ペイント ストロークの幅に問題があります。さまざまな値を試してみました。
0.007f -> crash
0.009f -> crash
0.5f -> ok
0.1f -> ok
線幅の値が非常に小さいため、別のキャンバス スケールで作業するように言われるかもしれません: わかりましたが、width=0.007f
Android 2.3 (タブレットと電話) と Android 3.0 (タブレット) でアプリを設定して実行すると、すべて問題ありません。 ..
別の方法で境界線を描画するソリューションを期待しているわけではありません。これが Android 4.0.3 のバグであるかどうかを誰かが知っているかどうか疑問に思っています。
また、私の低価格タブレットのグラフィック ハードウェアの問題かもしれないと考えています。残念ながら、テストを行う Android 4.0.3 デバイスは他にありません...
マイタブの指標:
DisplayMetrics{density=1.0, width=480, height=752, scaledDensity=1.0, xdpi=160.0, ydpi=160.42105}
デバイスの詳細については、このリンクにアクセスしてください。