Android ではサポートされなくなった Canvas.clipPath() を回避する 質問する

Android ではサポートされなくなった Canvas.clipPath() を回避する 質問する

Android 3.0からクリップパス()この方法は、ハードウェアアクセラレーションがオンになっているデバイスではサポートされなくなりました。(こちらをお読みください記事詳細については)。

キャンバスを使っていて、丸い画像を描画する必要があります。どうすればそれができるでしょうか?

*ハードウェア アクセラレーションをオフにできないので、他の解決策を探しています。

回答: @Malcolmさん、回答ありがとうございます。良い例を見つけました。この技術基本的にはマスクです。

ベストアンサー1

clipPathハードウェア アクセラレーションは API レベル 18 以上でのみサポートされ、API レベル 11 から 17 ではオフにする必要があります。

あなたが言及した記事には手がかりが含まれています:

アプリケーションがこれらの機能不足や制限の影響を受ける場合は、アプリケーションの影響を受ける部分のみハードウェアアクセラレーションをオフにすることができます。setLayerType(View.LAYER_TYPE_SOFTWARE、null)こうすることで、他のあらゆる場面でもハードウェアアクセラレーションを活用できます。ハードウェアアクセラレーションの制御アプリケーションのさまざまなレベルでハードウェア アクセラレーションを有効または無効にする方法の詳細については、こちらをご覧ください。

ここでの主なアイデアは、API レベルが 18 未満のデバイスでサポートされていないメソッドを使用する必要があるアプリケーションの部分で、ハードウェア アクセラレーションを無効にすることです。特定のビューに対してこれを行うことができ、アプリケーション全体で完全にオフにする必要はありません。

ハードウェア アクセラレーションをオフにしたくない場合は、Porter-Duff モードを使用することをお勧めします。円を含むビットマップを作成し、画像を元のコンテンツにクリップするモードを使用してキャンバスに画像を描画できます。

おすすめ記事