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>