从网上加载图片然后展示在屏幕上

package org.xml.demo.html;

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import ogg.huanxin.huadong.R;
import android.annotation.SuppressLint;
import android.app.Activity;
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.ImageView;
import android.widget.Toast;

public class MainHtml extends Activity {
    private ImageView imageView;
    private Button button;
    // 此方法在主线程中调用,可以用来刷新ui
    @SuppressLint("HandlerLeak")
    Handler handler = new Handler() {
        public void handleMessage(android.os.Message msg) {
            // 处理消息时,需要知道到底是成功消息还是失败消息
            switch (msg.what) {
            case 1:
                // 把位图对象显示至imageview中
                imageView.setImageBitmap((Bitmap) msg.obj);
                break;
            case 0:
                Toast.makeText(MainHtml.this, "请求失败", Toast.LENGTH_SHORT)
                        .show();
                break;
            default:
                break;
            }
        };
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        super.setContentView(R.layout.mainhtml);
        button = (Button) findViewById(R.id.bb_html_click);
        imageView = (ImageView) findViewById(R.id.iv_html_image);
        button.setOnClickListener(new MyOnclick());
    }

    private class MyOnclick implements View.OnClickListener {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            Thread t = new Thread() {

                @Override
                public void run() {
                    // TODO Auto-generated method stub
                    // 1 确认网址
                    String path = "http://192.168.56.1:8080/a.jpg";
                    try {
                        // 2 把网址封装成一个url对象
                        URL url = new URL(path);
                        // 3 获取客户端和服务器的连接对象,此时还没有建立连接
                        HttpURLConnection conn = (HttpURLConnection) url
                                .openConnection();
                        // 4 对连接对象进行初始化
                        // 设置请求方式 注意大写
                        conn.setRequestMethod("GET");
                        // 设置连接超时
                        conn.setConnectTimeout(5000);
                        // 设置读取超时
                        conn.setReadTimeout(5000);
                        // 5 发送请求 , 与服务器建立连接
                        conn.connect();
                        // 如果反应码为200, 则说明请求成功
                        if (conn.getResponseCode() == 200) {
                            // 获取服务器响应头中的流,流里的数据就是客户端请求的数据
                            InputStream is = conn.getInputStream();
                            // 读出流中的数据,并构造成位图对象
                            Bitmap bm = BitmapFactory.decodeStream(is);
                            // 把位图对象显示至imageview

                            Message msg = handler.obtainMessage();
                            // 消息对象携带数据
                            msg.obj = bm;
                            msg.what = 1;
                            // 把消息发送至主线程的消息队列
                            handler.sendMessage(msg);
                        } else {
                            Message msg = handler.obtainMessage();
                            msg.what = 0;
                            handler.sendMessage(msg);
                        }
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }

            };
            t.start();
        }

    }
}
时间: 2024-11-08 02:19:17

从网上加载图片然后展示在屏幕上的相关文章

AFNetworking网上加载数据及JSON解析

引用第三方库AFNetworking #import "AFNetworking.h" #import "UIKit+AFNetworking.h" - (void)downloadData { NSString *urlString = [NSString stringWithFormat:LIMIT_URL,_page,_categoryId]; AFHTTPRequestOperationManager *manager = [AFHTTPRequestOpe

高效地加载图片(五) 将图片展示在UI中

这篇文章将前几篇使用的方法进行了整合,让我们能够在后台线程中加载以及缓存图片并在ViewPager和GridView中展示出来,并在这些过程中处理并发以及参数的设置. 将图片加载到ViewPager中 使用滑动视图来对图片详情进行导航是一种不错的方式.我们可以使用ViewPager和PagerAdapter来实现.但是,使用FragmentStatePagerAdapter可能会更好,它能够自动地保存ViewPager中Fragment的状态并控制它的创建和销毁,能够有效地利用内存. 注意:如果

用javascript预加载图片、css、js的方法研究

预加载的好处可以让网页更快的呈现给用户,缺点就是可能会增加无用的请求(但图片.css.js这些静态文件可以被缓存),如果用户访问的页面里面的css.js.图片被预加载了,用户打开页面的速度会快很多,提升用户体验.在用到一些大图片展示的时候,预加载大图是很不错的方法,图片更快的被呈现给用户.不多说了,作为一个前端攻城师都懂的,下面分享我做的测试和得到的结果. 先说需要知道的服务器返回的status code:status-code: 200 - 客户端请求成功status-code: 304 -

android 加载图片oom若干方案小结

本文根据网上提供的一些技术方案加上自己实际开发中遇到的情况小结. 众所周知,每个Android应用程序在运行时都有一定的内存限制,限制大小一般为16MB或24MB(视手机而定).一般我们可以通过获取当前线程的可运行内存来判断,比如系统分给当前运行内存只有16M,而你的图片就有16M,这肯定会oom的. 相关知识介绍 1.颜色模型 常见的颜色模型有RGB.YUV.CMYK等,在大多数图像API中采用的都是RGB模型,Android也是如此:另外,在Android中还有包含透明度Alpha的颜色模型

RecyclerView使用 及 滑动时加载图片优化方案

RecyclerView使用 及 滑动时加载图片优化方案 简述 本篇博文主要给大家分享关于RecyclerView控件的使用及通过继承RecyclerView来实现滑动时加载图片的优化方案,也同样能解决防止图片乱序的问题,之前有在网上有看到大神对Android中ListView异步加载图片乱序问题进行过分析,并深入剖析原理后分别给出了3种对应的解决方案:一 .使用findViewWithTag.二.使用弱引用关联.三.使用Volley框架提供的NetworkImageView. 看了之后思索了很

Android ListView异步加载图片乱序问题,原因分析及解决方案

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/45586553 在Android所有系统自带的控件当中,ListView这个控件算是用法比较复杂的了,关键是用法复杂也就算了,它还经常会出现一些稀奇古怪的问题,让人非常头疼.比如说在ListView中加载图片,如果是同步加载图片倒还好,但是一旦使用异步加载图片那么问题就来了,这个问题我相信很多Android开发者都曾经遇到过,就是异步加载图片会出现错位乱序的情况.遇到这个问题时,不

Android开发解决加载图片OOM问题(非常全面 兼顾4.0以下系统)(by 星空武哥)

转载请标明:http://blog.csdn.net/lsyz0021/article/details/51295402 我们项目中经常会加载图片,有时候如果加载图片过多的话,小则导致程序很卡,重则OOM导致App挂了,今天翻译https://developer.Android.com/training/displaying-bitmaps/index.html,学习Google高效加载大图片的方法. 图片有各种形状和大小,但在大多数情况下,这些图片都会大于我们程序所需要的大小.比如说系统图片库

Android之ListView异步加载图片且仅显示可见子项中的图片

折腾了好多天,遇到 N 多让人崩溃无语的问题,不过今天终于有些收获了,这是实验的第一版,有些混乱,下一步进行改造细分,先把代码记录在这儿吧. 网上查了很多资料,发现都千篇一律,抄来抄去,很多细节和完整实例都没看到,只有自己一点点研究了,总体感觉 android 下面要显示个图片真不容易啊. 项目主要实现的功能: 异步加载图片图片内存缓存.异步磁盘文件缓存解决使用 viewHolder 后出现的图片错位问题优化列表滚动性能,仅显示可见子项中的图片无需固定图片显示高度,对高度进行缓存使列表滚动时不会

C# C1TrueDBGrid控件如何加载图片列

表格中加载图片是很常见的功能,尤其是网页中,图片的展示更是随处可见.这个功能在bs中很容易就实现了: 前台代码: <asp:GridView ID="GridView1" runat="server"> <Columns> <asp:TemplateField> <ItemTemplate> <asp:Image ID="img1" ImageUrl='<%#Eval("img