Fresco detalles de uso

La primera es sin duda la dirección que Fresco: https://github.com/facebook/fresco

configuración Gradle:

aplicación 'com.facebook.fresco: fresco: 1.13.0'

1. Aplicación de inicialización

Fresco.initialize (this);

2. Uso SimpleDraweeView en XML

xmlns: app = "http://schemas.android.com/apk/res-auto"
<Com.facebook.drawee.view.SimpleDraweeView 
    Android: ID = "@ + ID / Avatar" 
    Android: layout_width = "60dp" 
    Android: layout_height = "60dp" 
    Android: layout_margin = "10DP" 
    Android: la ScaleType = "fitXY" 
    App : actualImageScaleType = "fitCenter" // imagen real re-escalamiento tipo de 
    aplicación: placeholderImage = "@ mipmap / ic_launcher" // mapa marcador de posición 
    aplicación: placeholderImageScaleType = "centerInside" // marcador de posición tipo de imagen re-escalado de 
    aplicación: progressBarImage = "@ mipmap / common_loading "// figura carga 
    aplicación: progressBarImageScaleType =" centerInside "// escala tipo de carga figura 
    aplicación: progressBarAutoRotateInterval =" 1000 "// carga del tiempo de 
    aplicación: failureImage =" @ mipmap / ic_launcher "// Figura fracaso 
    aplicación: failureImageScaleType = "centerInside" // falla mapa tipo de escala
    aplicación: retryImage = "@ mipmap / ic_launcher" // re tratando 
    aplicación: retryImageScaleType = "centerInside" // intento de tipo reescalamiento 
    aplicación: roundAsCircle = "true" // si redondeada 
    aplicación: roundedCornerRadius = "30DP" // ronda ángulo tamaño 
     />

3. Cargar foto

int width = SystemUtil.dp2px (contexto, 50); 
int height = SystemUtil.dp2px (contexto, 50); 
ImageUtil.load ((GenericDraweeView) helper.getView (R.id.avatar), "图片url", anchura, altura);

public static carga void (GenericDraweeView draweeView, String url, ancho int, int altura) { 
    Uri uri = Uri.parse (url); 
    Solicitud ImageRequest = ImageRequestBuilder.newBuilderWithSource (URI) 
            .setResizeOptions (nuevos ResizeOptions (anchura, altura)) 
            .build (); 
    DraweeController controlador = Fresco.newDraweeControllerBuilder () 
            .setImageRequest (petición) 
            .setOldController (draweeView.getController ()) 
            .build (); 
    draweeView.setController (controlador); 
}

 

4. Tenga en cuenta ese punto, el tamaño debe ser conjunto SimpleDraweeView

Android: layout_width = "60dp" 
android: layout_height = "60dp"

5. Escala tipo -ScaleType

tipo descripción
centrar Centro, sin zoom
centerCrop El mantenimiento de la relación de aspecto de reducirse o aumentarse, de manera que ambos lados son iguales a o mayor que los límites de visualización. Centrada.
focusCrop Con centerCrop, pero no punto medio del punto central, sino un punto especificado
centerInside Por lo que ambas partes se muestran dentro de los límites, se centra. Si el tamaño es más grande que la pantalla de la figura límite, se mantiene miniatura relación de aspecto de imagen.
fitCenter El mantenimiento de la relación de aspecto, reduce o se amplía de modo que la imagen que aparece en la pantalla por completo dentro de la frontera. centrado
fitStart Ibid. Pero no está centrado y alineado con el límite superior izquierda de la pantalla
teclados Con fitCenter, pero no centrada, y con la alineación límite inferior derecha de la pantalla
fitXY No guardar la relación de aspecto, llenando el borde de la pantalla
ninguna Para uso de la exhibición modo de mosaicos, se debe establecer a ninguno

Uso recomendado: Tipo focusCrop Fresco chino explicar este punto hay detalles

 

6. Resumen

resumen:

atributos XML significado
fadeDuration duración del desvanecimiento de la animación (Unidad: ms milisegundos)
actualImageScaleType El tipo real de la imagen de zoom
placeholderImage Figura marcador de posición
placeholderImageScaleType Zoom tipo Mapa de marcador de posición
progressBarImage tabla de progreso
progressBarImageScaleType zumbido tipo de plan de horario
progressBarAutoRotateInterval La figura rotación automática intervalo de programación (unidad: ms ms)
failureImage Figura fracaso
failureImageScaleType Tipo de zoom del mapa fracaso
retryImage Re tratando de
retryImageScaleType Tratando de re-escalamiento tipo
imagen de fondo fondo
overlayImage superposición
pressedStateOverlayImage Superposición se muestra en el estado de prensado
roundAsCircle La figura dispuesta circular
roundedCornerRadius radio
roundTopLeft Si la esquina superior izquierda redondeada
roundTopRight Si el filete de la esquina superior derecha
roundBottomLeft Si la esquina inferior izquierda redondeado
roundBottomRight Si la esquina inferior derecha es redondeada
roundingBorderWidth ancho del borde circular o redondeada de la figura.
roundingBorderColor de color figura fronteras circulares o redondeadas
roundWithOverlayColor 圆形或者圆角图底下的叠加颜色(只能设置颜色)
viewAspectRatio 控件纵横比

 

Fresco缓存也是一大亮点, 三级缓存,分别是 Bitmap缓存,未解码图片缓存, 文件缓存。
这里提一点Bitmap缓存:在5.0以下系统,Bitmap缓存位于ashmem,这样Bitmap对象的创建和释放将不会引发GC,更少的GC会使你的APP运行得更加流畅。5.0及其以上系统,相比之下,内存管理有了很大改进,所以Bitmap缓存直接位于Java的heap上。
另外,磁盘缓存还可以通过代码来设置不同手机的缓存容量:

public void initFresco(Context context, String diskCacheUniqueName){
    DiskCacheConfig diskCacheConfig = DiskCacheConfig.newBuilder(context)
            .setMaxCacheSize(DISK_CACHE_SIZE_HIGH)
            .setMaxCacheSizeOnLowDiskSpace(DISK_CACHE_SIZE_LOW)
            .setMaxCacheSizeOnVeryLowDiskSpace(DISK_CACHE_SIZE_VERY_LOW)
            .build();

    ImagePipelineConfig config = ImagePipelineConfig.newBuilder(context)
            .setMainDiskCacheConfig(diskCacheConfig)
            .build();
    Fresco.initialize(context, config);
}

Glide缓存(比较,有兴趣的人也可以使用这个,个人认为对于目前手机内存来说Fresco更合适
Glide虽然只有内存和磁盘缓存,在性能上比不上Fresco;但他也有另外的优点, Fresco缓存的时候,只会缓存原始图像,而Glide则会根据ImageView控件尺寸获得对应的大小的bitmap来展示,从而缓存也可以针对不同的对象:原始图像(source),结果图像(result); 可以通过.diskCacheStrategy()方法设置

 

发布了39 篇原创文章 · 获赞 19 · 访问量 6万+

Supongo que te gusta

Origin blog.csdn.net/u010090644/article/details/89673368
Recomendado
Clasificación