Picasso使用示例(四种来源途径下加载图片,附demo)
来源:互联网 发布:校园网络设计思路 编辑:程序博客网 时间:2024/05/17 03:57
一.直接上代码(四种来源途径下加载图片)
1》
package com.zhc.picasso;import java.io.File;import com.squareup.picasso.Picasso;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.app.Activity;import android.content.Context;import android.widget.ImageView;public class MainActivity extends Activity {public static final String ANDROID_RESOURCE = "android.resource://";public static final String FOREWARD_SLASH = "/";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 1.从安卓项目资源加载 ImageView targetImageView1 = (ImageView) findViewById(R.id.imageview1); int resourceId = R.drawable.ic_launcher; Picasso.with(getBaseContext()).load(resourceId).into(targetImageView1); //2.从本地文件中加载 ImageView targetImageView2 = (ImageView) findViewById(R.id.imageview2); File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),"zhc.png"); Picasso.with(getBaseContext()).load(file).into(targetImageView2);// 3.从网络上加载图片 ImageView targetImageView3 = (ImageView) findViewById(R.id.imageview3); String internetUrl = "http://img03.sogoucdn.com/app/a/100520093/508de2a2df69f20f-ad54974be9c2600f-01f80ad8e3e76b8fe0205b58d9e59649.jpg"; Picasso.with(getBaseContext()).load(internetUrl).into(targetImageView3);// 备用网络路径:http://img03.sogoucdn.com/app/a/100520093/508de2a2df69f20f-ad54974be9c2600f-01f80ad8e3e76b8fe0205b58d9e59649.jpg //百度图片路径(这个应该是图片在网页上的路径,而不是图片路径):http://image.baidu.com/search/detail?ct=503316480&z=0&ipn=d&word=%E5%9B%BE%E7%89%87&hs=0&pn=1&spn=0&di=71162346090&pi=0&rn=1&tn=baiduimagedetail&ie=utf-8&oe=utf-8&cl=2&lm=-1&cs=4155302816%2C1201715785&os=159233822%2C272436753&simid=3235028088%2C3077875656&adpicid=0&ln=30&fr=ala&fm=&sme=&cg=&bdtype=0&oriquery=&objurl=http%3A%2F%2Fpic33.nipic.com%2F20130916%2F3420027_192919547000_2.jpg&fromurl=ippr_z2C%24qAzdH3FAzdH3Fooo_z%26e3Bgtrtv_z%26e3Bv54AzdH3Fzi7wgptAzdH3Fb80b88_8l_z%26e3Bip4s&gsm=0 // 4.从URI加载图片(这里用资源文件转换为URI)Uri uri = resourceIdToUri(getBaseContext(), R.drawable.ic_launcher);ImageView targetImageView4 = (ImageView) findViewById(R.id.imageview4);Picasso.with(getBaseContext()).load(uri).into(targetImageView4);}private static Uri resourceIdToUri(Context context, int resourceId) {return Uri.parse(ANDROID_RESOURCE + context.getPackageName()+ FOREWARD_SLASH + resourceId);}}2》
<LinearLayout 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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" android:orientation="vertical" > <ImageView android:id="@+id/imageview1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ImageView android:id="@+id/imageview2" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ImageView android:id="@+id/imageview3" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ImageView android:id="@+id/imageview4" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>3》权限一定要记得加
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>4》结果显示:
5》picasso-2.5.2.jar的下载路径:https://github.com/square/picasso
然后复制到工程的libs目录下。
二、四种来源途径下加载图片遇到的问题:
1.从Android Resources 中加载(即Android项目资源中):
加载很顺利没有遇到问题。
2.从本地文件中加载:
1》在小米手机上运行时会报Permisson denied (拒绝访问)的问题,加载不到图片;这问题还没有解决,不知到是不是小米系统对此做了限制的原因。
2》一定要记得加读或者写的权限,网络访问的权限对于此途径就没有必要添加了。
3》在公司自己做的安卓平台上,将图片zhc.png放在平台设备下的Pictures目录下(不放在此目录下访问不到);因为Environment.DIRECTORY_PICTURES决定了访问目录必须为Pictures目录 ,这样就可以加载到图片了。 关于Environment类的更多信息访问:http://blog.csdn.net/barnett_zhubo/article/details/6832832
4》在原生模拟器上没有找到Pictures目录,所以在此加载不到图片。
3.从网络上加载:
1》图片路径为一张百度网页上的图片时,手机浏览器在此路径下问找到图片,但是app demo中却找不到;报的错误open failed:EBUSY(Device or resource busy)设备或资源忙。(这个图片的路径应该有问题:这个应该是图片在网页上的路径,而不是图片路径)
但是换个路径在手机和模拟器上的app均能加载到图片。
4.从URI上加载图片:
没有遇到问题。
三,参考博文
http://blog.csdn.net/sinat_31841263/article/details/52776016
- Picasso使用示例(四种来源途径下加载图片,附demo)
- 使用Picasso加载图片
- 使用Picasso加载图片
- 使用Picasso加载图片
- 使用picasso加载图片
- Android图片加载框架Picasso最全使用教程 四
- Android图片加载框架Picasso使用教程 (四)
- 使用Picasso加载图片记录
- 图片加载之Picasso使用
- 图片加载利器之Picasso(四)源码解析
- android app -- Picasso 二级缓存加载图片,可控制加载图片大小(附小demo)
- 图片加载框架Picasso的使用
- 使用Picasso加载网页图片到RecyclerView
- Android中使用Picasso加载图片
- Picasso网络图片加载框架的使用
- 使用Picasso进行网络图片的加载
- 使用Picasso进行网络图片的加载
- Picasso网络图片加载框架的使用
- 【Bash百宝箱】认识git
- 大顶堆的C++模板实现及二叉堆的简介
- python textwrap模块
- 线性表的学习之路-2
- RedHat7下安装MySQL
- Picasso使用示例(四种来源途径下加载图片,附demo)
- 双线程排序的简单实现
- ParaView Usage
- 树和森林的遍历
- Oracle-view小结
- mjpg-streamer学习笔记9---自己写客户端
- 微信小程序入门教程及实例
- 月薪5000生活怎么过
- 求两个字符串a,b中的最长公共子串