Android 网络图片查看显示的实现方法_安卓软件开发教程-查字典教程网
Android 网络图片查看显示的实现方法
Android 网络图片查看显示的实现方法
发布时间:2016-12-28 来源:查字典编辑
摘要:我们的应用或多或少都会从网络获取图片数据然后进行显示,下面就将实现一个这样的例子,获取网络中的图片!首先:我们来看一下效果图界面中有三个控件...

我们的应用或多或少都会从网络获取图片数据然后进行显示,下面就将实现一个这样的例子,获取网络中的图片!

首先:我们来看一下效果图

界面中有三个控件,一个EditText,一个Button,一个ImageView

1、下面是具体布局文件

<EditText

android:id="@+id/picturepagh"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/hello_world" />

<Button

android:id="@+id/btn"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="查看" />

<ImageButton

android:id="@+id/imageView"

android:layout_width="fill_parent"

android:layout_height="200px" />

2、在MainActivity中进行图片图示代码编写

public class MainActivity extends Activity {

private Button btn;

private EditText path;

private ImageView imgview;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

btn = (Button) findViewById(R.id.btn);

path = (EditText) findViewById(R.id.picturepagh);

imgview = (ImageView) findViewById(R.id.imageView);

btn.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

Log.i("CLICK", ((Button) v).getText().toString());

new Thread(runa).start();

}

});

}

public void setView() {

String picturepath = path.getText().toString();

byte[] data = null;

try {

data = ImageService.getImage(picturepath);

Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);// BitmapFactory:图片工厂!

Looper.prepare();// 必须调用此方法,要不然会报错

Message msg = new Message();

msg.what = 0;

msg.obj = bitmap;

handler.sendMessage(msg);

} catch (Exception e) {

Toast.makeText(getApplicationContext(), "获取图片错误", 1).show();

}

}

private Handler handler = new Handler() {

@Override

public void handleMessage(Message msg) {

if (msg.what == 0) {

updateImageView((Bitmap) msg.obj);

}

}

};

private Runnable runa = new Runnable() {

@Override

public void run() {

setView();

}

};

private void updateImageView(Bitmap bm) {

imgview.setImageBitmap(bm);

}

}

3、添加一个ImageService图片服务类,里面包含一个获取网络数据的方法;

public class ImageService {

// 获取网络图片的数据

public static byte[] getImage(String picturepath) throws Exception {

URL url = new URL(picturepath);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();// 基于http协议的连接对象

conn.setConnectTimeout(10);// 10秒;

conn.setRequestMethod("GET");// 大写

if (conn.getResponseCode() == 200) {

InputStream ins = conn.getInputStream();

return StreamTool.read(ins);

}

return null;

}

}

4、添加一个流处理工作类StreamTool

public class StreamTool {

public static byte[] read(InputStream ins) throws Exception {

ByteArrayOutputStream outstream = new ByteArrayOutputStream();

byte[] buffer = new byte[1024];

int length = 0;

while ((length = ins.read(buffer)) > -1) {

outstream.write(buffer, 0, length);

}

outstream.close();

return outstream.toByteArray();

}

}

5、大功告成?NO,还要添加网络访问权限: <uses-permission android:name="android.permission.INTERNET" />

OK,运行程序!

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新安卓软件开发学习
    热门安卓软件开发学习
    编程开发子分类