Fresco的简单使用


依赖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;
}
    }











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值