- 浏览: 59683 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (218)
- ★★★ Android ★★★ (37)
- 【 Java 基础】✚ (0)
- ☞Java 基础概述 (0)
- ☞Java 基本语法 (0)
- ☞Java 面向对象编程 (0)
- ☞Java多线程 (0)
- ☞Java 异常处理 (0)
- ☞Java 集合框架 (0)
- ☞Java 泛型 (0)
- ☞Java 枚举和注解 (0)
- ☞Java IO流 (0)
- ☞Java 常用类 (0)
- ☞Java GUI键盘事件 (0)
- ☞Java 网络编程 (0)
- ☞Java 正则表达式 (0)
- ☞Java 反射机制 (0)
- ☞Java 小项目 (0)
- ☞Java 面试/笔试题 (0)
- 【HTML5 开发基础】✚ (0)
- ☞HTML常用标签 (0)
- ☞HTML 新特性 (0)
- ☞CSS/CSS3常用语法 (0)
- ☞JavaScript基础语法 (0)
- ☞HTML5 小项目 (0)
- ☞HTML5 面试/笔试题 (0)
- 【Android 基础阶段】✚ (12)
- ☞Android 快速入门 (1)
- ☞Android 核心组件 (1)
- ☞Android Intent (0)
- ☞Android 用户界面 (5)
- ☞Android 数据存储 (0)
- ☞Android Tomcat服务器 (0)
- ☞Android 网络编程 (2)
- ☞Android 消息机制 (0)
- ☞Android 事件机制 (0)
- ☞Fragment和ViewPager (3)
- ☞Android动画与图形处理 (0)
- ☞Android多媒体应用开发 (1)
- ☞Android 传感器开发等 (0)
- ☞Android GPS应用 (0)
- ☞Android C语言 (0)
- ☞Android JNI/NDK开发 (0)
- ☞Android Git/SVN (0)
- ☞Android 小项目 (0)
- ☞Android 面试/笔试题 (0)
- 【Android 微知识点】✚ (7)
- ☞Android 一些模版代码 (0)
- ☞Android 模块功能代码 (0)
- ☞Android UI控件大全 (2)
- ☞Android 自定义适配器 (1)
- ☞Android 自定义属性 (3)
- ☞Android 自定义动画 (0)
- ☞Android 启动过程 (0)
- ☞Android 性能优化 (0)
- ☞Android 图片三级缓存 (0)
- ☞Android 屏幕适配 (0)
- ☞Android OOM内存溢出 (0)
- ☞Android 权限 (0)
- ☞Android JNI (0)
- 【Android 网络编程】✚ (1)
- ☞Android Json解析 (2)
- ☞Android 网络请求 (2)
- 【Android 解析器】✚ (0)
- ☞Android XML (0)
- ☞Android DOM (0)
- ☞Android dom4j (0)
- ● (0)
- ●● (0)
- ●●● (0)
- ●●●● (0)
- ●●●●● (0)
- ●●●●●● (0)
- ●●●●●●● (0)
- ●●●●●●●● (0)
- ●●●●●●●●● (0)
- ☞☞☞☞☞☞☞☞☞☞ (0)
- ☞☞☞☞☞☞☞☞☞ (0)
- ☞☞☞☞☞☞☞☞ (0)
- ☞☞☞☞☞☞☞ (0)
- ☞☞☞☞☞☞ (0)
- ☞☞☞☞☞ (0)
- ☞☞☞☞ (0)
- ☞☞☞ (0)
- ☞☞ (0)
- ☞ (0)
- 【Android重量级框架】✚ (14)
- ☞框架归类 (1)
- ☞Gson (0)
- ☞xUtils3 (2)
- ☞xListView (0)
- ★ Volley (0)
- ★ AndroidAnnotations (0)
- ★ Glide (0)
- ★ SlidingMenu (0)
- ★ TabLayout (1)
- ★ ViewPagerIndicator (4)
- ★ Pulltorefresh (1)
- ★ PhotoView (1)
- ★ EventBus (0)
- ★ Vitamio5.0 (0)
- ★ Image-Loader (1)
- ★ Android-gif-drawable (0)
- ★ ActionBar (0)
- ★ ActionBarSherlock (0)
- ★ OkHttp (0)
- ★ Afinal (2)
- ★ Ffmpeg (0)
- ★ RxJava (0)
- ★ Picasso (0)
- ★ FastJson (0)
- ★ Toolbar (0)
- ★ GreenDao (0)
- ★ Otto (0)
- ★ ORMLite (0)
- ★ Retrofit (0)
- ★ Fresco (0)
- ★ SnappyDB (0)
- ★ Butterknife (0)
- ★ PagerSlidingTabStrip (0)
- PinterestLikeAdapterView (0)
- ★ NotBoringActionBar (0)
- ★ StickyListHeaders (0)
- ★ NineOldAndroids (0)
- ★ Expandablelistview (0)
- ★ SwipeRefreshLayout (0)
- ★ SwipeMenuListView (0)
- ★ (0)
- ★★ (0)
- ★★★ (0)
- ★★★★ (0)
- ★★★★★ (0)
- ★★★★★★ (0)
- ★★★★★★★ (0)
- ★★★★★★★★ (0)
- ★★★★★★★★★ (0)
- ★★★★★★★★★★ (0)
- ❉❉❉❉❉❉❉❉❉❉ (0)
- ❉❉❉❉❉❉❉❉❉ (0)
- ❉❉❉❉❉❉❉❉ (0)
- ❉❉❉❉❉❉❉ (0)
- ❉❉❉❉❉❉ (0)
- ❉❉❉❉❉ (0)
- ❉❉❉❉ (0)
- ❉❉❉ (0)
- ❉❉ (0)
- ❉ (0)
- 【第三方分享库】✚ (0)
- ○○○○○○○○○○ (0)
- ○○○○○○○○○ (0)
- ○○○○○○○○ (0)
- ○○○○○○○ (0)
- ○○○○○○ (0)
- ○○○○○ (0)
- ○○○○ (0)
- ○○○ (0)
- ○○ (0)
- ○ (1)
- 【Android开源项目】✚ (1)
- ☞综合性项目 (0)
- ☞多媒体项目 (1)
- ☞新闻性项目 (2)
- ☞社交性项目 (0)
- ☞商城性项目 (0)
- ☞Android 支付宝 (0)
- ☞Android 第三方登录 (0)
- ☞Android 语音识别 (0)
- ☞Android消息推送 (1)
- ☞Android 蓝牙 (0)
- ☞Android 传感器 (0)
- ☞Android 动画 (0)
- ☞Android 省市县三级联动 (0)
- ☞短信验证技术 (0)
- ☞二维码扫描技术 (0)
- ☂ (0)
- ☂☂ (0)
- ☂☂☂ (0)
- ☂☂☂☂ (0)
- ☂☂☂☂☂ (0)
- ☂☂☂☂☂☂ (0)
- ☂☂☂☂☂☂☂ (0)
- ☂☂☂☂☂☂☂☂ (0)
- ☂☂☂☂☂☂☂☂☂ (0)
- ☂☂☂☂☂☂☂☂☂☂ (0)
- ♣♣♣♣♣♣♣♣♣♣ (0)
- ♣♣♣♣♣♣♣♣♣ (0)
- ♣♣♣♣♣♣♣♣ (0)
- ♣♣♣♣♣♣♣ (0)
- ♣♣♣♣♣♣ (0)
- ♣♣♣♣♣ (0)
- ♣♣♣♣ (0)
- ♣♣♣ (0)
- ♣♣ (0)
- ♣ (0)
- 【Android源码分析】✚ (4)
- 【Android项目阶段】✚ (1)
- ☞Android主流架构搭建 (0)
- ☞综合性<手机安全卫士> (0)
- ☞多媒体<手机影音> (1)
- ☞新闻性<北京新闻> (0)
- ☞社交性<硅谷社交> (0)
- ☞商城性<硅谷商城> (0)
- ☞内涵段子<百思> (0)
- ☞<地图相关开发接口> (0)
- ☞下载<电子应用市场> (0)
- ☞智能<手机遥控家电> (0)
- ☞游戏<植物大战僵尸> (0)
- ☞企业实战<开源中国> (0)
- ☞Android5.0+6.0新特性 (0)
- ☞高级特效专辑 (0)
- ☞项目管理与实施 (0)
- ☞项目经验:面试/笔试题 (0)
- 【Android 前沿技术】✚ (0)
- ☞图文混排技术 (0)
- ☞百分比布局 (0)
- H5混合开发☞ (0)
- ☞APP增量升级 (0)
- ☞软件崩溃收集 (0)
- ☞前沿技术分享 (0)
- 【Android+H5混合开发】✚ (0)
- ☞React基本语法 (0)
- ☞React Native开发环境搭建 (0)
- ☞React Native开发基础 (0)
- ☞React Native常用组件 (0)
- ☞React Native常用API (0)
- ☞豆瓣搜索项目 (0)
- ☏ (0)
- ☏☏ (0)
- ☏☏☏ (0)
- ☏☏☏☏ (0)
- ☏☏☏☏☏ (0)
- ☏☏☏☏☏☏ (0)
- ☏☏☏☏☏☏☏ (0)
- ☏☏☏☏☏☏☏☏ (0)
- ☏☏☏☏☏☏☏☏☏ (0)
- ☏☏☏☏☏☏☏☏☏☏ (0)
- ☎☎☎☎☎☎☎☎☎☎ (0)
- ☎☎☎☎☎☎☎☎☎ (0)
- ☎☎☎☎☎☎☎☎ (0)
- ☎☎☎☎☎☎☎ (0)
- ☎☎☎☎☎☎ (0)
- ☎☎☎☎☎ (0)
- ☎☎☎ (0)
- ☎☎ (0)
- ☎ (0)
- 【Android+H5项目实战】✚ (0)
- 【程序员软件系列】✚ (4)
- ☞Eclipse (0)
- ☞Android Studio (4)
- ☞Genymotion (0)
- ☞Tomcat服务器 (0)
- ☞MyScal (0)
- ☀ (0)
- ☀☀ (0)
- ☀☀☀ (0)
- ☀☀☀☀ (0)
- ☀☀☀☀☀ (0)
- ☀☀☀☀☀☀ (0)
- ☀☀☀☀☀☀☀ (0)
- ☀☀☀☀☀☀☀☀ (0)
- ☀☀☀☀☀☀☀☀☀ (0)
- ☀☀☀☀☀☀☀☀☀☀ (0)
- ☻☻☻☻☻☻☻☻☻☻ (0)
- ☻☻☻☻☻☻☻☻☻ (0)
- ☻☻☻☻☻☻☻☻ (0)
- ☻☻☻☻☻☻☻ (0)
- ☻☻☻☻☻☻ (0)
- ☻☻☻☻☻ (0)
- ☻☻☻☻ (0)
- ☻☻☻ (0)
- ☻☻ (0)
- ☻ (0)
- ♬♬♬ 技术网站 ♬♬♬ (2)
- ◙ (0)
- ◙◙ (0)
- ◙◙◙ (0)
- ◙◙◙◙ (0)
- ◙◙◙◙◙ (0)
- ◘◘◘◘◘ (0)
- ◘◘◘◘ (0)
- ◘◘◘ (0)
- ◘◘ (0)
- ◘ (0)
- 【Android 其他技术】✚ (0)
- ☞Android反编译 (0)
- ☞抓包 (0)
- ☞多渠道打包及软件上线 (0)
- 【github项目/博客系列】✚ (1)
- ☞注册github步骤 (0)
- ☞github项目 (0)
- ☞优秀博客系列 (1)
- 【开发经验分享】✚ (2)
- ☞Android 知识体系 (1)
- ☞项目经验分享 (0)
- ☞面试与就业指导 (1)
- ☞Android面试技术汇总 (2)
- ♬♬♬ 词汇 ♬♬♬ (0)
- 【Android基础单词】✚ (0)
- 【javaSE单词】✚ (0)
- 【个人博客资料】✚ (0)
- 博客链接 (1)
- 快速开发 (1)
- JavaEE面试题 (1)
最新评论
Android实现网络图片app
Android实现输入一个网址,就可以看百度图片美女,是不是很心动?
总共分三步:
1.从输入框中获取图片文件路径,在主线程中创建消息处理器,发送http请求:url.openConnection();
2.在创建的子线程中连接服务器get获取图片;
3.在主线程中捕获从子线程handler.sendMessage(msg)发送回来的消息msg,并解析图片数据,更新使用setImageBitmap()方法更新UI。
废话少说,直接上代码:
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends Activity {
protected static final int CHANGE_UI = 1; //帮我改UI
protected static final int ERROR = 2;
private EditText et_path;
private ImageView iView;
//第一步:在主线程中创建消息处理器
private Handler handler=new Handler(){
/*
* (non-Javadoc)第三步: looper 获得 子线程传过来的消息进行 UI更新
* @see android.os.Handler#handleMessage(android.os.Message)
*/
public void handleMessage(android.os.Message msg) { //重写handlemessage方法
if (msg.what==CHANGE_UI) {
Bitmap bitmap= (Bitmap)msg.obj;
iView.setImageBitmap(bitmap);
}
else if (msg.what==ERROR) {
Toast.makeText(MainActivity.this,"获取图片失败", 0).show();
}
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_path=(EditText)findViewById(R.id.et);
iView=(ImageView)findViewById(R.id.iv);
}
/*
* Android2.X直接在主线程中获取服务器数据,这样如果朋多多任务,主线程就会崩溃 4.0之后舍弃此方法
*/
//public void onClick(View view) {
// String path=et_path.getText().toString().trim(); //获取文件路径
// if (TextUtils.isEmpty(path)) {
// Toast.makeText(MainActivity.this,"图片路径不能为空", 0).show();
// } else {
// //连接服务器get获取图片
// try {
// URL url=new URL(path); //包装路径
// HttpURLConnection urlConnection=(HttpURLConnection) url.openConnection(); //根据url发送http请求
// urlConnection.setRequestMethod("GET"); //指定获取图片的方式——get方式
// urlConnection.setConnectTimeout(5000); //5000毫秒相当于5秒
// int code=urlConnection.getResponseCode(); //得到服务器返回的响应码
// if (code==200) { //200代表获取成功 404代表获取失败
// InputStream iStream=urlConnection.getInputStream();
// Bitmap bitmap=BitmapFactory.decodeStream(iStream); //位图方法——把流转换为Bitmap
// iView.setImageBitmap(bitmap); //显示bitmap
// }else {
// Toast.makeText(MainActivity.this, "显示图片失败", 0).show();
// }
// } catch (Exception e) {
// e.printStackTrace();
// Toast.makeText(MainActivity.this, "获取图片失败", 0).show();
// }
// }
//}
//
/*
* Android4.0之后 改进版,新开辟子线程,在子线程中访问服务器获取数据
*/
public void onClick(View view) {
finalStringpath=et_path.getText().toString().trim();
//获取文件路径
if (TextUtils.isEmpty(path)) {
Toast.makeText(MainActivity.this,"图片路径不能为空", 0).show();
} else {
new Thread(){
public void run() {
//连接服务器get获取图片
try {
URL url=new URL(path); //包装路径 注意:内部类访问外部类,变量要加final
HttpURLConnection urlConnection=(HttpURLConnection) url.openConnection(); //根据url发送http请求
urlConnection.setRequestMethod("GET"); //指定获取图片的方式——get方式
urlConnection.setConnectTimeout(5000); //5000毫秒相当于5秒
int code=urlConnection.getResponseCode();//得到服务器返回的响应码
if (code==200) { //200代表获取成功 404代表获取失败
InputStream iStream=urlConnection.getInputStream();
Bitmap bitmap=BitmapFactory.decodeStream(iStream); //位图方法——把流转换为Bitmap
//iView.setImageBitmap(bitmap); //显示bitmap
/*
* 第二步:子线程告诉主线程一个消息,帮我更改UI,内容bitmap
*/
Message msg=new Message();
msg.what=CHANGE_UI; //在开头定义CHANGE_UI的宏
msg.obj=bitmap; //obj代表消息里面的数据
handler.sendMessage(msg);
}else {
// Toast.makeText(MainActivity.this, "显示图片失败", 0).show();
Message msg=new Message();
msg.what=ERROR; //在开头定义CHANGE_UI的宏
handler.sendMessage(msg);
}
} catch (Exception e) {
e.printStackTrace();
Message msg=new Message();
msg.what=ERROR; //在开头定义CHANGE_UI的宏
handler.sendMessage(msg);
//Toast.makeText(MainActivity.this, "获取图片失败", 0).show();
}
}
}.start();
}
}
}
相关推荐
这些库能有效地处理网络图片的下载、缓存和显示,避免内存泄漏和OOM(Out of Memory)问题。例如,使用Glide,我们可以在Dialog的代码中这样加载图片: ```java Glide.with(context) .load(advertisementImageUrl)...
本话题将聚焦于如何在Android Studio中下载网络图片并将其显示在应用中,这是一个常见的需求,特别是在创建涉及UI展示的应用时。 首先,要实现这个功能,我们需要使用到Android的网络请求库,比如`Volley`、`OkHttp...
通过以上步骤,你可以基本实现Android Studio中网络图片的加载和显示。然而,对于初学者来说,理解并熟练掌握这些知识点可能需要时间和实践。因此,建议多做项目,多看文档,逐步提升自己的技能水平。同时,持续关注...
这个名为"android本地图片查看APP"的项目显然聚焦于这个功能,利用了Universal Image Loader库来处理图片的加载和展示。Universal Image Loader是一个强大的开源库,专为Android设计,用于异步加载、缓存和显示网络...
- 图片加载库如 Glide 或 Picasso 可以高效地加载网络图片,并处理内存和磁盘缓存。 6. **导航与路由** - 使用Android Navigation组件来管理应用的导航流程,定义不同的目的地和动作,简化页面跳转逻辑。 7. **...
通过使用HttpURLConnection和ImageView,配合合适的优化策略,可以实现高效且流畅的网络图片加载功能。然而,随着Android生态的发展,现代的网络请求库如Retrofit和图片加载库如Glide等提供了更高级别的抽象和便利性...
本文将深入探讨如何实现Android app的缓存清理,并基于提供的"CacheClear"压缩包文件,讲解如何封装一个获取和清理缓存的工具类。 首先,了解Android缓存的作用。缓存是为了提高数据读取速度,将常用但加载较慢的...
【基于安卓Android Studio在线订餐app设计源码】 在安卓应用开发领域,Android Studio是主流的集成开发环境(IDE),它提供了丰富的工具和技术支持,帮助开发者构建高效、高性能的应用程序。本项目是一个基于...
在本项目中,"Android仿美团界面APP源码" 是一个专门为Android开发者提供的学习资源,旨在帮助他们理解和实现类似美团应用的用户界面。这个源码是实现一个完整的Android应用程序,包含多个功能模块,如首页、分类、...
在Android开发中,将网络上的图片加载到ImageView控件中是一项常见的需求。...这个简单的例子展示了如何实现基本的网络图片加载功能,实际开发中还可以根据需求进行优化和扩展,比如处理图片的尺寸、调整加载速度等。
"基于Android社区巡检系统APP的研究与实现" 基于 Android 社区巡检系统 APP 的研究与实现旨在解决社区治理范围扩大化、复杂化和各类安全事故频发的问题。该系统采用 Java 语言、MySQL 数据库和 OkHttp 网络框架,...
在Android开发中,实现一个基于Gallery的网络图片和本地图片循环播放功能,是常见的需求,尤其是在制作各种App的启动页、广告轮播或者个人相册等场景。这个功能的实现涉及到了Android UI组件、网络请求、图片加载库...
在这个记事本App中,开发者可能使用了Android的内置组件如EditText和Button来创建用户输入界面,并通过网络请求(可能使用了 Retrofit 或 Volley 库)与服务器进行数据交互,实现用户身份验证。同时,为了用户体验,...
在Android开发中,实现长按图片保存至相册的功能是一项常见的需求,它允许用户保存应用内显示的图片到他们的设备相册。下面我们将详细讨论如何实现这个功能,并结合提供的代码片段进行解析。 首先,我们需要监听...
"基于Android的志愿服务管理APP的实现" 标题:"基于Android的志愿服务管理APP的实现" 描述:"基于Android的志愿服务管理APP的实现" 标签:"APP应用开发 数据分析 参考文献 专业指导" 部分内容:本文将对基于Android...
总结,开发一个基于Android Studio的记账本App,不仅需要掌握Android开发基础,如UI设计、数据库操作、网络请求等,还需要了解用户体验设计,提供便捷易用的功能。通过持续优化和迭代,我们可以打造出一个深受用户...
5. **图片加载库**:由于漫画图片较多且大小不一,源码可能采用了像 Glide 或 Picasso 这样的图片加载库,它们能优化内存使用,实现图片的缓存和高效加载。 6. **UI设计**:漫画App的界面设计需要考虑用户体验,...
【Android Studio 开发仿小红书App】 在移动应用开发领域,Android Studio 是谷歌推出的官方集成开发环境(IDE),专为Android应用设计。这个项目标题表明我们正在讨论一个使用Android Studio 创建的简单App,该App...
以下是一个关于如何在Android App中实现图片异步加载的详细实例。 一、概述 在Android中,图片异步加载通常涉及以下几个关键组件: 1. **LruCache**:内存缓存机制,用于存储已经加载过的图片,减少对磁盘和网络的...
总的来说,这个《天气预报app》项目涵盖了Android应用开发的多个关键方面,如UI设计、网络请求(获取天气数据)、数据解析(处理JSON数据)、以及与系统服务的交互(获取位置信息)。开发者可以通过这个项目学习如何...