1

プログラムで描画可能な形状の色を変更する必要があります...

私はこれを使用しています

<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="@color/app_theme_blue" />
    <corners android:radius="8dp" />
    <padding
        android:bottom="10dp"
        android:left="10dp"
        android:right="10dp"
        android:top="10dp" />
</shape>

ここで の色を変更する必要がありandroid:color="@color/app_theme_blue"ました。私を助けてください。

4

1 に答える 1

2

はい、できます。そして、それは本当に超簡単です。

まず第一に、色を適用するニュートラルなソースを用意するために、白い画像で作業する方が簡単であることを覚えておいてください (したがって、透明な背景に白い輪郭があると想像してください)。

Drawable drw = mContext.getResources().getDrawable(R.id.baseDrawable);

この行が行うことは、単にリソースから Drawable を取得することです (baseDrawable - 好きな名前を付けます)。

次に、必要な色とブレンド モードの 2 つのパラメータを受け取る setColorFilter() メソッドのオーバーロードを使用します。

Drawable はデフォルトで変更不可であるため、変換を適用するには変更可能にする必要があることに注意してください。

drw.mutate().setColorFilter(finalColor, PorterDuff.Mode.MULTIPLY);

これで、同じリソースの多くのバリエーションを作成する必要なく、ソフトウェアに集中できます。

ちなみに、API レベルの要件はありません。API レベル 1 以降で機能します。

PS:

必要なインポートは次のとおりです。

import android.content.Context;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
于 2014-06-11T14:57:26.663 に答える