依赖Fresco compile 'com.facebook.fresco:fresco:0.14.1' gif的依赖 compile 'com.facebook.fresco:animated-gif:0.14.1'//清单文件中注册MyApp
添加权限
public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); Fresco.initialize(this); } }
xml布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:fresco="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.mydayfresco.Main2Activity"> <com.facebook.drawee.view.SimpleDraweeView android:id="@+id/my_image_view" android:layout_width="130dp" android:layout_height="130dp" fresco:placeholderImage="@drawable/ic_launcher_background" /> </LinearLayout>带进度的图片
private SimpleDraweeView simpleDraweeView; private String path="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1528264254&di=859ced130de89d7ae81f85f1c9c44ba4&src=http://pic36.photophoto.cn/20150827/0034034435207606_b.jpg"; private Uri uri; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate( savedInstanceState ); setContentView( R.layout.activity_main2 ); uri = Uri.parse( path ); simpleDraweeView = findViewById( R.id.my_image_view ); GenericDraweeHierarchyBuilder builder = new GenericDraweeHierarchyBuilder( getResources() ); GenericDraweeHierarchy hierarchy = builder.setProgressBarImage( new ProgressBarDrawable() ).build(); simpleDraweeView.setHierarchy( hierarchy ); simpleDraweeView.setImageURI( uri ); }
//对图片的不同的裁剪
private SimpleDraweeView simpleDraweeView; private Button button; private String path="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1528264254&di=859ced130de89d7ae81f85f1c9c44ba4&src=http://pic36.photophoto.cn/20150827/0034034435207606_b.jpg"; private Uri uri; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate( savedInstanceState ); setContentView( R.layout.activity_main6 ); simpleDraweeView = findViewById( R.id.my_image_view ); button = findViewById( R.id.but ); button.setOnClickListener( this ); uri = Uri.parse( path ); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.but: GenericDraweeHierarchyBuilder builder = new GenericDraweeHierarchyBuilder( getResources() ); // 设置描述 button.setText("居中,无缩放"); // 样式设置,使图片只显示中间的部分 GenericDraweeHierarchy CENTER= builder.setActualImageScaleType( ScalingUtils.ScaleType.CENTER).build(); // 显示图片 simpleDraweeView.setImageURI( uri ); break; } }
//圆形与圆心
private SimpleDraweeView simpleDraweeView; private String path="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1528264254&di=859ced130de89d7ae81f85f1c9c44ba4&src=http://pic36.photophoto.cn/20150827/0034034435207606_b.jpg"; private Button bt_fresco_circle; private Button bt_fresco_corner; private Uri uri; private GenericDraweeHierarchyBuilder builder; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate( savedInstanceState ); setContentView( R.layout.activity_main3 ); simpleDraweeView = findViewById( R.id.my_image_view ); bt_fresco_circle = findViewById( R.id.bt_fresco_circle ); bt_fresco_corner = findViewById( R.id.bt_fresco_corner ); bt_fresco_circle.setOnClickListener( this ); bt_fresco_corner.setOnClickListener( this ); uri = Uri.parse( path ); builder = new GenericDraweeHierarchyBuilder( getResources() ); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.bt_fresco_circle: RoundingParams params = RoundingParams.asCircle(); GenericDraweeHierarchy hierarchy = builder.setRoundingParams( params ).build(); simpleDraweeView.setHierarchy( hierarchy ); simpleDraweeView.setImageURI( uri ); break; case R.id.bt_fresco_corner: RoundingParams roundingParams = RoundingParams.fromCornersRadius( 50f ); //添加背景颜色 // roundingParams.setOverlayColor( getResources().getColor( android.R.color.holo_blue_light ) ); //设置边框的粗细 roundingParams.setBorder( getResources().getColor( android.R.color.holo_blue_light ), 10f ); GenericDraweeHierarchy build = builder.setRoundingParams( roundingParams ).build(); simpleDraweeView.setHierarchy( build ); simpleDraweeView.setImageURI( uri ); break; } }
//渐进展示
private SimpleDraweeView simpleDraweeView; private Uri uri; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate( savedInstanceState ); setContentView( R.layout.activity_main4 ); simpleDraweeView = findViewById( R.id.my_image_view ); uri = Uri.parse( "https://sorry.xuty.tk/cache/6b960ad71cce31adb35f48f5c6d43c71.gif" ); Button button=findViewById( R.id.but ); button.setOnClickListener( this ); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.but: ProgressiveJpegConfig progressiveJpegConfig = new ProgressiveJpegConfig() { @Override public int getNextScanNumberToDecode(int scanNumber) { return scanNumber + 2; } @Override public QualityInfo getQualityInfo(int scanNumber) { boolean b = scanNumber >= 5; return ImmutableQualityInfo.of( scanNumber, b, false ); } }; ImagePipelineConfig.newBuilder( this ).setProgressiveJpegConfig(progressiveJpegConfig ).build(); ImageRequest request = ImageRequestBuilder.newBuilderWithSource( uri ).setProgressiveRenderingEnabled( true ).build(); AbstractDraweeController draweeController = Fresco.newDraweeControllerBuilder() .setImageRequest( request ) .setTapToRetryEnabled( true ) .setOldController( simpleDraweeView.getController() ).build(); simpleDraweeView.setController(draweeController ); break; } }
Gif格式 private SimpleDraweeView sdv_fresco_gif; private Button button1; private Button button2; private Button button3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate( savedInstanceState ); setContentView( R.layout.activity_main5 ); sdv_fresco_gif = findViewById( R.id.my_image_view ); button1 = findViewById( R.id.but1 ); button2 = findViewById( R.id.but1 ); button3 = findViewById( R.id.but1 ); button1.setOnClickListener( this ); button2.setOnClickListener( this ); button3.setOnClickListener( this ); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.but1: Uri uri = Uri.parse( "https://sorry.xuty.tk/cache/6b960ad71cce31adb35f48f5c6d43c71.gif" ); DraweeController controller = Fresco.newDraweeControllerBuilder() .setUri( uri )//设置GIF网址 .setAutoPlayAnimations( false )//是否自动播放动画,false为不播放 .setOldController( sdv_fresco_gif.getController() )//内存优化 .build(); sdv_fresco_gif.setController( controller ); break; case R.id.but2: //拿到动画对象 Animatable animatableStop = sdv_fresco_gif.getController().getAnimatable(); //进行非空及是否动画在播放判断 if (animatableStop != null && animatableStop.isRunning()) { //动画在播放,停止动画播放 animatableStop.stop(); } break; case R.id.but3: // 动画开始 //拿到动画对象 Animatable animatableStart = sdv_fresco_gif.getController().getAnimatable(); //进行非空及是否动画在播放判断 if (animatableStart != null && !animatableStart.isRunning()) { //动画停止播放,播放动画 animatableStart.start(); } break; } }