Android 网络图片查看显示的实现方法

效果图如下:

界面中有三个控件,一个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();

}

}

此程序还要不得当的地方,需加以修改

时间: 2024-11-02 23:29:25

Android 网络图片查看显示的实现方法的相关文章

Android Fragment隐藏显示调用的方法

//在Activity中加载显示隐藏Fragment import android.app.Activity; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.content.Intent; import android.os.Bundle; import com.commons.Config; import com.geluyawangluo.withtheni

[android] 网络图片查看器

界面布局LinerLayout线性布局,ImageView控件,EditText控件 hint属性提示信息,Button控件. Android:layout_weight=””属性,权重,只有控件的宽度和高度为0的时候才代表权重,否则它代表渲染的优先级,值越大优先级越低,默认是0,先渲染其他控件 singleLine属性 单行 业务逻辑,获取EditText的值放到ImageView里,实质上是http的get请求 获取EditText对象,通过findViewById() 获取值,通过调用Ed

android网络图片查看器

package com.itheima.netimageviewer; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; imp

android 网络_网络图片查看器

xml <?xml version="1.0"?> -<LinearLayout tools:context=".MainActivity" android:paddingTop="@dimen/activity_vertical_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingLeft="

【黑马Android】(05)短信/查询和添加/内容观察者使用/子线程网络图片查看器和Handler消息处理器/html查看器/使用HttpURLConnection采用Post方式请求数据/开源项目

备份短信和添加短信 操作系统短信的uri: content://sms/ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.itheima28.backupsms" android:versionCode="1

学习Android之SimpleAdapter显示网络图片

效果图: 此程序主要的知识点是:SimpleAdapter本身是不支持网络图片的, 如果在Map.put(a,b)中 b为一个Bitmap,程序不会报红色字体,而是在控制台输出绿色的字体,如下 05-10 15:46:45.474: I/System.out(846): resolveUri failed on bad bitmap uri: [email protected] 要想实现显示网络图片其实很简单,使用SimpleAdapter中的方法simpleAdapter.setViewBin

无废话Android之内容观察者ContentObserver、获取和保存系统的联系人信息、网络图片查看器、网络html查看器、使用异步框架Android-Async-Http(4)

1.内容观察者ContentObserver 如果ContentProvider的访问者需要知道ContentProvider中的数据发生了变化,可以在ContentProvider 发生数据变化时调用getContentResolver().notifyChange(uri, null)来通知注册在此URI上的访问者,例子如下: private static final Uri URI = Uri.parse("content://person.db"); public class

Android adb shell 显示不正常的解决方法

在学习安卓过程中,准备使用串口,由于权限上,一直获取不到开发板的root权限. 无奈之下,发现windows下cmd中使用 adb shell,进入开发板的shell模式能正常执行chmod 777 tty* 在开发板中(x210 A8内核),安装了超级控制终端都无权执行chmod 777 tty*,真不明白为何windows的adb shell就能执行. 但使用 adb shell带来一些问题 使用过程中,发现ls语句执行后,显示乱码.如图: 网上更种说法都有. 有的说使用 chcp 6500

Android SDK无法显示更新列表解决方法

解决办法: 第一步: 打开Windows中C:\WINDOWS\system32\drivers\etc\hosts,然后添加以下内容: 203.208.46.146 dl.google.com 203.208.46.146 dl-ssl.google.com 74.125.113.121 developer.android.com 第二步: 打开Android SDK Manager,选上方的菜单Tools,进入Options,在"Force https://- "前面打钩,就可以更