package com.wm.remusic.widget; import android.content.Context; import android.graphics.Color; import android.graphics.drawable.Animatable; import android.net.Uri; import android.support.annotation.Nullable; import android.util.AttributeSet; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.FrameLayout; import com.facebook.common.logging.FLog; import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.drawee.controller.BaseControllerListener; import com.facebook.drawee.controller.ControllerListener; 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; import com.facebook.imagepipeline.image.ImageInfo; import com.facebook.imagepipeline.image.QualityInfo; import com.facebook.imagepipeline.request.ImageRequest; import com.facebook.imagepipeline.request.ImageRequestBuilder; import com.wm.remusic.R; /** * Created by wm on 2017/1/4. */ public class RoundView extends FrameLayout { private View mView; private SimpleDraweeView albumView; public RoundView(Context context) { super(context); initView(context); } public RoundView(Context context, AttributeSet attrs) { super(context, attrs); initView(context); } public static RoundView getView(Context context ,String str){ RoundView view = new RoundView(context); view.setAlbum(str); Log.e("uqueue",str); return view; } private void initView(Context context){ this.setAnimationCacheEnabled(false); mView = LayoutInflater.from(context).inflate(R.layout.fragment_roundimage,null); albumView = (SimpleDraweeView) mView.findViewById(R.id.sdv); addView(mView); //设置图像是否为圆形 rp.setRoundAsCircle(true); //设置圆角半径 //rp.setCornersRadius(20); //分别设置左上角、右上角、左下角、右下角的圆角半径 //rp.setCornersRadii(20,25,30,35); //分别设置(前2个)左上角、(3、4)右上角、(5、6)左下角、(7、8)右下角的圆角半径 //rp.setCornersRadii(new float[]{20,25,30,35,40,45,50,55}); //设置边框颜色及其宽度 rp.setBorder(Color.BLACK, 6); albumView.setHierarchy(hierarchy); } public void setAlbum(String albumPath){ if (albumPath == null) { albumView.setImageURI(Uri.parse("res:/" + R.drawable.placeholder_disk_play_song)); } else { try { ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.parse(albumPath)).build(); DraweeController controller = Fresco.newDraweeControllerBuilder() .setOldController(albumView.getController()) .setImageRequest(request) .setControllerListener(controllerListener) .build(); albumView.setController(controller); } catch (Exception e) { e.printStackTrace(); } } Log.e("roundview","setalbum = " + albumPath); } //初始化圆角圆形参数对象 RoundingParams rp = new RoundingParams(); //获取GenericDraweeHierarchy对象 GenericDraweeHierarchy hierarchy = GenericDraweeHierarchyBuilder.newInstance(getResources()) //设置圆形圆角参数 .setRoundingParams(rp) //设置圆角半径 //.setRoundingParams(RoundingParams.fromCornersRadius(20)) //分别设置左上角、右上角、左下角、右下角的圆角半径 //.setRoundingParams(RoundingParams.fromCornersRadii(20,25,30,35)) //分别设置(前2个)左上角、(3、4)右上角、(5、6)左下角、(7、8)右下角的圆角半径 //.setRoundingParams(RoundingParams.fromCornersRadii(new float[]{20,25,30,35,40,45,50,55})) //设置圆形圆角参数;RoundingParams.asCircle()是将图像设置成圆形 //.setRoundingParams(RoundingParams.asCircle()) //设置淡入淡出动画持续时间(单位:毫秒ms) .setFadeDuration(300) //构建 .build(); ControllerListener controllerListener = new BaseControllerListener<ImageInfo>() { @Override public void onFinalImageSet(String id, @Nullable ImageInfo imageInfo, @Nullable Animatable anim) { } @Override public void onIntermediateImageSet(String id, @Nullable ImageInfo imageInfo) { } @Override public void onFailure(String id, Throwable throwable) { albumView.setImageURI(Uri.parse("res:/" + R.drawable.placeholder_disk_play_song)); } }; }