我正试图使用GridView毕加索\通用图像加载器制作一个画廊,我遇到了一些问题。每次我只加载本地文件(从外部存储),而不是从web。我制作了两个视频,更好地描述了问题,然后是文字。
我使用自定义适配器扩展BaseAdapter。
拇指
是带有图像的File
数组
加载图像速度足够快,但滚动速度非常慢。这是youtube上的视频演示
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//Get the view
View view;
if (convertView == null)
view=inflater.inflate(R.layout.gallery_photo_item,parent,false);
else
view = convertView;
//find the componetnts
final ImageView image_view = (ImageView)view.findViewById(R.id.galley_photo_item_image);
final CheckBox check = (CheckBox)view.findViewById(R.id.galley_photo_item_checkbox);
//Toggling checkbox if DELETE MODE
if(is_checking) {
check.setChecked(false);
check.setVisibility(View.VISIBLE);
}
else
check.setVisibility(View.INVISIBLE);
view.setTag(position);
check.setTag(position);
//Some event handling
check.setOnClickListener(this);
view.setOnClickListener(this);
//Setting up Picasso
Picasso.Builder builder = new Picasso.Builder(context);
builder.listener(new com.squareup.picasso.Picasso.Listener() {
@Override
public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception) {
Log.e("Picasso","Loading failed: "+exception.getMessage());
image_view.setVisibility(View.GONE);
}
});
//Display image
Picasso pic = builder.build();
pic
.load(thumbs[position])
//.placeholder(R.drawable.ic_launcher)
.fit()
.into(image_view);
return view;
}
滚动速度快,但加载速度慢。此外,当你快速滚动时,你可以看到错误的图像,这些图像将被正确的(加载后)替换几秒钟。youtube上的演示
我在这里添加了视图保持器模式。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder view_holder;
if(convertView==null)
{
convertView = inflater.inflate(R.layout.gallery_photo_item,parent,false);
ImageView image = (ImageView)convertView.findViewById(R.id.galley_photo_item_image);
CheckBox checkBox = (CheckBox)convertView.findViewById(R.id.galley_photo_item_checkbox);
view_holder = new ViewHolder(convertView,image,checkBox);
convertView.setTag(view_holder);
}
else
view_holder = (ViewHolder)convertView.getTag();
//Toggle checkbox on DELETE MODE
if(is_checking) {
view_holder.CheckBox.setChecked(false);
view_holder.CheckBox.setVisibility(View.VISIBLE);
}
else
view_holder.CheckBox.setVisibility(View.INVISIBLE);
//view.setTag(position);
//check.setTag(position);
//Event handling
view_holder.CheckBox.setOnClickListener(this);
view_holder.View.setOnClickListener(this);
//Display image
String uri = Uri.fromFile(thumbs[position]).toString();
ImageLoader loader = ImageLoader.getInstance();
loader.displayImage(uri,view_holder.ImageView, options);
return convertView;
}
有什么好方法可以让gallery更快地工作(完美地作为一个原生android应用程序)?
尝试使用谷歌推荐的Glide Image Loader Library,请参阅此处:-https://coderzpassion.com/android-working-glide-image-loader-library/
从internet加载文本数据并链接到图像。我无法理解如何在listview中加载图像。阅读后,它需要使用毕加索或通用图像加载器,但不明白如何使用。请更正我的代码 }
我正在使用毕加索图书馆。我知道,如果我将图片从URL加载到图像视图中,有一种回调方法。但我不想加载到imageview中。相反,我想将其另存为位图。所以我用了下面的代码 我怎样才能得到一个回调方法,知道我的图像是成功下载使用毕加索? 不要说位图对象的空检查。这会导致错误。
我有一个从服务器加载映像的项目。我这样用毕加索, 多谢了。
我正在使用volley向tmdb数据库发出RESTAPI请求,以加载有关电影的信息。回收器视图应显示缩略图图像海报。但它没有显示任何东西。我正在使用毕加索图书馆加载图像。图像链接构造得很好,我已经用log语句检查过了 主要活动。xml 列出项目布局。xml 主要活动 电影数据加载器
我面临毕加索无法快速加载图像的问题。 有3个显示左、中、右图像。在快进/后退时,对于给定的时间点,选择左、中、右并显示在三个框中。 这是初始化。缓存是100MB以及99MB的 窗口移动的图像数是3000。所以我将图像预加载为 平均图像大小为10KB-320x180,因此达到35MB,小于99MB。 当快速循环工作时,许多图像是(来自)和(来自),但在几个快速循环之后,3个图像冻结或变得非常慢。此时
我正在寻找Android中的异步图像加载和缓存库。我本来打算用毕加索,但我发现通用图像加载器在GitHub上更受欢迎。有人知道这两个图书馆吗?总结一下利弊就好了。 (我所有的图像都在本地磁盘上,因此我不需要联网,因此我认为凌空截击不合适)