Android学习八:获取网络图片

看到QQ群里有个朋友说加载图片内存溢出的问题,所以就按照自己的想法试试的。但是按照他的方法,不知道为何没有发生内存溢出,不知道什么情况。

写这篇文章主要有三个目的:

  1.多线程的学习

  2.图片加载的学习

  3.编程练手

好了,上代码

package org.tonny;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import android.R;
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.ImageView;

public class NetpictActivity extends Activity
{
    private Bitmap mBitmap = null;
    private ImageView mView = null;
    private Handler mHandler = null;

    //网上随便找的一个图片
    private final String mUri = "http://pic5.nipic.com/20100118/3822085_173909557153_2.jpg";

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        //这边的用R.id.layout方法出现了问题,所以只好用数值代替了
        setContentView(0x7f030000);

        mView = (ImageView)this.findViewById(0x7f050000);
        mHandler = new Handler()
        {
            @Override
            public void handleMessage(Message msg)
            {
                switch (msg.what)
                {
                case 1:
                    if (mView == null || mBitmap == null)
                    {
                        return;
                    }
                    mView.setImageBitmap(mBitmap);
                    break;
                }
            }
        };
    }

    public void onBtnShowClick(View v)
    {
        Thread thrad = new Thread()
        {
            @Override
            public void run()
            {
                try
                {
                    URL url = new URL(mUri);
                    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                    conn.setDoInput(true);
                    conn.connect();
                    InputStream inputStream = conn.getInputStream();

                    //mBitmap是一个全局变量,用于存储图片的数据
                    mBitmap = BitmapFactory.decodeStream(inputStream);
                    Message msg = mHandler.obtainMessage();
                    //注意这里只传输了类型
                    msg.what = 1;
                    mHandler.sendMessage(msg);
                    inputStream.close();
                }
                catch (MalformedURLException e)
                {
                    e.printStackTrace();
                }
                catch (IOException e)
                {
                    e.printStackTrace();
                }
            }
        };
        thrad.start();
    }
}

注意在清单文件里配置访问网络的权限

好了,继续学习

时间: 2025-01-02 17:08:00

Android学习八:获取网络图片的相关文章

Android学习之查看网络图片

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

Android 学习之获取网络文本文件

上次我们学习如何从网络上获取一张图片,今天我们学习如何从网络上获取文本文件,以XML文件为例子.因为XML文件在实际开发中最为常见. 我们以下面图片为例子学习如何从网络上获取XML文件 我们的xml文件为: <?xml version="1.0" encoding="UTF-8" ?> <newslist> <news> <title>9月起办理手机卡需实名认证</title> <detail>

android学习八(ListView的高级使用)

ListView在android开放中用的比较多,所以接下来就进行ListView的使用的讲解. 首先创建一个android项目,项目名为ListViewTest. ListView的简单使用 修改布局文件,修改后代码如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"

Android 学习笔记---获取RadioGroup的选定值

1,获取RadioGroup控件: RadioGroup radioGroup = (RadioGroup)findViewById(R.id.myRadioGroup); 2,获取RadioButton控件; RadioButton radioButton = (RadioButton)findViewById(radioGroup.getCheckedRadioButtonId()); 3,获取选中的radio的值: String text = radioButton.getText().t

android学习八(android碎片fragment的使用)

碎片(Fragment)是一种可以嵌入在活动当中的UI片段,它能让程序更加合理和充分地利用屏幕的空间.首先建立一个平板的模拟器1034*600,环境使用android4.2.2.在建立一个android的项目,项目名为FragmentTest. 碎片的简单使用 新建一个左侧碎片布局left_fragment.xml代码如下 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andr

android学习八 多用途碎片

碎片设计初衷:帮助开发人员管理应用程序功能. 特点:1.大量重用 2.可用性强 3.适应多种布局 碎片 1.包含一个视图层次结构和具有相应的生命周期 2.碎片必须在一个活动的上下文中工作 3.碎片的生命周期和活动很相似 4.但在状态的保存与恢复上与活动有区别 碎片的优点: a.在布局管理的时候可以直接作用于布局本身,而不必理会碎片内部 b.碎片的状态容易保存和恢复 c.可以将碎片添加到后退栈,实现在活动内按back键回退到上一个碎片 d.碎片的切换可以有多种特效 碎片的结构 a.碎片的基类继承自

Android学习笔记--获取传感器信息

原文链接:http://www.open-open.com/lib/view/open1423812538326.html android 4.4 (API等级19)支持以下传感器: (注意并不是所有的手机都支持全部的传感器) TYPE_ACCELEROMETER 加速度传感器,单位是m/s2,测量应用于设备X.Y.Z轴上的加速度 传感器类型值(Sensor Type):1 (0x00000001) TYPE_AMBIENT_TEMPERATURE 温度传感器,单位是℃ 传感器类型值(Senso

Android学习之获取系统应用信息列表的实现

前言: 好几天电脑打不开CSDN博客,也不知道怎么回事,今天下班回来突然能打开了,遂将周末实现的一个效果贴上. 实现功能: 获取手机应用图标,名称,时间(安装时间/更新时间),大小,侧滑删除应用,点击应用图标分享等功能. 目标效果: 思路:RecylerView+swipereveallayout 贴上dependencies 介绍:Glide实现图片加载,EventBus通信,swipereveallayout实现侧滑. 获取数据源: private ArrayList<AppInfoMode

Android学习笔记-获取手机内存,SD卡存储空间。

前面介绍到如何保存数据到手机内存或者SD卡,但是问题是,在保存以前,我们还需要对他们的空间(可用空间),进行判断,才可以进行后续操作,所以,本节我们就介绍如何获取手机内存以及Sd卡的空间. //这时获取手机内存的 // File path = Environment.getDataDirectory(); //这时获取SD卡的空间 File path = Environment.getExternalStorageDirectory(); StatFs stat = new StatFs(pat