zoukankan      html  css  js  c++  java
  • 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();
        }
    }

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

    好了,继续学习

  • 相关阅读:
    datatable转mode方法
    UVA10652 Board Wrapping (二维凸包+多边形面积)
    洛谷P3175 [HAOI2015]按位或 (min-max容斥 + 高维前缀和)
    icpc2020沈阳 M (fwt+高维前缀和)
    icpc2019 香港 H. Hold the Line (离线+线段树+单调队列)
    icpc2019 香港 C. Constructing Ranches (点分治)
    点分治模板
    slope trick 待填
    codeforces 713 C. Sonya and Problem Wihtout a Legend (dp(n^2)/slope trick (nlogn))
    icpc2020澳门 I. Nim Cheater (轻重链剖分优化dp空间复杂度)
  • 原文地址:https://www.cnblogs.com/supertonny/p/4461862.html
Copyright © 2011-2022 走看看