简介:
Fresco是Facebook最新推出的一款用于Android应用中展示图片的强大图片库,可以从网络、本地存储和本地资源中加载图片,是新一代的图片加载库,因为Android应用程程序的内存通常都不大,经常在图片加载中出现OOM,虽然有各种手段去优化,尽量减少出现 OOM 的可能性,但是永远没法避免。而Facebook就另辟蹊径,既然没法在 Java 层处理,我们就在更底层的Native堆做手脚。于是 Fresco 将图片放到一个特别的内存区域叫 Ashmem 区,就是属于 Native堆,图片将不再占用 App 的内存,Java 层对此无能为力,这里是属于 C++ 的地盘,所以能大大的减少 OOM。所以此库很强大,不过用起来也比较复杂,包也比较大,貌似有2、3M,底层涉及到的 C++ 领域,想读源码也比较困难。
github地址:https://github.com/facebook/fresco
使用实例:
- public class FrescoActivity extends AppCompatActivity {
-
- private SimpleDraweeView mSimpleView;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
-
- Fresco.initialize(this);
- setContentView(R.layout.activity_fresco);
- mSimpleView = (SimpleDraweeView) findViewById(R.id.simpleDraweeView);
-
-
-
-
-
-
-
-
-
- mSimpleView.setImageURI(Uri.parse(ImageUrls.bigImages[3]));
- }
- }
- <com.facebook.drawee.view.SimpleDraweeView
- android:id="@+id/simpleDraweeView"
- android:layout_height="200dp"
- android:layout_width="200dp"
- fresco:actualImageScaleType="centerCrop"
- fresco:backgroundImage="@color/colorAccent"
- fresco:fadeDuration="300"
- fresco:placeholderImage="@mipmap/ic_launcher"
- fresco:placeholderImageScaleType="fitCenter"
- fresco:failureImage="@mipmap/d_shuai"
- fresco:failureImageScaleType="fitCenter"
- fresco:roundAsCircle="false"
- fresco:roundedCornerRadius="40dp"
- fresco:roundBottomLeft="true"
- fresco:roundBottomRight="true"
- fresco:roundTopLeft="true"
- fresco:roundTopRight="true"
- fresco:roundWithOverlayColor="@color/colorPrimary"
- fresco:roundingBorderColor="#00ff00"
- fresco:roundingBorderWidth="5dp"
- ></com.facebook.drawee.view.SimpleDraweeView>