2013-04-25 2 views
3

У меня есть вид изображения, который я установил для 400dp (width) и 300dp (height). Это представление изображения используется в представлении списка, где я загружаю изображения с URL-адреса. Во время загрузки изображений, я показываю бар прогрессбар как анимация, который установлен примерно так:Android - imageview.setBackgroundResource issues

imageView.setBackgroundResource(R.drawable.progress); 
      final AnimationDrawable startAnimation = (AnimationDrawable) imageView 
        .getBackground(); 

      startAnimation.start(); 

после того, как изображение будет закончено загрузкой, я буду удалить эту анимацию и установить загруженное изображение, как показано ниже:

imageView.setBackgroundResource(0); 
      imageView.setImageBitmap(bitmap); 

Но проблема заключается в том, что анимация также принимает заданную ширину и высоту, то есть 400dp и 300dp соответственно, как я могу уменьшить размер анимации только в одиночку?

мой файл анимации: progress.xml

<?xml version="1.0" encoding="utf-8"?> 
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/anim_black" 
    android:oneshot="false" > 

    <item 
     android:drawable="@drawable/frame_1" 
     android:duration="100"/> 
    <item 
     android:drawable="@drawable/frame_2" 
     android:duration="100"/> 
    <item 
     android:drawable="@drawable/frame_3" 
     android:duration="100"/> 
    <item 
     android:drawable="@drawable/frame_4" 
     android:duration="100"/> 
    <item 
     android:drawable="@drawable/frame_5" 
     android:duration="100"/> 
    <item 
     android:drawable="@drawable/frame_6" 
     android:duration="100"/> 
    <item 
     android:drawable="@drawable/frame_7" 
     android:duration="100"/> 
    <item 
     android:drawable="@drawable/frame_8" 
     android:duration="100"/> 
    <item 
     android:drawable="@drawable/frame_9" 
     android:duration="100"/> 
    <item 
     android:drawable="@drawable/frame_10" 
     android:duration="100"/> 
    <item 
     android:drawable="@drawable/frame_11" 
     android:duration="100"/> 
    <item 
     android:drawable="@drawable/frame_12" 
     android:duration="100"/> 

</animation-list> 

кадр 1, кадр 2 .... кадр 12 являются PNG файлы, которые я получил, разделив рисунок.

+1

Вы пытаетесь установить анимацию вытяжку в setImageResource (а не как setBackgroundResource) – MatrixDev

ответ

2

Вы должны использовать setImageResource для анимации в вашем случае. Фоновое изображение всегда масштабируется, чтобы соответствовать всему изображению. Вам также нужно запустить ScaleType перед началом анимации и после загрузки изображения.

imageView.setImageResource(R.drawable.progress); 
imageView.setScaleType(ScaleType.CENTER); 

final AnimationDrawable startAnimation = (AnimationDrawable) imageView.getDrawable(); 
startAnimation.start(); 

// and once image is loaded 
imageView.setImageBitmap(bitmap); 
imageView.setScaleType(ScaleType.CENTER_INSIDE); 
+0

спасибо. работая идеально. Но анимация отображается таким образом. вертикально - центр и горизонтально - крайний левый. Как сделать его центром как по горизонтали, так и по вертикали? –

+0

Вы могли бы показать, как объявлен «ImageView» в макете? –

+0

1

Давай, чувак. Вы делаете это дольше. Лучше использовать пользовательскую панель Progressbar для вашей цели. Что вам нужно сделать, так это использовать макет кадра того же размера вашего изображения и поместить индикатор выполнения & в ваше изображение в том же представлении над вашим представлением изображения. После загрузки изображения измените видимость панели прогресса на View.GONE или View.INVISIBLE. Он может быть также использован в списках, без каких-либо проблем с памятью. Для реализации пользовательского уровня прогресса используйте это.

 <ProgressBar 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:indeterminateDrawable="@anim/progress_bar_anim" > 
     </ProgressBar> 

Где Yout вытяжке progress_bar_anim.xml является

<?xml version="1.0" encoding="utf-8"?> 
    <animated-rotate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:drawable="@drawable/pro_indi" 
    android:pivotX="50%" 
    android:pivotY="50%" /> 

pro_indi любое круглое изображение, которое будет вращаться.

<FrameLayout> 
    <ImageView> 
    <Progressbar> 
</FrameLayout>