Значки Android Design Design Значки, нарисованные с помощью API Radial Gradient 22 и API 23, не работают - PullRequest
0 голосов
/ 26 сентября 2018

Значки дизайна материалов Android, отображаемые с помощью API 22 радиального градиента (Build.VERSION_CODES.LOLLIPOP_MR1) и API 23 (Build.VERSION_CODES.M), не работают.Пример:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
    android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,19h-2v-2h2v2zM15.07,11.25l-0.9,0.92C13.45,12.9 13,13.5 13,15h-2v-0.5c0,-1.1 0.45,-2.1 1.17,-2.83l1.24,-1.26c0.37,-0.36 0.59,-0.86 0.59,-1.41 0,-1.1 -0.9,-2 -2,-2s-2,0.9 -2,2L8,9c0,-2.21 1.79,-4 4,-4s4,1.79 4,4c0,0.88 -0.36,1.68 -0.93,2.25z"/>
<aapt:attr name="android:fillColor">
    <gradient
        android:type="radial"
        android:tileMode="mirror"
        android:startColor="#FF476A"
        android:centerColor="#B647FF"
        android:endColor="#91FF47"
        android:gradientRadius="10"

        />
</aapt:attr>
</vector>

Без применения градиента все работает нормально.Как в примере ниже.

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24.0"
    android:viewportHeight="24.0">
<path
    android:fillColor="#FF000000"
    android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,19h-2v-2h2v2zM15.07,11.25l-0.9,0.92C13.45,12.9 13,13.5 13,15h-2v-0.5c0,-1.1 0.45,-2.1 1.17,-2.83l1.24,-1.26c0.37,-0.36 0.59,-0.86 0.59,-1.41 0,-1.1 -0.9,-2 -2,-2s-2,0.9 -2,2L8,9c0,-2.21 1.79,-4 4,-4s4,1.79 4,4c0,0.88 -0.36,1.68 -0.93,2.25z"/>

Вы можете воспроизвести его в методе onDraw View.with этого кода.

    @Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    Drawable drawable = ContextCompat.getDrawable(getContext(), R.drawable.ic_help);
    drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
    drawable.draw(canvas);
}
...