• Android使用URL访问网络资源


        当我们的安卓应用需要用到的图片是网上的资源的时候可以通过使用URL打开流和图片资源的连接

    在xml文件中定义一个ImageView用于放图片

     1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2     android:layout_width="match_parent"
     3     android:layout_height="match_parent"
     4     android:orientation="vertical"
     5     >
     6 
     7     <ImageView
     8         android:id="@+id/show"
     9         android:layout_width="wrap_content"
    10         android:layout_height="wrap_content" />
    11 
    12 </LinearLayout>

    在Activity中访问网络资源,并且和自定义的输入流连接获取图片

     1 package com.contentprovide.liuliu.url_demo;
     2 
     3 import android.graphics.Bitmap;
     4 import android.graphics.BitmapFactory;
     5 import android.os.Handler;
     6 import android.os.Message;
     7 import android.support.v7.app.AppCompatActivity;
     8 import android.os.Bundle;
     9 import android.widget.Button;
    10 import android.widget.ImageView;
    11 
    12 import java.io.IOException;
    13 import java.io.InputStream;
    14 import java.net.MalformedURLException;
    15 import java.net.URL;
    16 
    17 public class MainActivity extends AppCompatActivity {
    18     ImageView show;
    19     Bitmap bitmap;//得到获取的图片
    20     Handler handler = new Handler(){
    21         @Override
    22         public void handleMessage(Message msg) {
    23             super.handleMessage(msg);
    24             show.setImageBitmap(bitmap);
    25         }
    26     };
    27 
    28     Thread thread = new Thread(){
    29         @Override
    30         public void run() {
    31             super.run();
    32             try {
    URL中放的是图片的地址,图片地址随便在网上找一张图片,右键图片就可以复制了,这里需要捕捉异常
    33 URL url = new URL("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1513089945188&di=12fd9cbe927799bda7d84d04acdd70f8&imgtype=0&src=http%3A%2F%2Fimage.tianjimedia.com%2FuploadImages%2F2015%2F131%2F42%2F1Q177R2I7739.jpg"); 34 35 InputStream inputStream = url.openStream(); 36 bitmap = BitmapFactory.decodeStream(inputStream); 37 handler.sendEmptyMessage(1);//主线程中是不能更新的,所以得发送消息到handler,到handleMessage方法中设置获取得到的图片 38           inputStrem.close; 39 } catch (MalformedURLException e) { 40 e.printStackTrace(); 41 } catch (IOException e) { 42 e.printStackTrace(); 43 } 44 } 45 }; 46 47 @Override 48 protected void onCreate(Bundle savedInstanceState) { 49 super.onCreate(savedInstanceState); 50 setContentView(R.layout.activity_main); 51 show = (ImageView) findViewById(R.id.show); 52 thread.start();//让线程开始执行 53 54 55 } 56 57 58 59 }

    使用网络资源时需要设置权限:

    打开AndroidMenifest.xml文件在

    <application></application>之外设置权限,添加
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
  • 相关阅读:
    用内联取代宏代码
    参数的缺省值
    令人迷惑的隐藏规则
    重载与覆盖
    重载是如何实现的?
    重载的起源
    C++函数的高级特性
    使用调试器逐步跟踪程序
    new/delete 的使用要点
    malloc/free 的使用要点
  • 原文地址:https://www.cnblogs.com/lyd447113735/p/8029606.html
Copyright © 2020-2023  润新知