我有一个图像视图,我已设置为400dp(宽度)和300dp(高度)。此图像视图用于列表视图,我从URL加载图像。在加载图像的过程中,我会显示一个像动画一样的progess栏,其设置如下:
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帧是我通过拆分gif图像获得的png文件。
答案 0 :(得分: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);
答案 1 :(得分:1)
来吧老兄。你这样做的时间更长。最好为您的目的使用自定义Progressbar。您需要做的是使用与Imageview相同大小的框架布局并放置进度条和放大器。将您的imageview放入imageview上方的同一视图中。加载图像后,将进度条的可见性更改为View.GONE或View.INVISIBLE。它可以在listviews中使用,也不会出现任何内存问题。要实现自定义进度条,请使用此选项。
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminateDrawable="@anim/progress_bar_anim" >
</ProgressBar>
您可以绘制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>