2014-02-21 5 views
0

Я пытаюсь создать progressBar, используя изображение с текстом на нем (на самом деле изображение является текстовым логотипом, сохраненным как png).Не удается центрировать progressDrawable на фоне in progressBar

Я уже создал нормальный progressBar, используя 2 изображения (серый в качестве фона и синий в качестве индикатора выполнения), и он работал нормально.

<ProgressBar 
    android:id="@+id/pbLoading" 
    style="?android:attr/progressBarStyleHorizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="25dp" 
    android:layout_marginRight="25dp" 
    android:layout_marginTop="130dp" 
    android:background="@drawable/grayloadingbar" 
    android:progress="@integer/loadingProgress" 
    android:progressDrawable="@drawable/custom_progress" 
    android:radius="0dp" 
    android:visibility="visible" /> 

Это custom_progress.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
<item android:id="@android:id/progress"> 
     <bitmap 
      android:gravity="center" 
      android:src="@drawable/blueloadingbar" 
      android:layout_height="fill_parent" /> 
     <corners android:radius="0dp" /> 
    </item> 
</layer-list> 

Проблема заключается в том, что замена этих 2 изображений с другими изображениями (текст логотип изображения, упомянутое выше), это не больше хорошо выглядеть.

Погрузочные работы просто прекрасны, и я вижу прогресс, но шлейфы с картинками выполнения имеют фиксированный размер, в то время как фон src является переменным, в зависимости от дисплея, и я могу изменить его размер самостоятельно, что я не могу сделать для индикатор выполнения.

Вот XML:

<ProgressBar 
    android:id="@+id/pbLoading" 
    style="?android:attr/progressBarStyleHorizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="68dp" 
    android:layout_gravity="center_vertical" 
    android:layout_marginLeft="25dp" 
    android:layout_marginRight="25dp" 
    android:layout_marginTop="130dp" 
    android:background="@drawable/loading_bw" 
    android:minHeight="20dip" 
    android:mirrorForRtl="false" 
    android:progress="@integer/fullProgress" 
    android:progressDrawable="@drawable/custom_progress" 
    android:radius="0dp" 
    android:visibility="visible" /> 

И custom_progress

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
<item android:id="@android:id/progress"> 
     <bitmap 
      android:gravity="center" 
      android:src="@drawable/loading_color" 
      android:layout_width="fill_parent" 
      android:layout_height="90dp" /> 
     <corners android:radius="0dp" /> 
    </item> 
</layer-list> 

Я не могу показать вам изображения, но весь прогресс бар выглядит она 100% ширины & высоты и полей 25dp top & влево, если вы возьмете верхний левый угол фонового изображения в качестве контрольной точки.

Любые идеи?

Я много рыл для этого и пока не повезло.

+0

Таким образом, резюме этого вопроса должно быть сосредоточено на вашем баре прогресса? – cafebabe1991

+0

Вид. Идея состоит в том, чтобы иметь бот-изображения один поверх другого, чтобы постепенно появлялись голубые изображения, и поэтому использование серых текстов на изображении постепенно становилось синим. – daydr3am3r

ответ

1

Вы можете добавить тему в свой индикатор выполнения, например Сделайте макет вокруг вашей панели выполнения, например: relativeLayout поместите свой индикатор прогресса внутри, а затем примените этот тег к макету. Итак, компоновка с индикатором прогресса теперь будет скорректирована как диалог.

android:theme="@style/Theme.Dialog" 

Второй метод

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth(); 
int height = display.getHeight(); 

Нанести выше ширина/2 и высота/2, как ширина и высота вашего прогресс бар.

Метод 3

Если вы хотите, чтобы размеры экрана в пикселях можно использовать GETSIZE:

Display display = getWindowManager().getDefaultDisplay(); 
Point size = new Point(); 
display.getSize(size); 
int width = size.x; 
int height = size.y; 

Нанести выше ширина/2 и высота/2, как ширина и высота вашего прогресса bar.But, так как эти размеры будут в пикселях. Поэтому отрегулируйте их соответствующим образом.

Примечание:

Метод 3 работает с ApiLevel: 13 и выше всего.