精华内容
下载资源
问答
  • glide4.0是最新的谷歌提供的安卓加载图片的jar包,功能强大,使用方便。
  • 安卓图片加载框架

    2017-03-27 11:32:55
    安卓开发要经常与图片打交到,所以简单了解了一下图片加载框架以及测试他们加载图片的性能,最终选定Glide(图片处理占内存更小) 1. a .Glide使用 android studio开发工具 在app build 下进行依赖 dependencies { ...

    安卓开发要经常与图片打交到,所以简单了解了一下图片加载框架以及测试他们加载图片的性能,最终选定Glide(图片处理占内存更小)

    1.

    a .Glide使用

    android studio开发工具  在app build 下进行依赖

    dependencies {

    compile 'com.github.bumptech.glide:glide:3.5.2'

     }

    b.
    Glide.with(context)
            .load(imgpath)//图片路径
            .placeholder(R.mipmap.header)//占位图
             .error(R.mipmap.error(加载错误后显示的图片)
                .diskCacheStrategy(DiskCacheStrategy.ALL)(缓存所有的)
            .centerCrop()//图片过大显示部分(二选一)
            .fitCenter()//完整的显示在控件中(二选一)
            .into(viewHolder.scaleInfoShouye);(控件)
    
    

    展开全文
  • 最近在学习张鸿洋的写的图片加载框架:http://blog.csdn.net/lmj623565791/article/details/41874561,受益颇多,自己再按照理解,打了一遍,在图片加载那块,原生博客已写得很清楚,这里就不说了,这里主要写自己...

    最近在学习张鸿洋的写的图片加载框架:http://blog.csdn.net/lmj623565791/article/details/41874561,受益颇多,自己再按照理解,打了一遍,在图片加载那块,原生博客已写得很清楚,这里就不说了,这里主要写自己在读代码时遇到的问题,分别是Loop线程的Handler和UIHandler两个之间的区分;线程池和信号量的使用。

    安卓系统本身有一个管理UI线程的Loop,如果我们没有把Handler写在Thread线程里的话,那么它发送的消息都会被这个Loop管理,就好像这个UIHandler。但如果把Handler单独写在Thread里的话,就必须要有Loop.prepare()和Loop.loop()语句,否则会报错。

    代码如下:


            //创建轮询线程
            mPoolThread = new Thread() {
                @Override
                public void run() {
                    Looper.prepare();
                    //处理轮询消息
                    mPoolThreadHandler = new Handler() {
                        @Override
                        public void handleMessage(Message msg) {
                            Log.i("Luo", "excute Task " +  count);
                            // 线程池去取出一个任务执行
                            mThreadPool.execute(getThreadTask());
                            try {
                                //信号量-1
                                mSemaphoreThreadPool.acquire();
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                        }
                    };
                    Looper.loop();
                }
            };
            mPoolThread.start();

    只要是mPoolThreadHandler发送的消息就不会被系统的UI线程接收,因为是两个不同的消息队列。

    接下来简单说说线程池和信号量的使用,其实自己前段时间有去仔细地了解过线程池的使用,但没有了解过信号量的使用,这个知识点终于把以前学到的操作系统知识给用到了,开心下。

    // 创建线程池
            mThreadPool = Executors.newFixedThreadPool(threadCount);
            // 创建任务队列,这个任务队列是为了暂时储存线程,等线程池里的某个线程执行完,信息量就会通知Loop继续执行取出的线程,这时是由Loop线程里的Handler完成
            mTaskQueue = new LinkedList<Runnable>();
            //创建信息量,这个信号量是为了让Loop的执行不要太快,一次只要threadCount来;信号量一开始为threadCount,执行一次,减一,<=0时停止执行
            mSemaphoreThreadPool = new Semaphore(threadCount);

    信号量在执行完线程时,必须释放资源,否则其它线程无法执行:

    mSemaphoreThreadPool.release();


    展开全文
  • Picasso介绍 Picasso是Square公司开源的一个Android图形缓存库 A powerful image ...Picasso实现了图片的异步加载,并解决了Android中加载图片时常见的一些问题,它有以下特点: 在Adapter中取消了不在视图...

    Picasso介绍

    Picasso是Square公司开源的一个Android图形缓存库

    A powerful image downloading and caching library for Android 
    一个Android下强大的图片下载缓存库

    Picasso实现了图片的异步加载,并解决了Android中加载图片时常见的一些问题,它有以下特点:

    • Adapter中取消了不在视图范围内的ImageView的资源加载,因为可能会产生图片错位;
    • 使用复杂的图片转换技术降低内存的使用
    • 自带内存和硬盘的二级缓存机制

    为什么要用Picasso

      Android系统作为图片资源加载的主角,它是通过图像的像素点来把图像加载到内存中的;现在一张500W的摄像头拍出的照片(2592x1936),加载到内存中需要大约19M的内存;如果你加入了信号强度不一的网络中进行了复杂的网络请求,并进行图片的缓存与其他处理,你会耗费大量的时间与精力来处理这些问题,但如果用了Picasso, 这些问题都一消而散;

    将Picasso加入到你的项目中

     目前Picasso的最新版本是2.5.2,你可以下载对应的Jar包,将Jar包添加到你的项目中,或者在build.gradle配置文件中加入

    compile 'com.squareup.picasso:picasso:2.5.2'
    • 1

    注意如果你开启了混淆,你需要将以下代码添加到混淆规则文件中:

    -dontwarn com.squareup.okhttp.**
    • 1

    小试牛刀:从网络加载一张图片

    Picasso使用简单易用的接口,并有一个实现类Picasso,一个完整的功能请求至少需要三个参数;

    • with(Context context) - Context上下文在很多Android Api中都是必须的
    • load(String imageUrl) - 图片网络加载地址
    • into(ImageView targetImageView) - 想进行图片展示的ImageView

    简单用例:

    ImageView targetImageView = (ImageView) findViewById(R.id.imageView);
    String internetUrl = "http://www.jycoder.com/json/Image/1.jpg";
    
    Picasso
        .with(context)
        .load(internetUrl)
        .into(targetImageView);
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

      就是这么简单,如果你的 URL地址正确并且图片存在,在几秒中之内就能看到这张图片了;如果图片资源不存在,Picasso也会有错误的回调,现在你已经看到了只需3行代码就能加载图片了,当然这只是冰山一角,让我们继续揭开Picasso的神秘面纱;

    图片的其他加载方式

      Picasso的图片不仅仅能加载网络资源,也能从本地文件,Android项目资源,以及URI地址进行图片加载,下面我们就对这三种方式进行实例说明;

    从Android Resources 中加载

      代码也是三行,只需要将网络资源地址更改为一个int值地址即可,上代码:

    ImageView targetImageView = (ImageView) findViewById(R.id.imageView);
    int resourceId = R.mipmap.ic_launcher;
    
    Picasso
        .with(context)
        .load(resourceId)
        .into(targetImageView);
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    注意: R.mipmapAndroid Studio中新的资源引用路径,这个老司机都知道.

    从本地File文件中加载

      如果你让用户选择本地的一张图片进行展示的话,就需要用到这个加载方式了,当然,也是So Easy,只需要将地址更换为一个File即可,上代码:

    ImageView targetImageView = (ImageView) findViewById(R.id.imageView);
    File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "Running.jpg");
    
    Picasso
        .with(context)
        .load(file)
        .into(targetImageView); 
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    注意:这个file并不一定非得是在你的设备中,可以是任意的路径,只要是File路径即可;

    URI地址中加载

      这个请求方式相比其他也并没有什么不同,上代码:

    public static final String ANDROID_RESOURCE = "android.resource://";
    public static final String FOREWARD_SLASH = "/";
    
    private static Uri resourceIdToUri(Context context, int resourceId) {
        return Uri.parse(ANDROID_RESOURCE + context.getPackageName() + FOREWARD_SLASH + resourceId);
    }
    
    Uri uri = resourceIdToUri(context, R.mipmap.future_studio_launcher);
    ImageView targetImageView = (ImageView) findViewById(R.id.imageView);
    
    Picasso  
        .with(context)
        .load(uri)
        .into(targetImageView);
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    注意:为了示范,只能用资源文件转换为URI,并不仅仅是这种方式, 它可以支持任意的URI地址;

    OK,到此我们已经对Picasso有一个基本的认识和了解了,跟着我的脚步,继续发现Picasso更多好玩的功能,下面会介绍Picasso在ListViewGridView的用法,

    展开全文
  • picasso是Square公司开源的一个安卓图片加载框架,可以实现图片下载和缓存功能。picasso解决了adapter加载不在视野范围的ImageView图片资源导致图片错位的错误,同时它使用了复杂的图片压缩转换来尽可能的减少内存...
  • 需要下载ImageLoader.jar 下载地址:... 使用: MainActivity.java package com.example.test.com; import java.io.File; import android.app.Activity; impo

    需要下载ImageLoader.jar

    下载地址:http://code.google.com/p/libs-for-android/wiki/ImageLoader


    使用:

    MainActivity.java

    package com.example.test.com;
    
    import java.io.File;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.ViewGroup;
    import android.view.Window;
    import android.widget.ImageView;
    
    import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;
    import com.nostra13.universalimageloader.cache.disc.naming.HashCodeFileNameGenerator;
    import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache;
    import com.nostra13.universalimageloader.core.DisplayImageOptions;
    import com.nostra13.universalimageloader.core.ImageLoader;
    import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
    import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
    import com.nostra13.universalimageloader.core.decode.BaseImageDecoder;
    import com.nostra13.universalimageloader.core.download.BaseImageDownloader;
    import com.nostra13.universalimageloader.utils.StorageUtils;
    
    
    public class MainActivity extends Activity {
        
        private ImageLoader imageLoader = ImageLoader.getInstance();
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
    
            ViewGroup viewGroup = (ViewGroup) getLayoutInflater().inflate(R.layout.main, null);
            setContentView(viewGroup);
            getLayoutInflater();
            //ImageView对象用于显示图片
            ImageView imageView = (ImageView) findViewById(R.id.imageView1);
            loadImage(imageView);
    
        }
        
        private void loadImage(final ImageView imageView) {
            //图片保存系统路径
            File cacheDir = StorageUtils.getOwnCacheDirectory(MainActivity.this, "data");
            DisplayImageOptions imageOptions = new DisplayImageOptions.Builder().cacheInMemory().cacheOnDisc()
                    .build();
            //一些相关的设置
            ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(MainActivity.this).threadPoolSize(5)
                    .threadPriority(Thread.NORM_PRIORITY - 1).tasksProcessingOrder(QueueProcessingType.LIFO).denyCacheImageMultipleSizesInMemory()
                    .memoryCache(new LruMemoryCache(1024 * 1024)).memoryCacheSize(1 * 1024 * 1024).discCache(new UnlimitedDiscCache(cacheDir)) // default
                    .discCacheSize(20 * 1024 * 1024).discCacheFileCount(400).discCacheFileNameGenerator(new HashCodeFileNameGenerator()) // default
                    .imageDownloader(new BaseImageDownloader(MainActivity.this)) // default
                    .imageDecoder(new BaseImageDecoder()) // default
                    .defaultDisplayImageOptions(imageOptions) // default
                    .enableLogging().build();
            //初始化配置
            imageLoader.init(config);
            //显示图片
            imageLoader.displayImage("http://www.baidu.com/img/bdlogo.gif", imageView);
        }
    
    }


    展开全文
  •  这两天一直在用glide图片框架做demo,慢慢的感受到glide图片框架的强大,具体的我也不一一再说,相信你们如果能搜索出我这篇文章,也是对glide框架有一定的了解。下面就给大家展示一下代码: ...
  • Google I/O 大会上,Google 推出 Volley的一个网络框架Volley适合什么场景?Volley适合网络通信频繁操作,并能同时实现多个网络通信。 下载地址:http://download.csdn.net/detail/qq_26787115/93587871.Volley的...
  • 转载:https://www.cnblogs.com/guanmanman/p/6922678.html https://www.cnblogs.com/zgqys1980/p/5286208.html 两者足够详细,已经不需要我过多赘述。。。
  • Fresco 是Facebook开源的安卓上的图片加载框架,也可以说是至今为止安卓上最强大的图片加载框架. 相对于其他几个图片加载框架,Fresco主要的优点在于更好的内存管理和更强大的功能,更便捷的使用,缺点则是体积比较大,...
  • 个人感觉好处就是简单,可以直接请求到实体类 用注解的方式自定义一个接口,与retrofit框架对接生成实体类 ...这张图片可以简单明了的介绍了Retrofit的使用方法,与大家共享,之后还会陆续分享,其他网络框架
  • 安卓开发系列 -- APP 开源框架图片加载框架 Glide -- 基本加载流程 【1】Glide的基本使用示例 Glide.with(context).load(url).into(imageView); 【2】Glide基本加载流程 -- with public class Glide ...
  • 图片加载框架Glide的使用解析及其高级用法 ...Glide在安卓中不算是一个新的技术,但却是使用的比较火热的图片加载框架。在GitHuB上有28.2K颗星也体现了广大开发者对Glide的喜爱. 2.普通图片加载方法与Glide...
  • 安卓各种框架使用

    2021-03-26 18:11:17
    coil是Android上的一个全新的图片加载框架,它的全名叫做coroutine image loader,即协程图片加载库。与传统的图片加载库Glide,Picasso或Fresco等相比。该具有轻量(只有大约1500个方法)、快、易于使用、更现代的...
  • 安卓Glide加载图片

    2017-08-28 14:15:12
    现在Android上的图片加载框架非常成熟,从最早的老牌图片加载框架UniversalImageLoader,到后来Google推出的Volley,再到后来的新兴军Glide和Picasso,当然还有Facebook的Fresco。每一个都非常稳定,功能也都十分...
  • 在上一篇的学习分享中简介了Volley框架并代码示例初步使用Volley实现一个HTTP请求,那么这一篇学习分享中我们将更深入一步,重点学习如何高效加载网络图片,主要内容为ImageRequest、ImageLoader、ImageLoader+...
  • 安卓图片框架:universal-image-loader的快速使用安卓开发过程中难免会遇到以下几个情况: 1、图片异步加载 2、图片缓存 3、图片显示 4、其它……(忘记了) 以上的这些情况,可能要自己去写...
  • 2.xUtils加载图片功能 3.xUtils操作数据库 4.xUtils的网络请求 一、xUtils简介: xUtils是基于Afinal开发的目前功能比较完善的一个Android开源框架,官网:https://github.com/wyouflf/xUtils3 xUtils 包含了orm...
  • 目录: ... 当加载网络图片时,由于加载过程中图片未能及时显示,此时可能需要设置等待时的图片,通过placeHolder()方法 当加载图片失败时,通过error(Drawable drawable)方法设置加载失败后的
  • Fresco:2015FaceBook推出的 ...和渐进式图片加载中文文档使用方法 引入依赖 点击查看具体教程 基本使用步骤在布局中使用其标签 <com.facebook.drawee.view.SimpleDraweeView/> 注意不能使用包裹内容 <RelativeLayou
  • 安卓开发者来说,图片加载库的选择有很多:UIL,Picasso,VolleyImageLoader,Fresco以及我们今天的主角Glide,选择适合我们使用图片加载库能极大提高我们的开发效率,此外还能让我们写的 APP 更加优秀。...
  • 图片加载:Picasso、UIL数据库:LitePal、ormLite、greenDao网络层:apcahe的http-common或者square的okhttpJSON解析:fastJson,Gson动画:NineOldAndroids。 聊天:XMPP 转载于:...
  • 做android的同学肯定都使用过imageloader这款图片加载框架图片加载对于中低级的安卓开发人员来说是相当不容易的,因为图片加载时做容易造成安卓内存溢出的原因,而要解决这些问题还需要很多相关知识: 1、多...
  • 引言前面我们已经讲解了老牌图片加载框架Universal-Image-Loader,讲解了它的使用,并分别从图片三级缓存的角度和缓存Lru算法角度详细分析了源码,还给大家做出了总结,不清楚的可以去 安卓面试系列–Universal-...
  • 图片加载框架的总结

    2018-02-05 11:56:48
    最初刚入行时直接httpurlConnection连接网络,加载图片到imageview这样在ListView中使用时会出现OOM,后来通过上网找资料学习,知道了UIL,UniversalImageLoader,当时这个框架很火,在github上很多星。通过设置内存...
  • 一般的get请求一般的post请求基于Http的文件上传文件下载加载图片支持请求回调,直接返回对象、对象集合支持session的保持 最后会对上述几个功能进行封装,完整的封装类的地址见:...
  • Glide在项目开发中是我们经常用到的图片加载框架,他加载图片平滑,速度快,使用方法简单,可以设置缓存;但是在使用过程中仍然会有许多需要我们注意的点,以下都是我在开发中遇到的问题总结:1、Glide加载背景变绿...
  • Volley网络访问框架是去年I/O大会正式推出的,自然在安卓系统架构中也是会得到很大的支持的,它内部创建线程池,往请求队列中添加请求对象,然后由内部线程池分配线程来执行任务,它适合做请求次数多,数据量较小的...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 153
精华内容 61
关键字:

安卓加载图片框架使用