Facebook Fresco体验 (一)

About Fresco

Fresco is a powerful system for displaying images in Android applications. It takes care of image loading and display so you don‘t have to.

Fresco‘s image pipeline will load images from the network, local storage, or local resources. To save data and CPU, it has three levels of cache; two in memory and another in internal storage.

Fresco‘s Drawees show a placeholder for you until the image has loaded and automatically show to the image when it arrives. When the image goes off-screen, it automatically releases its memory.

Fresco supports Android 2.3 (Gingerbread) and later.

Fresco 一个强大的Android图片显示系统。图片的加载和显示交由它负责,我们就不需要关心了。这两句足以说明他的牛逼——有几个插件感这么自己的称自己为System的。当然,Facebook出品,必属精品。

简单的了解了,貌似确实非常拉风,把我们平时需要做的基本上都做了,包括图片的加载,图片的显示,内存的管理等。使用之前,先来体验下他的强大。

一、下载源代码

git clone [email protected]:facebook/fresco.git

注:

github:https://github.com/facebook/fresco

gradle依赖:compile ‘com.facebook.fresco:fresco:0.2.0+‘

二、运行demo

这个稍微有点麻烦,如果想直接运行这个这个项目,需要我们去配置NDK的环境(MAC):

1、下载NDK:http://developer.android.com/tools/sdk/ndk/index.html

这个地址直接列出了不同平台和版本的NDK环境下载地址,这里选择了Mac OS X 64-bit:android-ndk-r10d-darwin-x86_64.bin,MD5:cb101e1e62d56ea75b215f6bc6c27fae

2、NDK安装

在你选择下载的时候,下载页面会自动定位到如何安装的位置,具体流程为:

a、打开终端,定位到你下载的文件位置,

b、修改文件的权限:chmod a+x android-ndk-r10d-darwin-x86_64.bin

c、安装(解压):./android-ndk-r10d-darwin-x86_64.bin。这样我们就可以得到解压后的文件——一个名为android-ndk-r10d的文件夹。为了方便管理,建议将此文件夹copy到和android sdk管理同样方便的位置。

d、配置环境变量:在环境变量中添加ndk-build目录,具体为“export PATH=${PATH}:${NDK_HOME}:${NDK_HOME}/ndk-build:”,其中NDK_HOME为刚解压的ndk目录位置。分享下我们的环境变量设置:

export GRADLE_HOME=$HOME/android/gradle/gradle-2.2.1
export ANDROID_HOME=$HOME/android/android_sdk_mac
export NDK_HOME=$HOME/android/android-ndk-r10d
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home";
export PATH=${PATH}:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/tools:${JAVA_HOME}/bin:${JAVA_HOME}/lib:${GRADLE_HOME}/bin:${NDK_HOME}:${NDK_HOME}/ndk-build:

配置好之后记得source下,不然下次启动才生效

3、意外


Execution failed for task ‘:imagepipeline:ndk_build_gifimage‘.

如果你遇到这个错误,多半是找不到ndk环境导致的,不出意外,配置了上面的环境变量就可以解决了。下面在简单的分析下:

打开源码下"imagepipeline"这个model的build.gradle文件,有这样一个函数:def makeNdkTasks(String name){...},其中又有这样一行:commandLine getNdkBuildFullPath(),定位到这个函数,你会发现下面的代码:

def getNdkBuildFullPath() {
    // we allow to provide full path to ndk-build tool
    if (hasProperty('ndk.command')) {
        return property('ndk.command')
    }
    // or just a path to the containing directiry
    if (hasProperty('ndk.path')) {
        def path = property('ndk.path')
        if (!path.endsWith(File.separator)) {
            path += File.separator
        }
        return path + getNdkBuildName()
    }
    // if none of above is provided, we assume ndk-build is already in $PATH
    return getNdkBuildName()
}

def getNdkBuildName() {
    if (Os.isFamily(Os.FAMILY_WINDOWS)) {
        return "ndk-build.cmd"
    } else {
        return "ndk-build"
    }
}

虽然写不来这段代码,但是我们可以理解他的大概逻辑:先是尝试去“ndk.command”和“ndk.path”这两个地方查找ndk环境,当找不到时返回ndk-buil这个字符串(mac),这个时候肯定需要我们的环境变量中存在。

有了上面的操作,这个时候我们就可以顺利的build这个项目,最后附个build之后的APK,供体验。

下载:http://download.csdn.net/detail/ttdevs/8582171

参考:

https://github.com/facebook/fresco/issues/5

时间: 2024-12-20 17:36:41

Facebook Fresco体验 (一)的相关文章

96、facebook Fresco框架库源使用基础

开源项目链接 facebook Fresco仓库:git clone https://github.com/facebook/fresco facebook Fresco主页:“>http://fresco-cn.org/docs/index.html# Fresco Demo:https://github.com/yanbober/Android-Blog-Source/tree/master/Fresco-Android-CN-Demo 背景介绍 最近微博和论坛火了一个facebook的li

Fresco一种超强图片加载组件初体验

Fresco来自Facebook开源的一个超强图片加载组件,项目体验地址:https://github.com/facebook/fresco 在公司开发应用的时候由于应用中肯定会涉及到图片加载,我们就要考虑到OOM以及内存占用问题,所以我们基本上都是用来自第三方开源的图片下载库:Universalimageloader,picasso,glide,volley等优秀的开源库,苦于自己无力写出更优秀的所以我一直在寻找一种更优秀的库,直到我遇到了Fresco.所以这里记录一些我是如何在Androi

Facebook推出强大Android图片库Fresco 自动释放内存 图片缓存 内存益处

自动释放内存!Facebook推出强大Android图片库Fresco 快速而又高效的显示图片对Android设备来说是件极其重要的事情,但在过去的几年里,在有效存储图像方面我们面临了很多问题.图片太大,而手机又只有很小的内存,特别是Android设备还要将内存分割给各个应用.所以,太多的图片总会耗去大部分的内存,从而导致应用的崩溃. 为了解决这一问题,Facebook最近推出了一款用于Android应用中展示图片的强大图片库Fresco,它能够从网络.本地存储和本地资源中加载图片.而且,为了节

Android Fresco图片处理库用法API英文原文文档4(Facebook开源Android图片库)

这是英文文档的第三部分:THIRD PARTY LIBRARIES Using Other Network Layers By default, the image pipeline uses the HttpURLConnection networking library bundled with Android. Apps may have their own network layer they may wish to use instead. Using OkHttp OkHttp is

Facebook 开源项目 Fresco 使用简介

1. 在Gradle中添加依赖 dependencies { compile 'com.facebook.fresco:fresco:0.1.0+' } 2. 在Application 初始化时调用 Fresco.initialize(context); 3. 在xml布局文件中, 加入命名空间: xmlns:fresco="http://schemas.android.com/apk/res-auto" 4. 加入SimpleDraweeView: <com.facebook.

Android Fresco图片处理库用法API英文原文文档1(Facebook开源Android图片库)

Fresco是Facebook最新推出的一款用于Android应用中展示图片的强大图片库,可以从网络.本地存储和本地资源中加载图片.其中的Drawees可以显示占位符,直到图片加载完成.而当图片从屏幕上消失时,会自动释放内存. 功能很强大,为了大家学习方便,我将英文原文文档给大家迁移过来,供参考学习. 这是英文文档的第一部分:QUICK START QUICK START Adding Fresco to your Project Here's how to add Fresco to your

Fresco

1.简介 Fresco是Facebook最新推出的一款用于Android应用中展示图片的强大图片库,可以从网络.本地存储和本地资源中加载图片.相对于ImageLoader,拥有更快的图片下载速度以及可以加载和显示gif图等诸多优势,是个很好的图片框架. 2.特点 1)内存管理 在5.0以下系统,Fresco将图片放到一个特别的内存区域.当然,在图片不显示的时候,占用的内存会自动被释放.这会使得APP更加流畅,减少因图片内存占用而引发的OOM. 内存分配采用:系统匿名共享内存 2)渐进式呈现图片

Android 图片处理之 Fresco

一.关于 Fresco github: https://github.com/facebook/fresco API: http://www.fresco-cn.org/javadoc/reference/packages.html Fresco 是一个强大的图片加载组件. Fresco 中设计有一个叫做 image pipeline 的模块.它负责从网络,从本地文件系统,本地资源加载图片.为了最大限度节省空间和CPU时间,它含有3级缓存设计(2级内存,1级文件). Fresco 中设计有一个叫

Fresco图片框架内部实现原理探索

流行的网络框架 目前流行的网络图片框架: Picasso.Universal Image Loader.Volley的(ImageLoader.NetworkImageView).Glide和Fresco 简明的介绍下(具体细节和功能可看源码和wiki): 其中Picasso和Universal Image Loader相比其它的算是最轻量级的图片框架了,它们拥有较少的方法数,Universal Image Loader是这五个框架中定制性最强的,它内部实现还是按网络框架的套路走:HttpUrl