Фоновый градиент приводит к цветной полосе - PullRequest
2 голосов
/ 26 февраля 2020

Я попытался сделать линейный градиент на своем фоне для своего приложения, и это привело к цветным полосам.

Что я сделал:

Я создал форму с именем window_background_app. xml

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <gradient
        android:angle="45"
        android:endColor="#Fe005694"
        android:startColor="#fe2D8ACC"
        android:type="linear" />

</shape>

Я использовал эту форму в стиле для применения к фону:

<resources>
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowBackground">@drawable/window_background_app</item>
    </style>

</resources>

Я использовал этот стиль в манифесте моего приложения:

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:name="generic_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

Проблема

При запуске моего приложения фон отображал некоторые полосы с градиентом background_with_banding

Я обнаружил в похожих вопросах (например, этот ), что мне следует:

  • Попытаться установить dither для true для фона. Проблема : использование дизеринга теперь не рекомендуется.
  • Чтобы установить Pixelformat в PixelFormat.RGBA_8888. Проблема : это ничего не изменило для меня.

Я получил эту проблему на:

  • OnePlus 5t Api 28 (реальное устройство)
  • Samsung S8, Api 28 (реальное устройство)
  • Пиксель 2 Api 24 (эмулятор)
  • Пиксель 2 Api 22 (эмулятор)
  • Пиксель C Api 27 (эмулятор)

Не появилось полос:

  • Samsung Galaxy J3 Api 22 (реальное устройство)
  • Samsung SM -T533 Api 22 (реальное устройство)

Вопрос

Я не уверен, что проблема связана с обновлениями версии Android или из материал (или оба). И еще одна проблема, с которой я столкнулся, заключалась в том, что многие решения, которые я мог найти в Интернете, были довольно старыми (самые последние были примерно в 2014 году).

Поэтому мой вопрос:

Есть ли какие-то новые решения для цветовой полосы на градиенте, так как dither = true и pixelFormat = RGBA_8888?

...