Android入门之网络图片查看器

来源:互联网 发布:网络推手阿建电话 编辑:程序博客网 时间:2024/05/01 19:09

效果图:


main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    ><TextView      android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:text="@string/imagepath"    />        <EditText    android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:text="http://jinkaixqj.azurewebsites.net/me.jpg"    android:id="@+id/imagepath"    />        <Button    android: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>

manifest.xml里添加语句

  <uses-permission android:name="android.permission.INTERNET" />

string.xml

<?xml version="1.0" encoding="utf-8"?><resources>    <string name="hello">Hello World, MainActivity!</string>    <string name="app_name">网络图片查看器</string>    <string name="imagepath">网络图片路径</string>    <string name="button">查看</string>     <string name="error">获取图片失败</string></resources>

MainActivity.java

import cn.itcast.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;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);pathText = (EditText) this.findViewById(R.id.imagepath);imageView = (ImageView) this.findViewById(R.id.imageView);Button button = (Button) this.findViewById(R.id.button);button.setOnClickListener(new ButtonClickListener());}private final class ButtonClickListener implements View.OnClickListener {public void onClick(View v) {String path = pathText.getText().toString();try {byte[] data = ImageService.getImage(path);Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);imageView.setImageBitmap(bitmap);     // 显示图片} catch (Exception e) {e.printStackTrace();Toast.makeText(getApplicationContext(), R.string.error, 1).show();}}}}

ImageService.java

import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import cn.itcast.utils.StreamTool;public class ImageService {/** * 获取网络图片的数据 * @param path 网络图片路径 * @return */public static byte[] getImage(String path) throws Exception{URL url = new URL(path);HttpURLConnection conn = (HttpURLConnection) url.openConnection();//基于HTTP协议连接对象conn.setConnectTimeout(5000);conn.setRequestMethod("GET");if(conn.getResponseCode() == 200){InputStream inStream = conn.getInputStream();return StreamTool.read(inStream);}return null;}}

StreamTool.java

import java.io.ByteArrayOutputStream;import java.io.InputStream;public class StreamTool {/** * 读取流中的数据 * @param inStream * @return * @throws Exception */public static byte[] read(InputStream inStream) throws Exception{ByteArrayOutputStream outStream = new ByteArrayOutputStream();byte[] buffer = new byte[1024];int len = 0;while( (len = inStream.read(buffer)) != -1){outStream.write(buffer, 0, len);}inStream.close();return outStream.toByteArray();}}


原创粉丝点击