フレスコ使用状況の詳細

:最初は確かにフレスコアドレスそれであるhttps://github.com/facebook/fresco

Gradleの設定:

実装 'com.facebook.fresco:新鮮:1.13.0'

1.アプリケーションの初期化

Fresco.initialize(この);

XMLで2. SimpleDraweeView

xmlns:アプリ= "http://schemas.android.com/apk/res-auto"
<com.facebook.drawee.view.SimpleDraweeView
    アンドロイド:ID = "@ + ID /アバター"
    アンドロイド:layout_width = "60dp"
    アンドロイド:layout_height = "60dp"
    アンドロイド:layout_margin = "10dp"
    アンドロイド:scaleType = "fitXY"
    アプリ:actualImageScaleType =「fitCenter」//実際の画像再スケーリングタイプ
    アプリ:placeholderImage = "@ミップマップ/ ic_launcher" //プレースホルダマップ
    アプリ:placeholderImageScaleType =「centerInside」//プレースホルダ画像再スケーリングタイプ
    アプリ:progressBarImage = "@ミップマップ/ common_loading" //マップをロードします
    アプリ:progressBarImageScaleType =「centerInside」//ロードマップのスケーリングタイプ
    アプリ:progressBarAutoRotateInterval = "1000" //ロード時間
    アプリ:failureImage = "@ミップマップ/ ic_launcher" //図の失敗
    アプリ:failureImageScaleType =「centerInside」//がマップスケーリングタイプを失敗します
    アプリ:retryImage = "@ミップマップ/ ic_launcher" //しようとして再
    アプリ:retryImageScaleType =「centerInside」再スケーリングタイプに//の試み
    アプリ:roundAsCircle = "true" を//かフィレット
    アプリ:フィレットのroundedCornerRadius =「30DP」//サイズ
     />

3.ロード画像

INT幅= SystemUtil.dp2px(コンテキスト、50)。
INT高さ= SystemUtil.dp2px(コンテキスト、50)。
ImageUtil.load((GenericDraweeView)helper.getView(R.id.avatar)、 "图片URL"、幅、高さ);

公共の静的な無効負荷(GenericDraweeView draweeView、文字列のURL、int型の幅、int型の高さ){
    あなたは= ri.parseます(URL)です。
    ImageRequest要求= ImageRequestBuilder.newBuilderWithSource(URI)
            .setResizeOptions(新しいResizeOptions(幅、高さ))
            .build()。
    DraweeControllerコントローラ= Fresco.newDraweeControllerBuilder()
            .setImageRequest(リクエスト)
            .setOldController(draweeView.getController())
            .build()。
    draweeView.setController(コントローラ)
}

 

ポイント、SimpleDraweeViewサイズがセットでなければならないこと4.注意

アンドロイド:layout_width = "60dp"
アンドロイド:layout_height = "60dp"

5.スケールタイプ-ScaleType

タイプ 説明
センター センター、無ズーム
centerCrop 両側がディスプレイの境界以上であるように、アスペクト比が減少または拡大され維持されます。中心。
focusCrop centerCropとではなく、中心点の中点が、指​​定されたポイント
centerInside だから、両側が境界内に表示されていること、それが中心。大きさは、図の境界線の表示よりも大きい場合、サムネイル画像のアスペクト比が維持されます。
fitCenter 低減または画像が境界内に完全にディスプレイ上に表示するように拡大アスペクト比を維持します。中央揃え
fitStart 同上。しかし、中心とディスプレイの左上境界に整列していません
キーボード fitCenterではなく、中心、および右下のディスプレイの境界整列
fitXY ディスプレイの境界線を埋め、アスペクト比を保存しないでください
なし 使用タイルモード表示には、noneに設定する必要があります

推奨使用:focusCropタイプフレスコ中国はこの点を説明する内容があります

 

6.まとめ

要約:

XML属性 意味
fadeDuration アニメーションのフェード時間(単位:ミリ秒ミリ秒)
actualImageScaleType ズーム画像の実際の型
placeholderImage 図プレースホルダ
placeholderImageScaleType ズームマップタイプのプレースホルダ
progressBarImage プログレスチャート
progressBarImageScaleType 日程計画のズームタイプ
progressBarAutoRotateInterval 図自動ローテーションスケジュール間隔(単位:ミリ秒)
failureImage 図の失敗
failureImageScaleType 故障マップのズームタイプ
retryImage しようとして再
retryImageScaleType 再スケーリングタイプしようとしています
backgroundImageの 背景
overlayImage オーバーレイ
pressedStateOverlayImage 押された状態に示されているオーバーレイ
roundAsCircle 図は、円形に配置されました
roundedCornerRadius 半径
roundTopLeft 左上隅を丸くするかどうか
roundTopRight 右上フィレットかどうか
roundBottomLeft 左下隅を丸くするかどうか
roundBottomRight 右下の角が丸みを帯びているかどうかを
roundingBorderWidth 図の円形または丸い境界線の幅。
roundingBorderColor 図色円形または丸い境界
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万+

おすすめ

転載: blog.csdn.net/u010090644/article/details/89673368