Android访问网络系列之--访问图片
今天閑著無(wú)聊,順便做了個(gè)android 訪問(wèn)網(wǎng)絡(luò)圖片的demo,希望與大家分享下:
下面是主要代碼:
1.main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/imagepath" /><EditTextandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="http://10.191.92.7:8080/web/xiaoxiao.jpg"android:id="@+id/imagepath"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/button"android:id="@+id/button"/><ImageView android:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/imageView"/></LinearLayout>?這里的定義很簡(jiǎn)單:相信大家都可以看懂。
2.MainActivity.java
package ygc.yxb.image;import ygc.yxb.service.ImageService; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.Toast;public class MainActivity extends Activity {private EditText pathText;private ImageView imageView;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);//獲得圖片路徑pathText=(EditText) this.findViewById(R.id.imagepath);//獲得要顯示的imageViewimageView=(ImageView) this.findViewById(R.id.imageView);//獲得button按鈕 Button button=(Button) this.findViewById(R.id.button);//注冊(cè)button按鈕的點(diǎn)擊事件button.setOnClickListener(new ButtonClickListener());}private final class ButtonClickListener implements View.OnClickListener{@Overridepublic void onClick(View v) {String path=pathText.getText().toString();try {//業(yè)務(wù)邏輯層:ImageService類的getImage方法用以獲取網(wǎng)絡(luò)圖片byte[] data = ImageService.getImage(path);//用字節(jié)數(shù)組所有信息生成位圖對(duì)象Bitmap bitmap =BitmapFactory.decodeByteArray(data, 0, data.length);imageView.setImageBitmap(bitmap);//顯示圖片} catch (Exception e) {e.printStackTrace();Toast.makeText(getApplicationContext(), R.string.error, 1).show();}}} }3.ImageService.java
package ygc.yxb.service;import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL;import ygc.yxb.utils.StreamTool;public class ImageService {/*** 獲取網(wǎng)絡(luò)圖片的數(shù)據(jù)* @param path 網(wǎng)絡(luò)圖片路徑* @return*/public static byte[] getImage(String path) throws Exception {URL url = new URL(path);HttpURLConnection conn=(HttpURLConnection)url.openConnection(); //基于HTTP協(xié)議的連接對(duì)象conn.setConnectTimeout(5000);//5秒conn.setRequestMethod("GET");//請(qǐng)求方式//判斷請(qǐng)求是否成功if(conn.getResponseCode()==200){//定義輸入流InputStream inStream = conn.getInputStream();return StreamTool.read(inStream);}return null;}}4.StreamTool.java 輸入流工具類。
package ygc.yxb.utils;import java.io.ByteArrayOutputStream; import java.io.InputStream;public class StreamTool {/*** 讀取流中的數(shù)據(jù)* @param inStream* @return* @throws Exception*/public static byte[] read(InputStream inStream) throws Exception {ByteArrayOutputStream outputStream = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int len = 0;//如果字節(jié)流中的數(shù)據(jù)不等于-1,就說(shuō)明一直有,然后循環(huán)讀出while( (len=inStream.read(buffer)) !=-1){//將讀出的數(shù)據(jù)放入內(nèi)存中 outputStream.write(buffer);}inStream.close();return outputStream.toByteArray();}}5.AndroidManifest.xml 在清單文件配置訪問(wèn)網(wǎng)絡(luò)的權(quán)限。
?<!-- 訪問(wèn)internet權(quán)限 -->
?? <uses-permission android:name="android.permission.INTERNET"/>
?
通過(guò)以上代碼,Android訪問(wèn)網(wǎng)絡(luò)圖片的例子就做完了。
另:這里的訪問(wèn)網(wǎng)絡(luò)很簡(jiǎn)單:就是創(chuàng)建一個(gè)web項(xiàng)目,然后在webroot下面放入一張圖片,然后將項(xiàng)目布置到web容器中,然后訪問(wèn)地址我這里是:http://localhost:8080/web/xiaoxiao.jpg,但Android 訪問(wèn)時(shí),不能直接用localhost,而解決的方法是,用本機(jī)的局域網(wǎng)地址進(jìn)行訪問(wèn),最后我的地址是這樣的:
http://10.191.92.7:8080/web/xiaoxiao.jpg
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/xiaobing-yang/archive/2012/08/07/2626441.html
總結(jié)
以上是生活随笔為你收集整理的Android访问网络系列之--访问图片的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Android 关于长按back键退出应
- 下一篇: AndroidのActivity之退出返