分享一个ImageView图片加载时显示的圆圈动画,单个的Image大图在显示图片加载中的等待动画很容易实现,但是在ListView中的item加载的动画不太好实现,本文是分享了一个自己实现的demo,当然有更好的实现方法,希望知道的朋友留言分享 不胜感激啊。
需求: 在listView中item是ImageView 在图片加载的过程中 显示的是等待的 动画
实现:
这里只写关键部分 Listview 的item xml就是一个ImageView
adapter的getView();方法如下
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
holder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(R.layout.list_item, null);
holder.image= (ImageView) convertView.findViewById(R.id.image);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
MyHttp.getInstance().loadImageAnim(list.get(position).getImage_url(), rightHolder.image);
return convertView;
}
class ViewHolder {
private ImageView image;
}
用到的三方库是xutils3.0
loadImageAnim();方法
public class MyHttp {
private volatile static MyHttp instance;
private Handler handler;
private static ImageOptions options;
public MyHttp() {
handler = new Handler(Looper.getMainLooper());
}
/**
* 单例模式
*
* @return
*/
public static MyHttp getInstance() {
if (instance == null) {
synchronized (MyHttp.class) {
if (instance == null) {
instance = new MyHttp();
}
}
}
return instance;
}
//加载中显示圆形进度框动画
public void loadImageAinm(final String url, final ImageView imageView) {
String urlString = url;
try {
Matcher matcher = Pattern.compile("[\\u4e00-\\u9fa5]").matcher(urlString);//处理路径中带有中文的情况
int count = 0;
while (matcher.find()) {
String tmp = matcher.group();
urlString = urlString.replaceAll(tmp, java.net.URLEncoder.encode(tmp, "utf-8"));
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
// if (isOption) {
// options = new ImageOptions.Builder()
// .setFailureDrawableId(R.drawable.icon_green)
// .setIgnoreGif(false)
// .setUseMemCache(true)
// .build();
// }
options = new ImageOptions.Builder().setUseMemCache(true).build();
x.image().loadDrawable(urlString, options, new Callback.ProgressCallback<Drawable>() {
@Override
public void onWaiting() {
imageView.setScaleType(ImageView.ScaleType.CENTER);
imageView.setImageResource(R.drawable.anim);
AnimationDrawable AniDraw = (AnimationDrawable) imageView.getDrawable();
AniDraw.start();
}
@Override
public void onStarted() {
}
@Override
public void onLoading(long l, long l1, boolean b) {
}
@Override
public void onSuccess(Drawable drawable) {
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setImageDrawable(drawable);
}
@Override
public void onError(Throwable throwable, boolean b) {
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setImageResource(R.drawable.icon_green);
}
@Override
public void onCancelled(CancelledException e) {
}
@Override
public void onFinished() {
}
});
}
}
其实核心就是这个方法 xutils一个对图片加载进度的监听,另外附上drawable.anim动画效果
Android studio res->drawable 下新建anim文件,(补充一下 这个不会的要百度一下Android studio下怎么添加这个animation-list文件, anim这个名字跟anim文件夹有点混淆,可以换一个别的名字)
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item
android:drawable="@drawable/s1"
android:duration="150"/>
<item
android:drawable="@drawable/s2"
android:duration="150"/>
<item
android:drawable="@drawable/s3"
android:duration="150"/>
<item
android:drawable="@drawable/s4"
android:duration="150"/>
</animation-list>
图片也发出来吧
就一张吧 用图片软件旋转四个角度就可以得到四张图片了
Xutils3.0网上有一大片 找不到的留邮箱
有问题或者有建议的欢迎指正 感激不尽呐!!!
效果图
截图的 上面是转圈圈的 另外这是我们公司正在开发的APP 旅游的 喜欢的可以去各大市场下载来看看0.0 名字叫 拍拍游 !O(∩_∩)O