Android 使用通用映像加载程序从服务器下载映像
在我的应用程序中,我正在从服务器下载图像,并将图像设置为查看寻呼机。一切正常,但下载图像时有轻微延迟(比如Wifi上的8-10秒)。图像大小范围为200kb-800kb。我还在下载过程中添加了一个进度条,但是进度条没有显示出来。 谁能帮我一下吗。 下面是代码Android 使用通用映像加载程序从服务器下载映像,android,universal-image-loader,Android,Universal Image Loader,在我的应用程序中,我正在从服务器下载图像,并将图像设置为查看寻呼机。一切正常,但下载图像时有轻微延迟(比如Wifi上的8-10秒)。图像大小范围为200kb-800kb。我还在下载过程中添加了一个进度条,但是进度条没有显示出来。 谁能帮我一下吗。 下面是代码 public void fetchImageUrl() { progressBar.setVisibility(View.VISIBLE); String url = URLMap.getUploadImgChangeSta
public void fetchImageUrl() {
progressBar.setVisibility(View.VISIBLE);
String url = URLMap.getUploadImgChangeStatus("get_amazonserver_image");
url = url.replace("{id}", companyId).replace("{crid}", callRecordId);
StringRequest request = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
System.out.println("Response0000" + response);
if (response.equals("[]")) {
setView();
} else {
getAmazonImageUrl(response);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i("ErrorListner=", error.getMessage());
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(request);
}
public void getAmazonImageUrl(String response) {
try {
imgUrl = new ArrayList<>();
String[] arr;
JSONArray jArray = new JSONArray(response);
for (int i = 0; i < jArray.length(); i++) {
if (jArray.getJSONObject(i).has("ImagePath")) {
arr = jArray.getJSONObject(i).getString("ImagePath").split("\\s+");
imgUrl = Arrays.asList(arr);
}
}
} catch (JSONException e) {
}
imageViewAdapter = new ImageViewAdapter(this, iv, imgUrl, viewPager, this);
viewPager.setAdapter(imageViewAdapter);
progressBar.setVisibility(View.GONE);
}
public void fetchImageUrl(){
progressBar.setVisibility(View.VISIBLE);
字符串url=URLMap.getUploadImgChangeStatus(“get_amazonserver_image”);
url=url.replace(“{id}”,companyId.replace(“{crid}”,callRecordId);
StringRequest=newStringRequest(request.Method.GET,url,new Response.Listener()){
@凌驾
公共void onResponse(字符串响应){
系统输出打印项次(“响应000”+响应);
if(响应等于(“[]”){
setView();
}否则{
getamazonimagerurl(响应);
}
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Log.i(“ErrorListner=,error.getMessage());
}
});
RequestQueue RequestQueue=Volley.newRequestQueue(this);
添加(请求);
}
public void getamazonimagerurl(字符串响应){
试一试{
imgUrl=newarraylist();
字符串[]arr;
JSONArray jArray=新JSONArray(响应);
for(int i=0;i
下面是我的适配器类
public class ImageViewAdapter extends android.support.v4.view.PagerAdapter {
private Context context;
ImageView imageView;
ProgressBar progressBar;
private LayoutInflater layoutInflater;
ViewPager viewPager;
Activity activity;
List<String> imgUrl;
public ImageViewAdapter(Context context, ImageView imageView, List<String> imgUrl,
ViewPager viewPager, Activity activity){
System.out.println("Inside ImageViewAdapter");
this.context=context;
this.imageView = imageView;
this.viewPager = viewPager;
this.activity = activity;
this.imgUrl=imgUrl;
System.out.println(imgUrl.size());
}
@Override
public int getCount() {
return imgUrl.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((LinearLayout) object);
}
@Override
public Object instantiateItem(ViewGroup container, final int position) {
layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View item_view = layoutInflater.inflate(R.layout.image_swipe_custom_layout, container, false);
//setting custom font
Typeface custom_font = Typeface.createFromAsset(context.getAssets(),"fonts/DroidSerif.ttf");
TextView tv = (TextView) item_view.findViewById(R.id.image_count);
tv.setTypeface(custom_font);
imageView = (ImageView) item_view.findViewById(R.id.imageView1);
progressBar=(ProgressBar)item_view.findViewById(R.id.imgLoadingPbar);
// UNIVERSAL IMAGE LOADER SETUP
DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()
.cacheOnDisc(true).cacheInMemory(true)
.imageScaleType(ImageScaleType.EXACTLY)
.displayer(new FadeInBitmapDisplayer(300)).build();
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
context)
.defaultDisplayImageOptions(defaultOptions)
.memoryCache(new WeakMemoryCache())
.discCacheSize(100 * 1024 * 1024).build();
com.nostra13.universalimageloader.core.ImageLoader.getInstance().init(config);
// UNIVERSAL IMAGE LOADER OPTION SETUP
DisplayImageOptions options = new DisplayImageOptions.Builder().cacheInMemory(true)
.cacheOnDisc(true).resetViewBeforeLoading(true)
.showImageForEmptyUri(R.drawable.ic_user)
.showImageOnFail(R.drawable.noimgavailable)
.showImageOnLoading(R.drawable.spinner_border).build();
/*final Animation animation= AnimationUtils.loadAnimation(context,R.anim.rotate);*/
com.nostra13.universalimageloader.core.ImageLoader imageLoader = com.nostra13.universalimageloader.core.ImageLoader.getInstance();
imageLoader.displayImage(imgUrl.get(position), imageView, options, new ImageLoadingListener() {
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
progressBar.setVisibility(View.GONE);
}
@Override
public void onLoadingStarted(String imageUri, View view) {
progressBar.setProgress(0);
progressBar.setVisibility(View.VISIBLE);
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
progressBar.setVisibility(View.GONE);
}
@Override
public void onLoadingCancelled(String imageUri, View view) {
}
});
if(position == 0) {
tv.setText("Image " + "1");
tv.setTypeface(custom_font);
}else if(position == 1) {
tv.setText("Image " + "2");
tv.setTypeface(custom_font);
} else if(position == 2) {
tv.setText("Image " + "3");
tv.setTypeface(custom_font);
}
container.addView(item_view);
return item_view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
//((ViewPager)container).removeView((View)object);
container.removeView((LinearLayout) object);
}
公共类ImageViewAdapter扩展了android.support.v4.view.PagerAdapter{
私人语境;
图像视图图像视图;
ProgressBar ProgressBar;
私人停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场;
查看页面查看页面;
活动;
列表格式;
公共ImageViewAdapter(上下文上下文、ImageView、列表imgUrl、,
查看页面查看页面,活动(活动){
System.out.println(“内部图像视图适配器”);
this.context=context;
this.imageView=imageView;
this.viewPager=viewPager;
这个。活动=活动;
this.imgUrl=imgUrl;
System.out.println(imgUrl.size());
}
@凌驾
public int getCount(){
返回imgUrl.size();
}
@凌驾
公共布尔值isViewFromObject(视图,对象){
返回视图==((LinearLayout)对象);
}
@凌驾
公共对象实例化项(视图组容器,最终int位置){
layoutInflater=(layoutInflater)context.getSystemService(context.LAYOUT\u INFLATER\u SERVICE);
最终视图项\u视图=布局平坦。充气(R.layout.image\u swipe\u custom\u布局,容器,假);
//设置自定义字体
Typeface custom_font=Typeface.createFromAsset(context.getAssets(),“font/DroidSerif.ttf”);
TextView tv=(TextView)项\视图.findViewById(R.id.image\计数);
设置字体(自定义字体);
imageView=(imageView)项_view.findViewById(R.id.imageView1);
progressBar=(progressBar)项_view.findViewById(R.id.imgLoadingPbar);
//通用图像加载器设置
DisplayImageOptions defaultOptions=新建DisplayImageOptions.Builder()
.cacheOnDisc(true).cacheInMemory(true)
.imageScaleType(imageScaleType.Justice)
.displayer(新的FadeInBitmapDisplayer(300)).build();
ImageLoaderConfiguration配置=新建ImageLoaderConfiguration.Builder(
(上下文)
.defaultDisplayImageOptions(默认选项)
.memoryCache(新的WeakMemoryCache())
.discCacheSize(100*1024*1024).build();
com.nostra13.universalimageloader.core.ImageLoader.getInstance().init(配置);
//通用图像加载程序选项设置
DisplayImageOptions=new DisplayImageOptions.Builder().cacheInMemory(true)
.cacheOnDisc(true).在加载之前重置视图(true)
.showImageForEmptyUri(R.drawable.ic_用户)
.showImageOnFail(R.drawable.noimgavailable)
.showImageOnLoading(R.drawable.spinner_border).build();
/*最终动画=AnimationUtils.loadAnimation(上下文,R.anim.rotate)*/
com.nostra13.universalimageloader.core.ImageLoader-ImageLoader=com.nostra13.universalimageloader.core.ImageLoader.getInstance();
imageLoader.displayImage(imgUrl.get(位置)、imageView、选项、新ImageLoadingListener(){
@凌驾
public void onload失败(字符串imageUri、视图视图、失败原因){
progressBar.setVisibility(View.GONE);
}
@凌驾
public void onLoadingStarted(字符串imageUri,视图){
progressBar.setProgress(0);
progressBar.setVisibility(View.VISIBLE);
}
@凌驾
public void onLoadingComplete(字符串imageUri、视图视图、位图加载图像){
progressBar.setVisibility(View.GONE);
}
@凌驾
public void onLoadingCancelled(字符串imageUri,视图){
}
});
如果(位置==0){
tv.setText(“图像”+“1”);
设置字体(自定义字体);
}否则如果(位置==1){
tv.setText(“图像”+“2”);
设置字体(自定义字体);
}否则如果(位置==2){
tv.setText(“图像”+“3”);
设置字体(自定义字体);
}
container.addView(项目视图);
返回项目视图;
}
@凌驾
公共项(视图组容器、int位置、对象){
//((ViewPager)容器)。移除视图((视图)对象);
container.removeView((LinearLayout)对象);
}
}
我已经试过了
com.nostra13.universalimageloader.core.ImageLoader imageLoader = com.nostra13.universalimageloader.core.ImageLoader.getInstance();
imageLoader.displayImage(imgUrl.get(position), imageView, options, new ImageLoadingListener() {
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
progressBar.setVisibility(View.GONE);
}
@Override
public void onLoadingStarted(String imageUri, View view) {
//progressBar.setProgress(0);
progressBar.setVisibility(View.VISIBLE);
view.setVisibility(View.GONE);
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
progressBar.setVisibility(View.GONE);
view.setVisibility(View.VISIBLE);
}
@Override
public void onLoadingCancelled(String imageUri, View view) {
}
});
imageLoader.displayImage(imageUri, imageView, options, new ImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
...
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
...
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
...
}
@Override
public void onLoadingCancelled(String imageUri, View view) {
...
}