android 第三方打开网络图片不显示,android使用第三方框架fresco展示网络图片(示例代码)...

资源:https://github.com/facebook/fresco](https://github.com/facebook/fresco

01:优点和不足:

加载的图片多时,推荐使用,比如ListView条目中的图片.

02:添加依赖库:在app/build.gradle中添加如下代码,点击同步:

compile ‘com.facebook.fresco:fresco:0.9.0+‘

03.布局:

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context="www.itcast.com.testfresco.MainActivity">

android:id="@+id/iv"

android:layout_width="200dp"

android:layout_height="200dp"

fresco:placeholderImage="@mipmap/ic_launcher" />

04.访问网络当然添加权限必不可少:

05.初始化要注意:

在Application初始化或在Activity 的setContentView()方法之前,进行初始化

Fresco.initialize(this);

06:核心代码:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private SimpleDraweeView iv;

private Button btn;

private String NET_URI="http://img4.duitang.com/uploads/item/201412/11/20141211152834_eAfSi.jpeg";

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//初始化的位置

Fresco.initialize(this);

setContentView(R.layout.activity_main);

initView();

}

private void initView() {

iv = (SimpleDraweeView) findViewById(R.id.iv);

btn = (Button) findViewById(R.id.btn);

btn.setOnClickListener(this);

}

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.btn:

Uri uri=Uri.parse(NET_URI);

iv.setImageURI(uri);

break;

}

}

}

07:图片特殊显示参数:

fresco:actualImageScaleType="focusCrop"// 图片的缩放方式.

fresco:backgroundImage="@color/blue" //背景图.不支持缩放.XML仅能指定一张背景图.如果使用Java代码指定的话,可以指定多个背景,显示方式类似FrameLayout,多个背景图按照顺序一级一级层叠上去.

fresco:fadeDuration="300" // 渐显图片的时间

fresco:failureImage="@drawable/error" // 图片加载失败显示的图片

fresco:failureImageScaleType="centerInside" 图片加载失败显示的图片的缩放类型

fresco:overlayImage="@drawable/watermark" // 层叠图,最后叠加在图片之上.不支持缩放.XML仅能指定一张.如果使用Java代码指定的话,可以指定多个,显示方式类似FrameLayout,多个图按照顺序一级一级层叠上去.

fresco:placeholderImage="@color/wait_color" // 图片加载成功之前显示的占位图

fresco:placeholderImageScaleType="fitCenter" // 图片加载成功之前显示的占位图的缩放类型

fresco:pressedStateOverlayImage="@color/red" // 设置按压状态下的层叠图.不支持缩放.

fresco:progressBarAutoRotateInterval="1000" // 进度条图片旋转显示时长

fresco:progressBarImage="@drawable/progress_bar" // 进度条图片

fresco:progressBarImageScaleType="centerInside" //进度条图片的缩放类型

fresco:retryImage="@drawable/retrying" // 当图片加载失败的时候,显示该图片提示用户点击重新加载图片

fresco:retryImageScaleType="centerCrop" // 提示图片的缩放类型

fresco:roundAsCircle="false" // 显示圆形图片

fresco:roundBottomLeft="false" // roundedCornerRadius属性设置后,四个角都会有圆角,如果左下角不需要设置为false.

fresco:roundBottomRight="true" // roundedCornerRadius属性设置后,四个角都会有圆角,如果右下角不需要设置为false.

fresco:roundTopLeft="true" // roundedCornerRadius属性设置后,四个角都会有圆角,如果左上角不需要设置为false.

fresco:roundTopRight="false" // roundedCornerRadius属性设置后,四个角都会有圆角,如果右上角不需要设置为false.

fresco:roundWithOverlayColor="@color/corner_color" // 设置图片圆角后空出区域的颜色.如示例图中的红色部分

fresco:roundedCornerRadius="1dp" // 设置图片圆角角度,设置该属性后四个角都会生效

fresco:roundingBorderColor="@color/border_color" // 设置圆角后,边框的颜色.

fresco:roundingBorderWidth="2dp" /> // 设置圆角后,外边框的宽高

08.图片特殊显示java代码:

GenericDraweeHierarchy hierarchy = GenericDraweeHierarchyBuilder

.newInstance(getResources())

.setRetryImage(getResources().getDrawable(R.mipmap.ic_launcher))

.build();

imageivew.setHierarchy(hierarchy);

09.渐进式显示图片(下载多少就显示多少,没下载完之前是模糊的):

/*渐进式显示图片

ProgressiveJpegConfig pjpegConfig = new ProgressiveJpegConfig() {

@Override

// 返回下一个需要解码的扫描次数

public int getNextScanNumberToDecode(int scanNumber) {

return scanNumber + 2;

}

// 确定多少个扫描次数之后的图片才能开始显示

public QualityInfo getQualityInfo(int scanNumber) {

boolean isGoodEnough = (scanNumber >= 5);

return ImmutableQualityInfo.of(scanNumber, isGoodEnough, false);

}

};

// ImagePipelineConfig配置如何加载图像

ImagePipelineConfig config = ImagePipelineConfig.newBuilder(this)

.setProgressiveJpegConfig(pjpegConfig)

.build();

// 显式地指定允许渐进式JPEG图片加载

ImageRequest request = ImageRequestBuilder

.newBuilderWithSource(uri)

.setProgressiveRenderingEnabled(true)

.build();

// 构建显示图片所用到的DraweeController

DraweeController controller = Fresco.newDraweeControllerBuilder()

.setImageRequest(request)

.setOldController(iv.getController())

.build();

iv.setController(controller);

*/

10.显示Gif图片:

/*显示GIF图片.Fresco 支持 GIF 和 WebP 格式的动画图片.如果你希望图片下载完之后自动播放,同时,当View从屏幕移除时,停止播放,只需要在 image request 中简单设置

Uri urlGif = Uri.parse("http://img0.imgtn.bdimg.com/it/u=4040253614,2927360696&fm=21&gp=0.jpg");

DraweeController controller = Fresco.newDraweeControllerBuilder()

.setUri(urlGif)

.setAutoPlayAnimations(true)

.build();

iv.setController(controller);

*/

11:代码资源:

http://download.csdn.net/detail/tom91/9631011

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值