Fresco加载app内的图片,包括gif动图
来源:互联网 发布:最大化快捷键 mac 编辑:程序博客网 时间:2024/05/17 07:22
[我的项目地址:请点击这里](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: fanyafeng@live.cn */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 version="1.0" encoding="utf-8"?><android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context="com.fanyafeng.frescopicload.activity.AppPicLoadActivity" tools:showIn="@layout/activity_app_pic_load"> <!--需要v4或者v7包,不过一般as创建的工程都默认存在,此处采用滑动嵌套布局,为了解决滑动冲突--> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <com.facebook.drawee.view.SimpleDraweeView android:id="@+id/sdv1" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout></android.support.v4.widget.NestedScrollView>
因为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: fanyafeng@live.cn */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); }}
注释写的比较详细,大家应该很容易懂,来张效果图
0 0
- Fresco加载app内的图片,包括gif动图
- Fresco加载gif动图
- Fresco加载GIF动图
- 简单Fresco加载gif动图
- fresco加载图片 动图
- fresco加载gif不能动
- Fresco图片加载框架Demo,简单展示静态图片,gif动图
- 最新的Fresco加载Gif图片
- fresco 加载本地gif图片
- fresco加载GIF格式图片
- fresco加载gif图片到99%卡住的bug
- 加载gif动图
- 安卓里的gif图片解决方案:Fresco+gif
- 安卓中使用fresco加载Gif图片
- Android APP设计加载使用gif动图需要注意的一般性问题
- Android APP设计加载使用gif动图需要注意的一般性问题
- 简单的Fresco加载图片和GIF图片加载与停止
- Fresco SimpleDraweeView 加载本地的gif
- Hibernate能否越过数据库设置?
- Python使用Ckan API创建并上传resource
- 正确理解ThreadLocal
- window下的sphinx(coreseek)安装使用
- loadrunner 函数web.custom_request使用
- Fresco加载app内的图片,包括gif动图
- C语言 fread()与fwrite()函数说明与示例
- 句柄是什么?
- Windows平台上Android NDK初试用
- iOS开发-Realm数据库
- 我做的去除乱码FM
- mongodb 常用命令
- jq手风琴导航下拉切换
- springweb mvc学习的相关网址