查看网络图片

界面中有三个控件,一个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,运行程序!

时间: 2024-10-05 04:40:43

查看网络图片的相关文章

Android查看网络图片例子

1.布局文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:orientation="vertical" android:layout_hei

Android学习之查看网络图片

在这里小编学习了查看网络图片的小案例,: 初始界面: 点击浏览后,效果如下: 需要注意的是 该案例需要获取联网权限,即: <uses-permission android:name="android.permission.INTERNET"/> 具体步骤如下: 1.定义并初始化控件: private EditText etImageUrl; private ImageView ivImage; /**控件初始化*/ private void init() { ivImage

Android之使用HttpURLConnection类查看网络图片以及网络源码

1.首先,来介绍一下HttpURLConnection类,HttpURLConnection类位于java.net包中,用于发送HTTP请求和获取HTTP响应.由于此类是抽象类,不能直接实例化对象,所以需要使用URL的openConnection()方法来获得. 例如,要创建一个http://www.baidu.com 网站对应的HttpURLConnection对象,可以使用下列代码: URL url=new URL("http://www.baidu.com"); HttpURLC

如何制作能查看网络图片的简单应用

以下是效果图: activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent

查看网络图片功能的应用程序

一:当在EditText中输入地址后,点击浏览按钮,会在EditText上面空白地方显示该地址对应的一张图片. activity_main布局代码: 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="matc

采用发消息的形式查看网络图片

1.视图 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 andr

android---利用android-async-http开源项目实现网络图片查看器

1.   导包:导入android-async-http开源项目的最新版本的包 2.简单的搭建一个网络图片查看器的界面 相关的界面搭建代码: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent

从零封装一个Android大图查看器

背景: 大图查看器是许多app的常用功能,主要使用场景是用户点击图片,然后启动一个新界面来展示图片的完整尺寸,并能通过手势移动图片以及放大缩小.当然,上面说的是最基本的功能,实际使用中还要包括:如果是本地图片应该可以移除,如果是网络图片,应提供一个保存到本地的功能等. 本文为什么叫封装一个大图查看器,而不是叫做编写一个大图查看器呢?因为大图查看器的最核心功能,展示图片以及手势操控我们使用了一个开源库来完成,这个开源库叫做subsampling-scale-image-view,这个开源库非常靠谱

Android关于listview中显示网络图片的问题

在listview中第二次下载图片时就会出现 SkAndroidCodec::NewFromStream returned null 可能是图片大了点,它第一次还没下载完就第二次开始调用了 所以我采取的措施就是:既然每次下载图片都是在子线程中执行的,于是我在外面(循环里面)等待子线程调用完毕后再进行下一张图片的下载 以下是我 部分中的 完整代码 List<Map<String, Object>> data = new ArrayList<Map<String, Obje