Fresco加载app内的图片,包括gif动图 您所在的位置:网站首页 newimage/wcorner14.gif Fresco加载app内的图片,包括gif动图

Fresco加载app内的图片,包括gif动图

2022-03-26 10:34| 来源: 网络整理| 查看: 265

[我的项目地址:请点击这里](https://github.com/1181631922/FrescoPicLoad)

原来用项目imageloader,但是现在这个项目图片比较多,而且是列表形式的加载,原来只是简单研究过fresco,感觉用这个应该可以解决大部分问题,先简单了解一下,加载app内的图片首先框架需要初始化,最好放在Application中,而且官方也是这样建议的

package com.fanyafeng.frescopicload.app; import android.app.Application; import com.facebook.drawee.backends.pipeline.Fresco; import com.fanyafeng.frescopicload.util.frscoutil.FrescoConfig; /** * Author: fanyafeng * Data: 16/7/9 11:14 * Email: [email protected] */ public class AppConfig extends Application { @Override public void onCreate() { super.onCreate(); Fresco.initialize(this, FrescoConfig.getsImagePipelineConfig(this)); } } 这里博主进行了一些简单的封装,还有就是水平有限,如果大家有更好的可以留言或者在github上提交issue

github地址点击打开链接

这里有坑,就是fresco需要知道图片的宽高比例,不支持高度的wrap_content

我封装的方法中用了重载,那个方法合适用哪个,先看一下非gif

activity:

package com.fanyafeng.frescopicload.activity; import android.os.Bundle; import com.facebook.drawee.view.SimpleDraweeView; import com.fanyafeng.frescopicload.R; import com.fanyafeng.frescopicload.BaseActivity; import com.fanyafeng.frescopicload.util.FrescoUtil; //需要搭配baseactivity,这里默认为baseactivity,并且默认Baseactivity为包名的根目录 public class AppPicLoadActivity extends BaseActivity { private SimpleDraweeView sdv1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_app_pic_load); //这里默认使用的是toolbar的左上角标题,如果需要使用的标题为中心的采用下方注释的代码,将此注释掉即可 title = getString(R.string.title_activity_app_pic_load); initView(); initData(); } @Override protected void onResume() { super.onResume(); //toolbar_center_title.setText(getString(R.string.title_activity_app_pic_load)); } //初始化UI空间 private void initView() { sdv1 = (SimpleDraweeView) findViewById(R.id.sdv1); FrescoUtil.loadPicInApp(sdv1, R.drawable.jinmu, 1.77864583f); // ControllerListenerUtil.setControllerListener(sdv1, String.valueOf(R.drawable.jinmu), MyUtils.getScreenWidth(this), this); } //初始化数据 private void initData() { } } xml

因为xml中没进行定义高度,所以需要进行指定比例,gif的activity和xml差不多,相信大家知道怎么用了

来看util,

package com.fanyafeng.frescopicload.util; import android.content.Context; import android.net.Uri; import android.support.annotation.NonNull; import com.facebook.common.util.UriUtil; import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.drawee.generic.GenericDraweeHierarchy; import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder; import com.facebook.drawee.generic.RoundingParams; import com.facebook.drawee.interfaces.DraweeController; import com.facebook.drawee.view.SimpleDraweeView; /** * Author: fanyafeng * Data: 16/7/9 12:04 * Email: [email protected] */ public class FrescoUtil { /** * 加载app内非动图 * * @param simpleDraweeView view控件 * @param resId 资源比例 * @param aspectRatio 图片长宽比例 */ public static void loadPicInApp(@NonNull SimpleDraweeView simpleDraweeView, @NonNull int resId, float aspectRatio) { if (simpleDraweeView == null) return; Uri uri = new Uri.Builder() .scheme(UriUtil.LOCAL_RESOURCE_SCHEME) .path(String.valueOf(resId)) .build(); if (aspectRatio > 0) { simpleDraweeView.setAspectRatio(aspectRatio); } simpleDraweeView.setImageURI(uri); } /** * 加载app内非动图 * * @param simpleDraweeView * @param resId */ public static void loadPicInApp(@NonNull SimpleDraweeView simpleDraweeView, @NonNull int resId) { if (simpleDraweeView == null) return; Uri uri = new Uri.Builder() .scheme(UriUtil.LOCAL_RESOURCE_SCHEME) .path(String.valueOf(resId)) .build(); simpleDraweeView.setImageURI(uri); } /** * @param simpleDraweeView * @param resId * @param aspectRatio */ public static void loadGifPicInApp(@NonNull SimpleDraweeView simpleDraweeView, @NonNull int resId, float aspectRatio) { if (simpleDraweeView == null) { return; } Uri uri = new Uri.Builder() .scheme(UriUtil.LOCAL_RESOURCE_SCHEME) .path(String.valueOf(resId)) .build(); DraweeController draweeController = Fresco.newDraweeControllerBuilder() .setUri(uri) .setAutoPlayAnimations(true) .build(); if (aspectRatio > 0) { simpleDraweeView.setAspectRatio(aspectRatio); } simpleDraweeView.setController(draweeController); } /** * @param simpleDraweeView * @param resId */ public static void loadGifPicInApp(@NonNull SimpleDraweeView simpleDraweeView, @NonNull int resId) { if (simpleDraweeView == null) { return; } Uri uri = new Uri.Builder() .scheme(UriUtil.LOCAL_RESOURCE_SCHEME) .path(String.valueOf(resId)) .build(); DraweeController draweeController = Fresco.newDraweeControllerBuilder() .setUri(uri) .setAutoPlayAnimations(true) .build(); simpleDraweeView.setController(draweeController); } /** * @param simpleDraweeView * @param gifUrl * @param aspectRatio */ public static void loadGifPicOnNet(SimpleDraweeView simpleDraweeView, @NonNull String gifUrl, float aspectRatio) { DraweeController draweeController = Fresco.newDraweeControllerBuilder() .setUri(Uri.parse(gifUrl)) .setAutoPlayAnimations(true) .build(); if (aspectRatio > 0) { simpleDraweeView.setAspectRatio(aspectRatio); } simpleDraweeView.setController(draweeController); } /** * @param simpleDraweeView * @param gifUrl */ public static void loadGifPicOnNet(SimpleDraweeView simpleDraweeView, @NonNull String gifUrl) { DraweeController draweeController = Fresco.newDraweeControllerBuilder() .setUri(Uri.parse(gifUrl)) .setAutoPlayAnimations(true) .build(); simpleDraweeView.setController(draweeController); } } 注释写的比较详细,大家应该很容易懂,来张效果图



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有