一般项目中图片加载用的比较多的是ImageLoader 但是需求自己配置一些参数 上手有些复杂

对于手机图库中有上千张图片需要加载时 一个使用性能很好的库Glide可以解决 效果图如下

滑动非常流畅 加载速度也很快 而且使用也非常简单 个人感觉比手机自带的图库效果更佳

上图上代码

Code

public class MainActivity extends Activity {

  ArrayList<String> fileNames = new ArrayList<String>(); //本地图片路径

  @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); initData(); GridView listView = (GridView) findViewById(R.id.gridview);
//ImageAdapter imageAdapter = new ImageAdapter(getApplicationContext(),Images.imageUrls);
ImageAdapter imageAdapter = new ImageAdapter(getApplicationContext(), fileNames); listView.setAdapter(imageAdapter);
} private void initData() { fileNames.clear();
Cursor cursor = getContentResolver().query(Media.EXTERNAL_CONTENT_URI, null, null, null, null);
while (cursor.moveToNext()) {
byte[] data = cursor.getBlob(cursor.getColumnIndex(Media.DATA)); //图片的保存位置的数据
fileNames.add(new String(data, 0, data.length - 1));
}
} }

activity_main

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.imagelist.MainActivity" > <GridView
android:id="@+id/gridview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:numColumns="3"
android:horizontalSpacing="2dp"
android:verticalSpacing="2dp"
>
</GridView> </RelativeLayout>

ImageAdapter

public class ImageAdapter extends BaseAdapter {

  private Context context;
private String[] imageUrls;
ArrayList<String> fileNames;
private LinearLayout.LayoutParams mImageViewLayoutParams; /*
* public ImageAdapter(Context context, String[] imageUrls) { super();
* this.context = context; this.imageUrls = imageUrls; }
*/ public ImageAdapter(Context context, ArrayList<String> fileNames) {
super();
this.context = context;
this.fileNames = fileNames; DisplayMetrics dm = context.getResources().getDisplayMetrics();
int wh = dm.widthPixels; int w = (wh - context.getResources().getDimensionPixelSize(R.dimen.test) * 2) / 3;
mImageViewLayoutParams = new LinearLayout.LayoutParams(w, w);
} @Override
public int getCount() {
return fileNames.size();
} @Override
public Object getItem(int position) {
return null;
} @Override
public long getItemId(int position) {
return position;
} @Override
public View getView(int position, View convertView, ViewGroup parent) { View view;
if (convertView == null) {
view = LayoutInflater.from(context).inflate(R.layout.item, null);
} else {
view = convertView;
}
ImageView image = (ImageView) view.findViewById(R.id.image);
image.setLayoutParams(mImageViewLayoutParams); Glide.with(context).load(fileNames.get(position)).centerCrop().placeholder(R.color.test).crossFade()
.into(image); return view; }
}

item

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <ImageView
android:id="@+id/image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="centerCrop"
/> </LinearLayout>

Demo见github

https://github.com/huanyi0723/ImageList

Android 上千张图片的列表滑动加载的更多相关文章

  1. ListView、PullToRefreshListView滑动加载可见item

    最近用的了PullToRefreshListView框架,也在listView中加载图片,对于滑动加载可见item,网上找了一些相关文档,但都不太合适,如:http://blog.csdn.net/z ...

  2. WPF技术触屏上的应用系列(五): 图片列表异步加载、手指进行缩小、放大、拖动 、惯性滑入滑出等效果

    原文:WPF技术触屏上的应用系列(五): 图片列表异步加载.手指进行缩小.放大.拖动 .惯性滑入滑出等效果 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7操作系统, ...

  3. 我的Android进阶之旅------>Android疯狂连连看游戏的实现之加载界面图片和实现游戏Activity(四)

    正如在<我的Android进阶之旅------>Android疯狂连连看游戏的实现之状态数据模型(三)>一文中看到的,在AbstractBoard的代码中,当程序需要创建N个Piec ...

  4. Android Volley和Gson实现网络数据加载

    Android Volley和Gson实现网络数据加载 先看接口 1 升级接口 http://s.meibeike.com/mcloud/ota/cloudService POST请求 参数列表如下 ...

  5. 携程Android App的插件化和动态加载框架

    携程Android App的插件化和动态加载框架已上线半年,经历了初期的探索和持续的打磨优化,新框架和工程配置经受住了生产实践的考验.本文将详细介绍Android平台插件式开发和动态加载技术的原理和实 ...

  6. ios 图片的两种加载方式

    控件加载图片,plist,懒加载,序列帧动画,添加动画效果. IOS中有2种加载图片的方式. 方式一:有缓存(图片所占用的内存会一直停留在程序中) + (UIImage *)imageNamed:(N ...

  7. Android中ViewPager+Fragment取消(禁止)预加载延迟加载(懒加载)问题解决方案

    转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53205878本文出自[DylanAndroid的博客] Android中Vie ...

  8. Android中使用WebView, WebChromeClient和WebViewClient加载网页 (能够执行js)

    Android中使用WebView, WebChromeClient和WebViewClient加载网页   在android应用中,有时要加载一个网页,如果能配上一个进度条就更好了,而android ...

  9. jQuery 图片随滚动条滚动加载

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

随机推荐

  1. 【转】【Android】开源项目汇总-备用

    第一部分 个性化控件(View) 主要介绍那些不错个性化的View,包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.Pro ...

  2. 如何在 Eclipse 中连接源码

    1:首先在window 中 打开首选项(preferences) 找到如下java -- 已安装的JRE

  3. 2016 Al-Baath University Training Camp Contest-1 I

    Description It is raining again! Youssef really forgot that there is a chance of rain in March, so h ...

  4. Android编译中m、mm、mmm的区别

    准备工作 在AndroidSource Code中有envsetup.sh档案,当执行过此档案后,可以大幅将build的过程简单化.自动化 此档案在src(android source code 位置 ...

  5. 【LTE基础知识】SGLTE, SVLTE, CSFB, VoLTE

    4G网络下实现语音通话功能的技术共有三种--VoLTE.SGLTE(GSM /LTE同步并发)和CSFB(电路域回落).简单来说: VoLTE就是语音数据都在4G通道内完成: SGLTE是语音走2G通 ...

  6. C语言第2天基本运算

    getchar 一.首先给出<The_C_Programming_Language>这本书中的例子: #include <stdio.h> int main( ) {      ...

  7. SAP ST03N工作负载的后台作业定义

    ST03N可以把SAP的运行情况的统计数据展现出来,根据这些数据可以进行性能的分析. 1.登录到000集团,定义作业SAP_COLLECTOR_FOR_PERFMONITOR,周期每个小时执行.作业内 ...

  8. oracle dual 表

    dual是一个虚拟表,用来构成select的语法规则,oracle保证dual里面永远只有一条记录.我们可以用它来做很多事情,如下: 1.查看当前用户,可以在 SQL Plus中执行下面语句 sele ...

  9. 【leetcode❤python】 299. Bulls and Cows

    #-*- coding: UTF-8 -*-class Solution(object):      def getHint(self, secret, guess):          " ...

  10. C#中Struct与Class的区别

    class和struct最本质的区别是class是引用类型,而struct是值类型,它们在内存中的分配情况有所区别. 什么是class? class(类)是面向对象编程的基本概念,是一种自定义数据结构 ...