可以先启动一个tomcat服务器,在网络上放一张图片
布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/path"/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/imagepath"
android:text="@string/realpath"
android:inputType="text"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button"
android:text="@string/button"
/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/image"
android:contentDescription="@string/description"
/>
</LinearLayout>
mainactivitypackage cn.wonders.image;
import cn.wonders.service.ImageService;
import android.support.v7.app.ActionBarActivity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity {
private EditText et;
private ImageView ev;
private Bitmap bitmap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_main);
// final EditText et = (EditText) this.findViewById(R.id.imagepath);
et = (EditText) this.findViewById(R.id.imagepath);
Button button = (Button) this.findViewById(R.id.button);
// final ImageView ev = (ImageView) this.findViewById(R.id.image);
ev = (ImageView) this.findViewById(R.id.image);
button.setOnClickListener(new ButtonClickListener());
// button.setOnClickListener(new View.OnClickListener() {
//
// @Override
// public void onClick(View v) {
// // 使用匿名内部类,隐式调用外部变量,外部变量需要final修饰。
// String path = et.getText().toString();
// byte[] data;
// try {
// data = ImageService.getImage(path);
// Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
// ev.setImageBitmap(bitmap);
// } catch (Exception e) {
// e.printStackTrace();
// Toast.makeText(getApplicationContext(), R.string.error, Toast.LENGTH_LONG).show();
// }
// //生成位图对象
// //显示图片
// }
// });
// if (savedInstanceState == null) {
// getSupportFragmentManager().beginTransaction()
// .add(R.id.container, new PlaceholderFragment()).commit();
// }
}
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
ev.setImageBitmap(bitmap);
}
};
private final class ButtonClickListener implements View.OnClickListener{
public void onClick(View v) {
// String path = et.getText().toString();
try{
new Thread(){
@Override
public void run(){
//你要执行的方法
//执行完毕后给handler发送一个空消息
try{
String path = et.getText().toString();
byte[] data = ImageService.getImage(path);
bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
handler.sendEmptyMessage(0);
}catch (Exception e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), R.string.error, Toast.LENGTH_LONG).show();
}
}
}.start();
// byte[] data = ImageService.getImage(path);
// Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
// ev.setImageBitmap(bitmap);//显示图片
}catch (Exception e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), R.string.error, Toast.LENGTH_LONG).show();
}
}
}
}
工具类
package cn.wonders.utils;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
public class StreamTool {
public static byte[] read(InputStream input) throws Exception {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while((len=input.read(buffer))!=-1) {
baos.write(buffer, 0, len);
}
input.close();
return baos.toByteArray();
}
}