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

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

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

上图上代码

Code

public class MainActivity extends Activity {ArrayList<String> fileNames = new ArrayList<String>(); //本地图片路径
@Overrideprotected 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" ><GridViewandroid: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);}@Overridepublic int getCount() {return fileNames.size();}@Overridepublic Object getItem(int position) {return null;}@Overridepublic long getItemId(int position) {return position;}@Overridepublic 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

转载于:https://www.cnblogs.com/huanyi0723/p/4816393.html

Android 上千张图片的列表滑动加载相关推荐

  1. 什么是懒加载,如何实现图片或列表懒加载?

    文章目录 什么是懒加载 实现图片懒加载 列表懒加载 列表滚动加载 什么是懒加载 只在数据或内容即将进入视口或即将需要的时候才加载. 实现懒加载的好处有: 提高页面加载速度和响应速度.只加载当前用户需要 ...

  2. Android不使用图片框架,实现加载类似微博超长图片的技巧手法;

    声明:一个很low的做法,目前只能做单纯的展示,有需求后续再加: 项目有个紧急需要加说明书的问题:为了快速就直接上的图片,但是图片太长如果单纯使用ImageView效果不理想:没时间去熟悉框架:就实现 ...

  3. android glide圆形图片,Glide原生方法加载圆形图片

    项目中需要用圆形图片,我们知道,Android原生是没有好用的圆形图片的,何况还要网络加载什么的.今天找了下Glide加载圆形图片的方法,基本都是这种,说得倒是很明白的,但是我自己加载时候没有找到相应 ...

  4. android listview 图片闪烁,listView异步加载图片导致图片错位、闪烁、重复的问题的解决...

    androidListView是android中重要的控件,几乎每一个项目都会用到.但是在使用中我们避免不 了会出现一些问题,包括一些滑动事件的处理,例如:ListView中嵌套scrollView, ...

  5. Android实现图片的高效批量加载

    前言:图片的加载,图片的处理,是Android开发程序员在开发中经常遇到的问题,比如,图片的压缩,图片批量的网络获取等.但是往往处理不当,就会报oom,那么如何解决这一类问题了,在分析了弘扬大牛的图片 ...

  6. Android横向滑动加载更多的控件的实现---HorizontalScrollSlideView

    Android横向滑动加载更多的控件的实现-HorizontalScrollSlideView 需求 之前公司业务要求做一个横向滑动的,可以加载更多的控件,第一时间想到的就是 RecyclerView ...

  7. android 解决listview.notifyDataSetChanged刷新时Imageloader加载图片闪烁问题

    今天,简单讲讲android里再listview调用notifyDataSetChanged刷新界面时,Imageloader加载图片会闪烁的问题. 最近,发现app里的listview图片会出现闪烁 ...

  8. 列表懒加载和图片懒加载

    参考链接整理: element-ui自带的图片懒加载指令和列表懒加载指令 element-ui 图片懒加载 element-ui 列表懒加载 原理和原生js:图片懒加载 如何用原生js实现图片懒加载( ...

  9. android开发学习之路——连连看之加载图片(三)

    正如前面AbstractBoard类的代码中看到的,当程序需要创建N个Piece对象时,程序会直接调用ImageUtil的getPlayImages()方法去获取图片,该方法将会随机从res\ dra ...

最新文章

  1. linux线程join的用法,join用法
  2. 如何实现对ELK各组件的监控?试试Metricbeat
  3. 架构师之路 — 分布式系统 — 分布式一致性难题
  4. Jquery常用标签
  5. Linux线程——线程安全问题
  6. Shiro系列-Authenticator和AuthenticationStrategy是什么
  7. 为什么开发者将迎来万亿美元黄金时代
  8. mysql中毫秒的保存类型
  9. Spring MVC中静态资源加载
  10. mysql 视图 统计_mysql 视图
  11. 软件工程阶段性总结(三)——软件设计和编码
  12. DNT精英论坛(暨.NET北京俱乐部)第1期:见证.NET,风口上的成功案例!
  13. 360VSQQ的精心之战
  14. 艰辛坎坷的360崛起之路
  15. 离散 单射 满射 双射
  16. 使用 Amazon Personalize 快速搭建推荐服务
  17. jquery 前端实现图片压缩和上传
  18. FileWriter和BufferedWriter用处,区别
  19. 数据结构 之 无向连通图
  20. 计算机卡顿是硬盘还是内存条,笔记本电脑升级固态硬盘和内存条方案解析,彻底告别电脑卡顿!...

热门文章

  1. 配置kubeconfig文件实现kubectl多集群切换
  2. linux内存映射起始地址,内存初始化代码分析(三):创建系统内存地址映射
  3. Linux查看安装了哪些软件
  4. 计算机睡眠功能命令,windows睡眠命令怎么使用
  5. 一个完整的软件项目开发流程,软件过程,软件生命周期
  6. 微信小程序:配置合法域名
  7. 【codevs1077】多源最短路
  8. 【poj1995】Raising Modulo Numbers
  9. Python入门--Os.path模块常用函数
  10. 小程序数据框有重影_小程序开发(二):数据绑定