Android获取网络图片并显示的方法

本文实例为大家分享了Android获取网络图片并显示的具体代码,供大家参考,具体内容如下

使用 HttpURLConnection 获得连接,再使用 InputStream 获得图片的数据流,通过 BitmapFactory 将数据流转换为 Bitmap,再将 Bitmap 通过线程的 Message 发送出去,Handler 接收到消息就会通知 ImageView 显示出来。

记得要在manifest文件中添加 < uses-permission android:name=”android.permission.INTERNET” />上网权限,不然无法显示图片。

工程文件结构:

布局文件中就一个 ImageView 用来显示图片,一个 Button 用来获取图片。

MainActivity.java

public class MainActivity extends AppCompatActivity {
  Button button;
  ImageView imageView;
  String url = "http://i4.buimg.com/dccba6282641a9e0.jpg";
  //String textURL = "http://192.168.1.104:8080/add.jsp";

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    button = (Button) findViewById(R.id.button);
    imageView = (ImageView) findViewById(R.id.imageView);

    button.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        new Thread(new Runnable() {
          @Override
          public void run() {
            Bitmap bmp = getURLimage(url);
            Message msg = new Message();
            msg.what = 0;
            msg.obj = bmp;
            System.out.println("000");
            handle.sendMessage(msg);
          }
        }).start();
      }
    });
  }

  //在消息队列中实现对控件的更改
  private Handler handle = new Handler() {
    public void handleMessage(Message msg) {
      switch (msg.what) {
        case 0:
          System.out.println("111");
          Bitmap bmp=(Bitmap)msg.obj;
          imageView.setImageBitmap(bmp);
          break;
      }
    };
  };

  //加载图片
  public Bitmap getURLimage(String url) {
    Bitmap bmp = null;
    try {
      URL myurl = new URL(url);
      // 获得连接
      HttpURLConnection conn = (HttpURLConnection) myurl.openConnection();
      conn.setConnectTimeout(6000);//设置超时
      conn.setDoInput(true);
      conn.setUseCaches(false);//不缓存
      conn.connect();
      InputStream is = conn.getInputStream();//获得图片的数据流
      bmp = BitmapFactory.decodeStream(is);//读取图像数据
      //读取文本数据
      //byte[] buffer = new byte[100];
      //inputStream.read(buffer);
      //text = new String(buffer);
      is.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
    return bmp;
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android从服务器获取图片的实例方法

    [java] 复制代码 代码如下: public static Bitmap getBitmapFromServer(String imagePath) { HttpGet get = new HttpGet(imagePath);     HttpClient client = new DefaultHttpClient();     Bitmap pic = null;     try {         HttpResponse response = client.execute(get)

  • Android 异步获取网络图片并处理导致内存溢出问题解决方法

    测试环境为Adnroid 2.1以上. 1.AndroidManifest.xml 权限配置: 添加互联网访问权限: 复制代码 代码如下: <uses-permission android:name="android.permission.INTERNET" /> 2.异步图片类 ImageDownloadTask 复制代码 代码如下: import java.io.ByteArrayOutputStream; import java.io.IOException; imp

  • android获取相册图片和路径的实现方法

    Android开发获取相册图片的方式网上有很多种,这里说一个Android4.4后的方法,因为版本越高,一些老的api就会被弃用,新的api和老的api不兼容,导致出现很多问题. 比如:managedQuery()现在已经被getContentResolver().query()替代了,不过它们的参数都是一样的 再比如Android4.4后Intent(Intent.ACTION_GET_CONTENT);和Intent(Intent.ACTION_OPEN_DOCUMENT);两个方法所得到的

  • android利用消息机制获取网络图片

    在前面都写到用AsyncTask来获取网络中的图片.其实利用消息机制也能获取网络中的图片,而且本人感觉用消息机制还是挺简单的. 消息机制的图解: 下面就用看代码来理解上面的图片. 布局:activity_main.xml <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" an

  • android 获取视频,图片缩略图的具体实现

    1.获取视频缩略图有两个方法(1)通过内容提供器来获取(2)人为创建缩略图 (1)缺点就是必须更新媒体库才能看到最新的视频的缩略图 [java] 复制代码 代码如下: /**      * @param context      * @param cr     * @param Videopath     * @return      */     public static Bitmap getVideoThumbnail(Context context, ContentResolver cr

  • Android使用线程获取网络图片的方法

    本文为大家分享了Android使用线程获取网络图片的具体代码,供大家参考,具体内容如下 AndroidManifest.xml    <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.zdcrobot.handlermessage

  • Android实现从网络获取图片显示并保存到SD卡的方法

    本文实例讲述了Android实现从网络获取图片显示并保存到SD卡的方法.分享给大家供大家参考,具体如下: 问题: 如何不断获取图片并显示出来,达到视频的效果? 代码: public class GetPictureFromInternetActivity extends Activity { private ImageView imageView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInst

  • Android获取网络图片并显示的方法

    本文实例为大家分享了Android获取网络图片并显示的具体代码,供大家参考,具体内容如下 使用 HttpURLConnection 获得连接,再使用 InputStream 获得图片的数据流,通过 BitmapFactory 将数据流转换为 Bitmap,再将 Bitmap 通过线程的 Message 发送出去,Handler 接收到消息就会通知 ImageView 显示出来. 记得要在manifest文件中添加 < uses-permission android:name="androi

  • Android判断NavigationBar是否显示的方法(获取屏幕真实的高度)

    有些时候,我们需要知道当前手机上是否显示了NavigationBar,也就是屏幕底部的虚拟按键. 比如截屏的时候,要获取屏幕的高度,必须包括NavigationBar的高度. 试过网上的多种方法,但是对那种可以通过手势来显示/隐藏的NavigationBar没办法,最后终于找到了一个好办法,看代码: public boolean isNavigationBarShow(){ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_M

  • Android获取窗体信息的Util方法

    Android获取窗体信息的Util方法,方法很简单,这里就不多废话了,直接上代码 package com.wangyi.tools; import android.app.Activity; import android.util.DisplayMetrics; public class DisplayUtils { private static DisplayUtils instance; private Activity mActivity; private DisplayUtils(Ac

  • Android 获取系统各个目录的方法

    在Android开发过程中,我们经常会对文件系统进行操作--存放.释放我们应用的数据.Android系统中提供了各种功能的文件目录,每个目录都有相应的特点和功能. 这篇文章主要介绍和记录一下实际开发过程中常用的各个文件目录. (1)内部存储(Internal Storage) 内部存储是App的私有目录,当一个应用卸载之后,内部存储中的这些文件也被删除.Shared Preferences和SQLite数据库文件都是存储在内部存储空间上的. -context.getFileDir() 路径:(d

  • Android获取移动网络信号强度的方法

    判断有没有 SIM 卡 获取移动网络的信号,一定要判断是否插了 SIM 卡,没插卡肯定是没法获取的 /** * 判断是否包含SIM卡 * * @return 状态 */ public static boolean hasSimCard(Context context) { TelephonyManager telMgr = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); int simState =

  • Android 下载网络图片并显示到本地

    Android下载网络图片的流程是: 发送网络请求->将图片以流的形式下载下来->将流转换为Bitmap并赋给ImageView控件. 注意点 最新的Android系统不可以在主线程上请求网络,需要使用线程来请求 下载图片属于耗时任务,最优做法是放在一个AsyncTask中操作 设计思路 1.网络请求:该例中需要下载的文件类型是图片类型,可以将网络请求获取的数据类型转换为Bitmap已供ImageView直接使用,但是一个合理的网络请求类的设计是将下载的数据类型转换为最基本的InputStre

  • Android获取系统时间的多种方法

    Android中获取系统时间有多种方法,可分为Java中Calendar类获取,java.util.date类实现,还有android中Time实现. 现总结如下: 方法一: void getTime1(){ long time=System.currentTimeMillis();//long now = android.os.SystemClock.uptimeMillis(); SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd

  • android获取手指触摸位置的方法

    本文实例为大家分享了android获取手指触摸位置的具体代码,供大家参考,具体内容如下 手机屏幕事件的处理方法onTouchEvent.该方法在View类中的定义,并且所有的View子类全部重写了该方法,应用程序可以通过该方法处理手机屏幕的触摸事件. 其原型是: public boolean onTouchEvent(MotionEvent event) 参数event:参数event为手机屏幕触摸事件封装类的对象,其中封装了该事件的所有信息,例如触摸的位置.触摸的类型以及触摸的时间等.该对象会

  • Android 获取IP地址的实现方法

    Android 获取IP地址 最近做项目,有一个需求是Android设备获取当前IP的功能,经过一番查询资料解决了,记录下实现方法. 1.使用WIFI 首先设置用户权限 <uses-permission Android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> <uses-permission android:name="android.permission.CH

  • Android获取手机联系人列表的方法

    本文实例为大家分享了Android获取手机联系人列表的具体代码,供大家参考,具体内容如下 下面直接贴代码 1.先写一个实体类,来放名字和号码 public class PhoneDto { private String name; //联系人姓名 private String telPhone; //电话号码 public String getName() { return name; } public void setName(String name) { this.name = name;

随机推荐