1.主页面布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/bt_fresco_spimg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="带进度条的图片"/>
<Button
android:id="@+id/bt_fresco_crop"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="图片的不同裁剪"/>
<Button
android:id="@+id/bt_fresco_circleAndCorner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="圆形和圆角图片"/>
<Button
android:id="@+id/bt_fresco_jpeg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="渐进式展示图片"/>
<Button
android:id="@+id/bt_fresco_gif"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="GIF动画图片"/>
<Button
android:id="@+id/bt_fresco_multi"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="多图请求及图片复用"/>
<Button
android:id="@+id/bt_fresco_listener"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="图片加载监听"/>
<Button
android:id="@+id/bt_fresco_resize"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="图片缩放和旋转"/>
<Button
android:id="@+id/bt_fresco_modifyImg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="修改图片"/>
<Button
android:id="@+id/bt_fresco_autoSizeImg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="动态展示图片"/>
</LinearLayout>
</ScrollView>
</LinearLayout>
2.主页面代码
package com.bawie.demo1;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import com.bawie.demo1.view.FrescoSpimgActivity;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button bt_fresco_spimg;
private Button bt_fresco_crop;
private Button bt_fresco_circleAndCorner;
private Button bt_fresco_jpeg;
private Button bt_fresco_gif;
private Button bt_fresco_multi;
private Button bt_fresco_listener;
private Button bt_fresco_resize;
private Button bt_fresco_modifyImg;
private Button bt_fresco_autoSizeImg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
bt_fresco_spimg = (Button) findViewById(R.id.bt_fresco_spimg);
bt_fresco_crop = (Button) findViewById(R.id.bt_fresco_crop);
bt_fresco_circleAndCorner = (Button) findViewById(R.id.bt_fresco_circleAndCorner);
bt_fresco_jpeg = (Button) findViewById(R.id.bt_fresco_jpeg);
bt_fresco_gif = (Button) findViewById(R.id.bt_fresco_gif);
bt_fresco_multi = (Button) findViewById(R.id.bt_fresco_multi);
bt_fresco_listener = (Button) findViewById(R.id.bt_fresco_listener);
bt_fresco_resize = (Button) findViewById(R.id.bt_fresco_resize);
bt_fresco_modifyImg = (Button) findViewById(R.id.bt_fresco_modifyImg);
bt_fresco_autoSizeImg = (Button) findViewById(R.id.bt_fresco_autoSizeImg);
bt_fresco_spimg.setOnClickListener(this);
bt_fresco_crop.setOnClickListener(this);
bt_fresco_circleAndCorner.setOnClickListener(this);
bt_fresco_jpeg.setOnClickListener(this);
bt_fresco_gif.setOnClickListener(this);
bt_fresco_multi.setOnClickListener(this);
bt_fresco_listener.setOnClickListener(this);
bt_fresco_resize.setOnClickListener(this);
bt_fresco_modifyImg.setOnClickListener(this);
bt_fresco_autoSizeImg.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_fresco_spimg://带进度条的图片
startActivity(new Intent(this,FrescoSpimgActivity.class));
break;
case R.id.bt_fresco_crop://图片的不同裁剪
break;
case R.id.bt_fresco_circleAndCorner://圆形和圆角图片
break;
case R.id.bt_fresco_jpeg://渐进式展示图片
break;
case R.id.bt_fresco_gif://GIF动画图片
break;
case R.id.bt_fresco_multi://多图请求及图片复用
break;
case R.id.bt_fresco_listener://图片加载监听
break;
case R.id.bt_fresco_resize://图片缩放和旋转
break;
case R.id.bt_fresco_modifyImg://修改图片
break;
case R.id.bt_fresco_autoSizeImg://动态展示图片
break;
}
}
}
3.全局初始化
public void onCreate() {
super.onCreate();
Fresco.initialize(this);
}
4.带进度条的图片
布局
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:fresco="http://schemas.android.com/apk/res-auto"
tools:context=".view.FrescoSpimgActivity">
<!--fresco:placeholderImage="@drawable/my_drawable":默认占位图片-->
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/sdv_fresco_spimg"
android:layout_width="130dp"
android:layout_height="130dp"
android:layout_gravity="center"
fresco:placeholderImage="@mipmap/ic_launcher" />
</android.support.constraint.ConstraintLayout>
主页面代码
package com.bawie.demo1.view;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import com.bawie.demo1.R;
import com.facebook.drawee.drawable.ProgressBarDrawable;
import com.facebook.drawee.generic.GenericDraweeHierarchy;
import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder;
import com.facebook.drawee.view.SimpleDraweeView;
public class FrescoSpimgActivity extends AppCompatActivity {
private SimpleDraweeView sdv_fresco_spimg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fresco_spimg);
initView();
//显示所要加载的图片
Uri parse = Uri.parse("http://assets.kgc.cn/upload/openteacher/20160831/1472636067718985.jpg");
//创建Build对象
GenericDraweeHierarchyBuilder genericDraweeHierarchyBuilder = new GenericDraweeHierarchyBuilder(getResources());
//通过这个对象设置进度条的样式
GenericDraweeHierarchy build = genericDraweeHierarchyBuilder.setProgressBarImage(new ProgressBarDrawable()).build();
//把样式设置给图片控件
sdv_fresco_spimg.setHierarchy(build);
//加载图片成功
sdv_fresco_spimg.setImageURI(parse);
}
private void initView() {
sdv_fresco_spimg = (SimpleDraweeView) findViewById(R.id.sdv_fresco_spimg);
}
}
5.圆形和圆角图片
布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:fresco="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/sdv_fresco_circleandcorner"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_gravity="center"
fresco:placeholderImage="@drawable/a_9" />
<Button
android:id="@+id/bt_fresco_circle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="48dp"
android:text="设置圆形图片" />
<Button
android:id="@+id/bt_fresco_corner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="设置圆角图片" />
</LinearLayout>
主代码
package com.bawie.demo1.view;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import com.bawie.demo1.R;
import com.facebook.drawee.generic.GenericDraweeHierarchy;
import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder;
import com.facebook.drawee.generic.RoundingParams;
import com.facebook.drawee.view.SimpleDraweeView;
public class FrescoCircleAndCornerActivity extends AppCompatActivity implements View.OnClickListener {
private SimpleDraweeView sdv_fresco_circleandcorner;
private Button bt_fresco_circle;
private Button bt_fresco_corner;
private GenericDraweeHierarchyBuilder mBuilder;
private Uri mParse;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fresco_circle_and_corner);
initView();
//网上请求图片的路径
mParse = Uri.parse("http://img4q.duitang.com/uploads/item/201304/27/20130427043538_wAfHC.jpeg");
//创建Builder对象
mBuilder = new GenericDraweeHierarchyBuilder(getResources());
}
private void initView() {
sdv_fresco_circleandcorner = (SimpleDraweeView) findViewById(R.id.sdv_fresco_circleandcorner);
bt_fresco_circle = (Button) findViewById(R.id.bt_fresco_circle);
bt_fresco_corner = (Button) findViewById(R.id.bt_fresco_corner);
bt_fresco_circle.setOnClickListener(this);
bt_fresco_corner.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_fresco_circle://圆形
//设置形状对象,圆形
RoundingParams roundingParams = RoundingParams.asCircle();
//把形状设置给参数对象
GenericDraweeHierarchy rounding = mBuilder.setRoundingParams(roundingParams).build();
//设置给图片控件
sdv_fresco_circleandcorner.setHierarchy(rounding);
//加载图片的控件
sdv_fresco_circleandcorner.setImageURI(mParse);
break;
case R.id.bt_fresco_corner://圆角边界
RoundingParams roundingParams1 = RoundingParams.fromCornersRadius(50f);
GenericDraweeHierarchy build = mBuilder.setRoundingParams(roundingParams1).build();
sdv_fresco_circleandcorner.setHierarchy(build);
//加载图片控件
sdv_fresco_circleandcorner.setImageURI(mParse);
break;
}
}
}
6.渐进式展示图片
布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:fresco="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.facebook.drawee.view.SimpleDraweeView
android:layout_gravity="center"
android:id="@+id/sdv_fresco_jpeg"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginTop="48dp"
fresco:placeholderImage="@drawable/a_9" />
<Button
android:id="@+id/sdv_fresco_askImg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="48dp"
android:text="请求网络图片" />
</LinearLayout>
主代码
package com.bawie.demo1.view;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import com.bawie.demo1.R;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.drawee.controller.AbstractDraweeController;
import com.facebook.drawee.view.SimpleDraweeView;
import com.facebook.imagepipeline.core.ImagePipelineConfig;
import com.facebook.imagepipeline.decoder.ProgressiveJpegConfig;
import com.facebook.imagepipeline.image.ImmutableQualityInfo;
import com.facebook.imagepipeline.image.QualityInfo;
import com.facebook.imagepipeline.request.ImageRequest;
import com.facebook.imagepipeline.request.ImageRequestBuilder;
public class FrescoJpegActivity extends AppCompatActivity implements View.OnClickListener {
private SimpleDraweeView sdv_fresco_jpeg;
private Button sdv_fresco_askImg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fresco_jpeg);
initView();
}
private void initView() {
sdv_fresco_jpeg = (SimpleDraweeView) findViewById(R.id.sdv_fresco_jpeg);
sdv_fresco_askImg = (Button) findViewById(R.id.sdv_fresco_askImg);
sdv_fresco_askImg.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.sdv_fresco_askImg:
// 获取图片URL
Uri uri = Uri.parse("https://note.wiz.cn/wizas/a/users/avatar/36e04b40-cc54-41c5-995a-7aad33f45dd9");
//
ProgressiveJpegConfig jpegConfig = new ProgressiveJpegConfig() {
@Override
public int getNextScanNumberToDecode(int scanNumber) {
return scanNumber+2;
}
@Override
public QualityInfo getQualityInfo(int scanNumber) {
boolean isGoodEnough = (scanNumber >= 5);
return ImmutableQualityInfo.of(scanNumber,isGoodEnough,false);
}
};
ImagePipelineConfig.newBuilder(this).setProgressiveJpegConfig(jpegConfig).build();
//创建ImageRequest对象
ImageRequest request = ImageRequestBuilder.newBuilderWithSource(uri)
.setProgressiveRenderingEnabled(true)//打开渐进模式
.build();
AbstractDraweeController draweeController = Fresco.newDraweeControllerBuilder()
.setImageRequest(request)
.setTapToRetryEnabled(true)
.setOldController(sdv_fresco_jpeg.getController())
.build();
sdv_fresco_jpeg.setController(draweeController);
break;
}
}
}