我正在使用ListView来显示与这些图像相关的一些图像和标题。我正在从互联网上获取图像。是否有一种方法可以延迟加载图像,以便在文本显示时,UI不会被阻止,图像在下载时显示?
图像总数不是固定的。
我正在使用ListView来显示与这些图像相关的一些图像和标题。我正在从互联网上获取图像。是否有一种方法可以延迟加载图像,以便在文本显示时,UI不会被阻止,图像在下载时显示?
图像总数不是固定的。
当前回答
如果你想像Facebook一样显示Shimmer布局,有一个官方的Facebook库。FaceBook Shimmer Android
它可以处理所有的事情,你只需要将你想要的设计代码以嵌套的方式放在闪闪发光的框架中。这是一个示例代码。
<com.facebook.shimmer.ShimmerFrameLayout
android:id=“@+id/shimmer_view_container”
android:layout_width=“wrap_content”
android:layout_height="wrap_content"
shimmer:duration="1000">
<here will be your content to display />
</com.facebook.shimmer.ShimmerFrameLayout>
这是它的java代码。
ShimmerFrameLayout shimmerContainer = (ShimmerFrameLayout) findViewById(R.id.shimmer_view_container);
shimmerContainer.startShimmerAnimation();
在渐变文件中添加此相关性。
implementation 'com.facebook.shimmer:shimmer:0.1.0@aar'
这是它的样子。
其他回答
我使用droidQuery。从URL加载图像有两种机制。第一个(速记)简单地是:
$.with(myView).image(url);
这可以很容易地添加到ArrayAdapter的getView(…)方法中。
longhand方法将提供更多的控制,并具有此处未讨论的选项(如缓存和回调),但可以在此处找到将输出大小指定为200px x 200px的基本实现:
$.ajax(new AjaxOptions().url(url)
.type("GET")
.dataType("image")
.imageWidth(200).imageHeight(200)
.success(new Function() {
@Override
public void invoke($ droidQuery, Object... params) {
myImageView.setImageBitmap((Bitmap) params[0]);
}
})
.error(new Function() {
@Override
public void invoke($ droidQuery, Object... params) {
AjaxError e = (AjaxError) params[0];
Log.e("$", "Error " + e.status + ": " + e.error);
}
})
);
如果你想像Facebook一样显示Shimmer布局,有一个官方的Facebook库。FaceBook Shimmer Android
它可以处理所有的事情,你只需要将你想要的设计代码以嵌套的方式放在闪闪发光的框架中。这是一个示例代码。
<com.facebook.shimmer.ShimmerFrameLayout
android:id=“@+id/shimmer_view_container”
android:layout_width=“wrap_content”
android:layout_height="wrap_content"
shimmer:duration="1000">
<here will be your content to display />
</com.facebook.shimmer.ShimmerFrameLayout>
这是它的java代码。
ShimmerFrameLayout shimmerContainer = (ShimmerFrameLayout) findViewById(R.id.shimmer_view_container);
shimmerContainer.startShimmerAnimation();
在渐变文件中添加此相关性。
implementation 'com.facebook.shimmer:shimmer:0.1.0@aar'
这是它的样子。
我已经关注了这个Android培训,我认为它在下载图像而不阻塞主UI方面做得很好。它还处理缓存和滚动许多图像:高效加载大型位图
Gilles Debonne的多线程性能教程。
这是来自Android开发者博客。建议的代码使用:
异步任务。一个硬的、有限大小的FIFO缓存。一个软的、易于垃圾收集的缓存。下载时可绘制的占位符。
以上所有代码都有自己的价值,但根据我的个人经验,请尝试一下毕加索。
Picasso是专门用于此目的的库,实际上它将自动管理缓存和所有其他网络操作。您必须在项目中添加库,只需编写一行代码即可从远程URL加载图像。
请访问此处:http://code.tutsplus.com/tutorials/android-sdk-working-with-picasso--cms-22149