3

描きたいPicture_Canvas

mCanvas.drawpicture(mPicture, mRect)

ターゲット API 7 を使用する<uses-sdk android:minSdkVersion="7"/>と、API < 14 のデバイスでは完全に動作しますが、Ice Cream Sandwich のデバイスでは動作しません。どうやらこれは、canvas.drawPicture がハードウェア アクセラレーションでサポートされていないためです:サポートされていない描画操作 マニフェストでハードウェア アクセラレーションを無効にすることで、これを修正しようとしました:

<application android:hardwareAccelerated="false" ...>

それでも機能しません。

4

2 に答える 2

6

私は同じ問題を抱えていて、プログラムでハードウェアアクセラレーションをオフにすることで解決しましたPicture

view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

ただし、 setLayerTypeは API 11 以降でのみサポートされています。そのため、代わりに次のメソッドを使用してください。

public static void setHardwareAccelerated(View view, boolean enabled){
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){
        if(enabled)
            view.setLayerType(View.LAYER_TYPE_HARDWARE, null);
        else view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
    }
}
于 2012-12-27T11:58:27.703 に答える
5

に置き換えdrawPictureてみてくださいdrawBitmap。構文はほぼ同じです。ソースの四角形 (画像のサイズにするだけ) とペイント (編集していない場合は画像を null にすることができます) を渡すだけです。

于 2012-04-30T13:56:09.857 に答える