Растягиваемое растровое растровое изображение горизонтального индикатора Android для Android растягивается - PullRequest
4 голосов
/ 12 сентября 2011

Я использую пользовательский индикатор выполнения для горизонтального индикатора выполнения в приложении Android.Это двухуровневый рисовальный ящик.Первый слой - изображение в полоску по диагонали с tileMode="repeat".Второй слой добавляет тень над полосами.Вот как выглядит отрисовка progress_bar_horizont.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/progress">
      <clip>
        <layer-list>
          <item>
            <bitmap android:src="@drawable/diagonal_stripes_0" android:tileMode="repeat" />
          </item>
          <item>
            <nine-patch android:src="@drawable/inset_shadow" />
          </item>
        </layer-list>
      </clip>
    </item>
    </layer-list>

Этот отрисовка используется в теме для рестайлинга элемента управления индикатора выполнения:

    <style name="Theme.Custom" parent="android:Theme.Light">
      <item name="android:progressBarStyleHorizontal">@style/Widget.ProgressBar.Horizontal.Custom</item>
    </style>

    <style name="Widget.ProgressBar.Horizontal.Custom" parent="android:Widget.ProgressBar.Horizontal">
      <item name="android:background">@drawable/bg_inset_gray</item>
      <item name="android:progressDrawable">@drawable/progress_bar_horizontal</item>
      <item name="android:indeterminateDrawable">@drawable/progress_bar_indeterminate_horizontal</item>
    </style>

Идея состоит в том, чтобы сделать диагонально-полосатый индикатор выполнения, который не растягивается, но увеличивается в ширине по мере выполнения операции.Вот почему используется <clip>.

В большинстве случаев работает нормально.Однако время от времени (без каких-либо шансов воспроизвести специально) он начинает растягивать один фрагмент рисунка вместо того, чтобы соответствующим образом его обрезать.

Приложение разработано с android:minSdkVersion="7" и работает на HTC Desire с Android2.2.

Буду признателен за любую помощь.

...