在android项目研发中,相信很多小伙伴都会遇到app上需要加载图片的时候,很多初学的小伙伴对此会感到比较头疼,这里我就详细滴讲一下关于android中加载图片的方法。
无论是加载自己图片,还是网络上的图片,最大的区别在于获取图片的链接。。。
一,首先做一个web端的服务,将图片发布在Jboss或者Tomcat中,通过链接可以获取到图片。
这里做一个动态获取图片的案例,将其他地址的图片,获取后保存到Jboss项目目录下面:
//代码片段,从文件夹里获取一张图片存储到jboss项目路径中
byte[] buffer=readImgData(pathStr);
File imgfile=new File("F:\\jboss\\server\\default\\deploy\\MyFirstWebServices.war\\temp.jpg");
//判断文件是否存在
if(!imgfile.exists()){
imgfile.delete();
}
FileOutputStream output=new FileOutputStream(imgfile);
output.write(buffer);
output.flush();
output.close();
//从一个图片路径中获取图片
public byte[] readImgData(String filepath){
try{
File file = new File(filepath);
FileInputStream input = new FileInputStream(file);
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte[] buffer=new byte[1024];
int len = 0;
while ((len = input.read(buffer))!=-1) {
output.write(buffer, 0, len);
}
input.close();
return output.toByteArray();
}catch(Exception e){
e.printStackTrace();
}
return null;
}
项目部署好后发布项目即可访问到图片信息如下:
http://localhost:8080/MyFirstWebServices/temp.jpg;
二,android中显示图片的代码。
1.imgshow.xml中的代码片段,放一个imageview即可
<ImageView
android:id="@+id/sat_show_image"
android:layout_width="400dp"
android:layout_height="200dp"
android:layout_gravity="center"
android:scaleType="fitXY"
android:layout_centerVertical="true"
android:layout_span="2"
/>
2.imgshow.java代码片段
private ImageView satimg;
String imageUrl="http://localhost:8080/MyFirstWebServices/temp.jpg";
private Handler handler = new Handler(){
public void handleMessage(Message msg) {
switch (msg.what) {
case 0:
Bitmap bit = (Bitmap) msg.obj;
satimg.setImageBitmap(bit);
satimg.setScaleType(ImageView.ScaleType.FIT_XY);
break;
default:
break;
}
};
};
@Override
protected void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.imgshow);
satimg = (ImageView)findViewById(R.id.sat_show_image);
record_img.setOnClickListener( new OnClickListener()
{
@Override
public void onClick(View arg0)
{
// TODO Auto-generated method stub
//新建线程加载图片信息,发送到消息队列中
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Bitmap bmp = getURLimage(imageUrl);
Message msg = new Message();
msg.what = 0;
msg.obj = bmp;
System.out.println("000");
handler.sendMessage(msg);
}
}).start();
}
});
}
//加载图片
public Bitmap getURLimage(String url) {
Bitmap bmp = null;
try {
URL myurl = new URL(url);
// 获得连接
HttpURLConnection conn = (HttpURLConnection) myurl.openConnection();
conn.setConnectTimeout(6000);//设置超时
conn.setDoInput(true);
conn.setUseCaches(false);//不缓存
conn.connect();
InputStream is = conn.getInputStream();//获得图片的数据流
bmp = BitmapFactory.decodeStream(is);
is.close();
} catch (Exception e) {
e.printStackTrace();
}
return bmp;
}
完成以上步骤,即可在app中显示图片。