源码 [工程文件]:https://gitee.com/lwx001/ImageView

目   录

运行截图

activity_main.xml

MainActivity.java

AndroidManifest.xml


运行截图

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/bg"tools:context=".MainActivity"><LinearLayoutandroid:id="@+id/ll_text"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="10dp"android:layout_marginBottom="5dp"android:orientation="horizontal"><EditTextandroid:id="@+id/et_path"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginRight="3dp"android:layout_weight="1"android:background="#EBEBEB"android:hint="请输入图片路径"android:inputType="textUri"android:paddingLeft="3dp"android:textColor="#696969"android:textSize="20sp" /><Buttonandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_weight="4"android:background="#EBEBEB"android:onClick="click"android:text="浏览"android:textColor="#696969"android:textSize="20sp" /></LinearLayout><ImageViewandroid:id="@+id/iv_pic"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_below="@+id/ll_text"android:scaleType="centerCrop" />
</RelativeLayout>

MainActivity.java

package cn.lwx.imageview;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;public class MainActivity extends AppCompatActivity {protected static final int CHANGE_UI = 1;protected static final int ERROR = 2;private EditText et_path;private ImageView ivPic;private Handler handler = new Handler() { // 主线程创建消息处理器@Overridepublic void handleMessage(android.os.Message msg) {if (msg.what == CHANGE_UI) {Bitmap bitmap = (Bitmap) msg.obj;ivPic.setImageBitmap(bitmap);} else if (msg.what == ERROR) {Toast.makeText(MainActivity.this, "显示图片错误 !", Toast.LENGTH_SHORT).show();}}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);et_path = (EditText) findViewById(R.id.et_path);ivPic = (ImageView) findViewById(R.id.iv_pic);//et_path.setText("http://www.photophoto.cn/m6/018/030/0180300388.jpg");//et_path.setText("图片地址!!!");//https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=2834084951,2081126851&fm=11&gp=0.jpg}public void click(View view) {final String path = et_path.getText().toString().trim();if (TextUtils.isEmpty(path)) { //判断是否为空串Toast.makeText(this, "图片路径不能为空 !", Toast.LENGTH_SHORT).show();} else {//子线程请求网络,Android4.0以后访问网络不能放在主线程中new Thread() { //开启一个线程private HttpURLConnection conn;private Bitmap bitmap;public void run() { //联网操作// 连接服务器 get 请求 获取图片try {// 创建URL对象URL url = new URL(path);// 根据url, 发送http的请求conn = (HttpURLConnection) url.openConnection();// 设置请求的方式conn.setRequestMethod("GET");// 设置超时时间conn.setConnectTimeout(5000);// 得到服务器返回的响应码int code = conn.getResponseCode();// 请求网络成功后, 返回码是200if (code == 200) {//获取输入流InputStream is = conn.getInputStream();//将流转换成Bitmap对象bitmap = BitmapFactory.decodeStream(is);//强制规定:必须在主线程中 更改图片//将更改主界面的消息发送给主线程Message msg = new Message();msg.what = CHANGE_UI;//int型常量,区分不同的消息msg.obj = bitmap;//通过消息携带对应的图片(object类型)handler.sendMessage(msg);//发送消息} else {//返回码不等于200 请求服务器失败Message msg = new Message();msg.what = ERROR;handler.sendMessage(msg);}} catch (Exception e) {e.printStackTrace();Message msg = new Message();msg.what = ERROR;handler.sendMessage(msg);}//关闭连接conn.disconnect();}}.start();}}}

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="cn.lwx.imageview"><uses-permission android:name="android.permission.INTERNET"/><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

为善者,福虽未至,祸已远离~   嘻嘻(●'◡'●)

Android 网络图片浏览器( ImageView )【网络访问、线程、handler(消息处理器)、Internet权限、Get请求、输入流转图片】相关推荐

  1. android端的的网络访问

    一.Android端进行网络访问的几种实现方式 Socket 套接字,为TCP/IP协议网络通信的网络操作单元: 而抽象上来说:Socket只是一个供上层调用的抽象接口,相当于是传输层下的数据,还没经 ...

  2. Android MediaPlayer使用之网络访问异常

    Android MediaPlayer使用之网络访问异常 1.问题描述 2019-04-02 21:26:15.552 22138-22138/com.uyeh.mediaplayertest D/M ...

  3. android 图片浏览器 布局,Android实现网络图片浏览器

    本文实例为大家分享了Android网络图片浏览器的制作过程,供大家参考,具体内容如下 一.创建一个"网络图片浏览器的应用程序",并设计用户交互界面,"网络图片浏览器&qu ...

  4. Android开发本地及网络Mp3音乐播放器(十三)网络音乐搜索功能实现,歌名歌手专辑名搜索

    转载请注明出处:http://blog.csdn.net/iwanghang/article/details/51298411 觉得博文有用,请点赞,请留言,请关注,谢谢!~ 实现功能: 实现网络音乐 ...

  5. Android开发本地及网络Mp3音乐播放器(十二)创建NetMusicListAdapter、SearchResult显示网络音乐列表

    转载请注明出处:http://blog.csdn.net/iwanghang/article/details/51290181 觉得博文有用,请点赞,请留言,请关注,谢谢!~ 实现功能: 实现NetM ...

  6. 关于AndroidStudio声明了网络访问权限却无法访问网络的问题

    参考书目<第一行代码>第二版 AndroidStudio版本:3.5.2 SDK版本:Android9.0 在尝试访问网络时使用Okhttp(4.1.0)代码如下: private voi ...

  7. Android开发本地及网络Mp3音乐播放器(二十)歌曲下载完成后通知主界面更新本地音乐

    转载请注明出处:http://blog.csdn.net/iwanghang/article/details/51448597 项目源码(打赏5积分请点这边):http://download.csdn ...

  8. mongoengine中queryset触发网络访问机制剖析

    背景 最近新上线的一个服务,偶尔会有超时告警,其主要逻辑仅仅只是简单的读/写mongodb,而且服务上线初期,流量并不大,因而理论上来说,每次请求都应该很快才对,事实上分析日志也证实90%以上的请求都 ...

  9. Android笔记 消息机制handler+http之 网络图片浏览器demo

    在Android中,只有主线程(UI线程)才能修改界面,包括Toast显示,改变Imageview中的图片等操作必须通过消息机制通知主线程修改界面 如不采用handler消息机制极有可能出现如下错误 ...

最新文章

  1. 坚持写博客给我带来了什么
  2. 机器学习算法源码全解析(三)-范数规则化之核范数与规则项参数选择
  3. eclipse启动tomcat错误:A Java Exception has occurred(转)
  4. [慕课笔记] node+mongodb建站攻略
  5. android 自定义推流器,Android直播实现 Android端推流、播放
  6. base64解密后乱码_php实现php代码的加密解密
  7. 德施曼|618期间五次霸榜 直击智能锁第一爆品德施曼Q5
  8. 如何在Python中串联两个列表?
  9. 面向对象软件设计原则
  10. linux复制远程文件和文件夹
  11. [kuangbin带你飞] 专题一 简单搜索 题解(超详细注释,史上最强题解)
  12. SCT2650,4.5V-60V电压,芯洲降压DCDC转换器,参数
  13. 华为mate7 刷机出现android,华为Mate7怎么刷机 华为Mate7刷机教程【步骤详解】
  14. 3D模型实现「唱、跳、Rap、篮球」
  15. 【网络安全】如何使用OpenSSL工具生成根证书与应用证书
  16. KingbaseES V8R6 集群运维系列 -- 命令行部署repmgr管理集群+switchover测试
  17. 蛋花花谈大学生如何在互联网上赚钱
  18. Linux---笔记总结
  19. Polar SC的C++实现
  20. 信号与系统2-连续离散系统时域分析

热门文章

  1. [设计模式笔记]4.建造者模式
  2. mysql error 1231_解决ERROR 1231 (42000): Variable 'time_zone' can't
  3. native react 图片多选_开源一个图片组件 react-native-border-radius-image
  4. android 上下滚动文字_android高仿今日头条富文本编辑(发布文章)
  5. 七十五、React环境搭建,目录文件分析和JSX
  6. 二十五、深入Java中的static静态修饰符
  7. 用kali的Meterpreter控制win10,可以偷看你的电脑的所有数据
  8. keras从入门到放弃(十七)使用预训练网络VGG迁移学习
  9. 人工神经网络发现生物神经网络,智源超高清电镜图像分割挑战赛开赛
  10. 5G时代,如何让人工智能服务人类而不是开除人类