2

コードで NullPointerException がスローされています。

canvas.drawBitmap(icon, null, rect, null);

キャンバスが null でないことを確認するために、すぐ上に Log ステートメントがあります。2番目のRectがnullであることが問題だと思いますか? nullのままでいいと思いました。

logCat の出力は次のとおりです。

07-22 21:34:16.807: E/AndroidRuntime(19340): FATAL EXCEPTION: Thread-3384
07-22 21:34:16.807: E/AndroidRuntime(19340): java.lang.NullPointerException
07-22 21:34:16.807: E/AndroidRuntime(19340):    at
android.view.GLES20RecordingCanvas.drawBitmap(GLES20RecordingCanvas.java:118)
07-22 21:34:16.807: E/AndroidRuntime(19340):    at   
com.live.LedgeView$DrawLedgeThread.run(LedgeView.java:88)
4

5 に答える 5

1

はい。「icon」ビットマップが null ではなく、「rect」であることも確認してください。

 Bitmap icon= BitmapFactory.decodeResource(getResources(),
                            R.drawable.icon);

これらのリンクを参照してください。それはあなたを助けるかもしれません。 ここをクリックしてサンプル 1 を表示

サンプル2を見るにはここをクリック

于 2013-07-23T05:22:24.860 に答える
0

Null Pointer Exを持っていました。android.view.GLES20RecordingCanvas.drawBitmap で

onDraw メソッド内 (ビュー クラス内) で "drawBitmap" を実行する必要があることを読みました。

私にとっては、onDraw のトリガーに invalidate() メソッドを使用しました。invalidate() を呼び出す前に、(ビュー クラスの) オブジェクトにいくつかのパラメーターを設定したので、onDraw が呼び出されると、私が設定したパラメーターが使用されます。

それがうまくいくことを願っています:)

レオナルド。

于 2014-05-08T19:54:09.917 に答える
0

通常、私はこのようにします。ビットマップをスレッドでデコードし、キューに入れます。キューを UI スレッドと同期します。UI スレッドはキューからビットマップを取得し、描画します。すべての UI 処理は UI スレッドで行う必要があります。

于 2013-07-23T02:02:50.870 に答える
0
public void drawBitmap(Bitmap bitmap, Rect src, RectF dst, Paint paint) {
    if (dst == null) {
        throw new NullPointerException();
    }
    throwIfRecycled(bitmap);
    native_drawBitmap(mNativeCanvas, bitmap.ni(), src, dst,
            aint != null ? paint.mNativePaint : 0, mScreenDensity,
            bitmap.mDensity);
}

そのメソッドに送信する前に dst の null をチェックすることで、この問題を修正しました。dst が null の場合、メソッド「onBoundsChange」で毎回保存したローカル変数を使用しました。これは私の問題を解決します。

于 2014-09-05T08:43:52.783 に答える