Fresco簡單封裝成工具類

1.依賴
implementation ‘com.facebook.fresco:fresco:1.11.0’
implementation ‘com.facebook.fresco:animated-gif:1.10.0’ //需要實現gif動圖的時候

2.Util類
public class FrescoUtil {
//private FrescoUtil(){}
/**
* 普通加載圖片
* @param url 圖片路徑
* @param simpleDraweeView 控件
*/
public static void setTu(String url, SimpleDraweeView simpleDraweeView){
Uri uri = Uri.parse(url);
simpleDraweeView.setImageURI(uri);
}

/**
 * 漸進式加載圖片
 * @param url 圖片路徑
 * @param simpleDraweeView 控件
 */
public static void setJianJin(String url,SimpleDraweeView simpleDraweeView){
    Uri uri = Uri.parse(url);
    ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)
            .setProgressiveRenderingEnabled(true)
            .build();
    DraweeController controller = Fresco.newDraweeControllerBuilder()
            .setImageRequest(request)
            .setOldController(simpleDraweeView.getController())
            .build();
    simpleDraweeView.setController(controller);
}

/**
 * 圓角圖片加載
 * @param url 圖片路徑
 * @param simpleDraweeView 控件
 * @param radius 角度
 * @param color 描邊顏色
 * @param width 描邊線寬度
 */
public static void setYuanjiao(String url,SimpleDraweeView simpleDraweeView,float radius,int color,float width){
    Uri uri = Uri.parse(url);
    RoundingParams roundingParams=RoundingParams.fromCornersRadius(0f);
    if (width>0f){
        roundingParams.setBorder(color,width);//描邊線
    }
    roundingParams.setCornersRadius(radius);//總體圓角
    simpleDraweeView.getHierarchy().setRoundingParams(roundingParams);
    simpleDraweeView.setImageURI(uri);
}

/**
 * 圓角圖片
 *可控四角角度
 * @param url 圖片路徑
 * @param simpleDraweeView 控件
 * @param topleft 左上角
 * @param topright 右上角
 * @param bottomRight 右下角
 * @param bottomLeft 左下角
 * @param corlor 描邊線顏色
 * @param width 描邊線寬度
 */
public static void setYuanJiaoKk(String url,SimpleDraweeView simpleDraweeView,float topleft,float topright,float bottomRight,float bottomLeft,int corlor,float width){
    Uri uri=Uri.parse(url);
    RoundingParams roundingParams = RoundingParams.fromCornersRadius(0f);
    if (width>0f){
        roundingParams.setBorder(corlor,width);//描邊線
    }
    roundingParams.setCornersRadii(topleft,topright,bottomRight,bottomLeft);//各角不同圓角
    simpleDraweeView.getHierarchy().setRoundingParams(roundingParams);
    simpleDraweeView.setImageURI(uri);
}

/**
 * 圓形圖片
 * @param url 圖片路徑
 * @param simpleDraweeView 控件
 * @param color 描邊線顏色
 * @param width 描邊線寬度
 */

public static void setYuanQuan(String url,SimpleDraweeView simpleDraweeView,int color,float width){
if (url==null){
simpleDraweeView.setImageURI(url);
return;
}
Uri uri = Uri.parse(url);
RoundingParams roundingParams = RoundingParams.fromCornersRadius(0f);
if (width>0f){
roundingParams.setBorder(color,width);//描邊線
}
roundingParams.setRoundAsCircle(true);
simpleDraweeView.getHierarchy().setRoundingParams(roundingParams);
simpleDraweeView.setImageURI(uri);
}

/**
 * Gif動態圖片
 * @param url 圖片路徑
 * @param simpleDraweeView 控件
 */

public static void setDongtu(String url,SimpleDraweeView simpleDraweeView){
Uri uri=Uri.parse(url);
DraweeController controller = Fresco.newDraweeControllerBuilder()
.setUri(uri)
.setTapToRetryEnabled(true)
.setAutoPlayAnimations(true)//設置true將循環播放Gif動畫
.setOldController(simpleDraweeView.getController())
.build();
simpleDraweeView.setController(controller);
}

/**
 * 高斯模糊
 * @param simpleDraweeView 控件
 * @param url 圖片路徑
 * @param iterations 迭代次數 越大越魔化
 * @param blurRadius 模糊圖半徑 必須大於0
 */

public static void GaosiMohu(SimpleDraweeView simpleDraweeView,String url,int iterations,int blurRadius){
Uri uri =Uri.parse(url);
ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)
.setPostprocessor(new IterativeBoxBlurPostProcessor(2,blurRadius))
.build();
AbstractDraweeController controller = Fresco.newDraweeControllerBuilder()
.setOldController(simpleDraweeView.getController())
.setImageRequest(request)
.build();
simpleDraweeView.setController(controller);
}
}

}

3.App下設置本地緩存
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
File sd = Environment.getExternalStorageDirectory();
String mPath = sd.getPath() + “/ima”;
File file = new File(mPath);
if (!file.exists()) {
file.mkdir();
}
Fresco.initialize(this,ImagePipelineConfig.newBuilder(App.this)
.setMainDiskCacheConfig(
DiskCacheConfig.newBuilder(this)
.setBaseDirectoryPath(file)
.build()
)
.build()
);
}
}

4.使用
//圓形圖
//FrescoUtil.setYuanQuan(path,simpleDraweeView,Color.RED,1);
//動圖
//FrescoUtil.setDongtu(path2,simpleDraweeView);
//高斯模糊
//FrescoUtil.GaosiMohu(simpleDraweeView,path,2,5);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章