我使用a ListView来显示与这些图像相关的一些图像和标题.我从互联网上获取图像.有没有办法延迟加载图像,以便文本显示时,UI不会被锁定,图像会在下载时显示?
图像总数不固定.
我正在寻找Android中的异步图像加载和缓存库.我打算使用Picasso,但我发现Universal Image Loader在GitHub上更受欢迎.有谁知道这两个图书馆?优点和缺点的摘要会很棒.
(我的所有图像都在本地磁盘上,因此我不需要联网,因此我认为Volley不合适)
我正在使用Universal-Image-Loader,这个功能可以从SD卡访问图像的文件缓存.但我不知道如何将返回的文件缓存转换为位图.基本上我只想将位图分配给ImageView.
File mSaveBit = imageLoader.getDiscCache().get(easyPuzzle);
Log.d("#ImageValue: ", ""+mSaveBit.toString());
mImageView.setImageBitmap(mSaveBit);
Run Code Online (Sandbox Code Playgroud)
错误:"ImageView类型中的方法setImageBitmap(Bitmap)不适用于参数(File)"
我收到了错误:
在使用之前,ImageLoader必须是init配置才是来自非法状态异常的错误.
我正努力在将gridview放入片段的方法中显示图像.至于我的理解,imageLoader应首先通过扩展将扩展的类AbsListViewBaseActivity来初始化BaseActivity.
这两个类用于初始化imageLoader.我非常搞砸流量,我在运行时遇到错误,并在两天内处理了这个问题.我将包括LogCat错误.
我自己的版本
- 主类
import com.nostra13.universalimageloader.core.ImageLoader;
import com.folder.folder.AbsListViewBaseActivity;
public class CollectionDemoActivity extends FragmentActivity{
assignImageLoader newAssign;
static AbsListViewBaseActivity absList;
static ImageAdapter m3;
Oncreate()
{
newAssign = assignImageLoader;
m3 = ImageAdapter();
((GridView) absList.listView).setAdapter(m3);
}
}
/**
* A dummy fragment representing a section of the app, but that simply displays dummy text.
*/
public static class DemoObjectFragment extends Fragment {
public static final String ARG_OBJECT = "object";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup …Run Code Online (Sandbox Code Playgroud) 您好我正在从相机捕获图像并将其保存到SDCARD并通过Universal Image Loader加载,但每次我收到类似的错误
09-20 14:38:22.617: E/ImageLoader(16626):
UIL doesn't support scheme(protocol) by default [/mnt/sdcard/temp_photobooth.png]. You should implement this support yourself (BaseImageDownloader.getStreamFromOtherSource(...))
imgLoader.displayImage(Environment
.getExternalStorageDirectory().toString()
+ File.separator + Const.TEMP_FILE, choosen_image);
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我,我该怎么办呢?
我在想,如果有一种机制的图像显示一个旋转的"不确定"进度,而它的加载与通用图像装载机.
现在,我使用DisplayImageOptions的showStubImage()选项来显示,上面写着"无图像",而图像被下载的图像,但是这将是非常漂亮的期待,如果有上ImageView的,而顶部的旋转不确定进度图像正在下载.
我正在使用UIL在listview中加载图像.
当我长按列表视图中的图像时,我会显示一个对话框来修改该图片,使用相机替换为新图片.
如果我拍摄新照片,当对话框被取消时,我的列表视图仍会显示旧图像(因为它已被缓存).如果我在进入listview时关闭并重新启动我的应用程序,则新图像正确存在.
这是我设置UIL的方式:
// Get singletone instance of ImageLoader
imageLoader = ImageLoader.getInstance();
//set display options for image loader
DisplayImageOptions displayOptions = new DisplayImageOptions.Builder()
.cacheInMemory()
.displayer(new FadeInBitmapDisplayer(500)) //fade in images
.resetViewBeforeLoading()
.build();
//set image loader options
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this).defaultDisplayImageOptions(displayOptions).build();
// Initialize ImageLoader with configuration.
imageLoader.init(config);
Run Code Online (Sandbox Code Playgroud)
如果我删除.cacheInMemory()一切工作虽然.我只是想知道在打开对话框时是否可以清除缓存.我试图抓住所选的ImageView并myImageView.invalidate()在打开对话框时调用但没有成功.
图像从文件加载:
// Load and display image asynchronously
imageLoader.displayImage(file_prefix + image_path, image);
Run Code Online (Sandbox Code Playgroud)
有什么建议?
编辑:代码在长按图像时创建上下文菜单,我试图清除那里的缓存:
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
//get info …Run Code Online (Sandbox Code Playgroud) 我正在寻找一个开源图像加载/缓存解决方案.
我期待:
我希望能够处理来自磁盘和网络的异步图像加载,但是我不确定Google的排球是否从磁盘加载.
Volley是否允许从磁盘加载资源?
您好我面临一个特殊的问题,我需要下载图像并将其显示在ListView对应的特定对象上TextView's.我的代码是成功显示TextView's我需要显示但我不知道如何在我的文本视图旁边显示所有这些不同的图像ListView.
经过SO中的许多线程之后.最佳答案是通过1.懒惰列表2.通用图像加载器来解决这个问题
我已经完成了两个解决方案.我下载了Lazy List代码,其中URL是存储在Array中的硬编码字符串.我想做的是动态创建自己的字符串.将它们存储在缓存中并显示所有相应的图像.
这是我的代码:
public class Tools_ListItemActivity extends ListActivity
{
private Context context;
String s;
private static final String TAG_POSTS = "posts";
private static final String TAG_MDNAME = "mdname";
private static final String TAG_UTCOST = "utcost";
private static final String TAG_IIMG= "iimg";
JSONArray posts = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
s=getIntent().getExtras().getString("url");
new ProgressTask(Tools_ListItemActivity.this).execute();
}
@Override
protected void onListItemClick(ListView l, View v, int …Run Code Online (Sandbox Code Playgroud)