1. 程式人生 > >Android非同步顯示網路上的圖片(使用Handler)

Android非同步顯示網路上的圖片(使用Handler)

由於android4.0之後不允許在主執行緒中進行網路才操作,在學習過程中不知道這點,導致發生了比較蛋疼的事情,本人菜鳥一個,知識水平很有限,利用Handler 傳送訊息傳遞下載的圖片資源,並在UI介面中予以顯示。

package com.example.ko.ok;


import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
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.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;


public class MainActivity extends Activity {
Button btn;
String imageUrl = "http://imgstatic.baidu.com/img/image/shouye/qinchunmeinv0808.jpg"; ;
Bitmap bmImg; 
ImageView im;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
 
setContentView(R.layout.activity_main);
im=(ImageView)findViewById(R.id.imageView1);
btn=(Button)findViewById(R.id.button1);
final Handler handler=new Handler(){
public void handleMessage(Message msg)
{
bmImg=(Bitmap)msg.obj;
im.setImageBitmap(bmImg);
}
};
btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
btn.setText("徐昕");
imageUrl="http://bbs.dvbbs.net/UploadFile/2012-5/201253120192839760.gif";
new Thread("oo"){
public void run()
{
Message msg=new Message();
msg.obj=returnBitMap(imageUrl); 
handler.sendMessage(msg);
}
}.start();
}
});

new Thread("oo"){
public void run()
{
Message msg=new Message();
msg.obj=returnBitMap(imageUrl); 
handler.sendMessage(msg);
}
}.start();
}
public Bitmap returnBitMap(String url) {  
URL myFileUrl = null;  
Bitmap bitmap = null;  
try {  
myFileUrl = new URL(url);  
} catch (MalformedURLException e) {  
e.printStackTrace();  
}  
try {  
HttpURLConnection conn = (HttpURLConnection) myFileUrl  
.openConnection();  
conn.setDoInput(true);  
conn.connect();  
InputStream is = conn.getInputStream();  
bitmap = BitmapFactory.decodeStream(is);  
is.close();  
} catch (IOException e) {  
e.printStackTrace();  
}  
return bitmap;  
}  
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}


}

相關推薦

Android非同步顯示網路圖片使用Handler

由於android4.0之後不允許在主執行緒中進行網路才操作,在學習過程中不知道這點,導致發生了比較蛋疼的事情,本人菜鳥一個,知識水平很有限,利用Handler 傳送訊息傳遞下載的圖片資源,並在UI介面中予以顯示。 package com.example.ko.ok; i

Android有效地展示大圖片

圖片快取 只下載一張圖片在你的UI上時非常簡單的。但是如果你需要一次性下很多圖片就不這麼容易了。在很多情況下(比如ListView,GridView或者是ViewPager),要展示在螢幕上的圖片加上即將要展示的圖片,這個數量可是沒有什麼大小限制的。 以上提到的控制元件,為了

Android 有效的展示大圖片

下面是Android對bitmap的記憶體管理的進化過程: 在Android2.2之前的版本中,當垃圾回收執行緒開始時,你的app的執行緒就會掛起。這就會導致使用者體驗降級。Android2.3之後使得垃圾回收機制可以併發執行。這也就意味著當一個bitmap沒有指向自己的引用時,可以被垃圾回收機

Android VideoView播放網路視訊簡介

最近專案中用到了很多視訊播放的地方,不管是聊天傳送的視訊訊息,還是類似內涵段子的視訊列表,都會涉及這些知識,不過網上的知識都很零散,一會找快取方法,一會找預覽圖片的方法,一會找視訊動態修改尺寸的方法,總之找的人好煩,所以自己寫一篇來記錄這些知識點,也方便別人查閱 獲取視訊首幀當預覽圖(MediaMetada

Android基礎-獲取網路圖片顯示

android手機和瀏覽器也是一樣的,也可以通過網路通訊獲取資料,如呼叫webservice,EJB等。下面就通過一個小例子從網路獲取一幅圖片並顯示在手機上,開發中將會使用到一個新的元件ImageView. 設計效果圖: 1.在AndroidManife

Android 非同步載入網路圖片到ImageView Hnadler

首先建立一個Handler private Handler handler=new Handler(){ @Override public void handleMessage(Mes

android圖片bitmap畫矩形框,並顯示

private void drawRectangles(Bitmap imageBitmap, int[] keywordRects,int[] valueRects) {int left, top, right, bottom;Bitmap mutableBitmap = imageBitmap.copy(

ueditor單圖片simpleupload傳,設置其 width:100%,height:auto。以適應各種屏幕大小顯示

適應 () 技術 width png 屏幕大小 bsp 代碼 操作 打開ueditor.all.js,按下圖操作(修改後註意清緩存): 附上待搜索的關鍵字:function callback() 附上代碼   loader.setAttribute(‘width‘

angularjs手機webapp 利用input拍照,相簿選擇、縮圖顯示 圖片

執行後的截圖: html程式碼 <ul class="list_img"> <li ng-repeat="imageSrc in imgshows track by $index"> <img n

OKHttp get同步請求網路+post非同步請求網路+圖片

導依賴 implementation 'com.squareup.okhttp3:okhttp:3.11.0' implementation 'com.squareup.okhttp3:logging-interceptor:3.11.0'   public

Android中GridView以表格形式顯示多張圖片仿桌面

  GridView可以理解為顯示多列的ListView,這次就利用GridView做一個仿桌面的案例。GridView和ListView的使用相同,都基本使用以下三步走:設定資料來源,設定介面卡,

android 新增視訊、圖片、錄音

實現一個功能,上報資訊,可以新增視訊、圖片、錄音。呼叫系統相機,所以每次只能選擇一張圖片。 //拍照 add_photo.setOnClickListener(new View.OnClickListener() {

Android非同步載入網路圖片

Android圖片的非同步載入,主要原理: 載入圖片時先檢視快取中時候存在該圖片,如果存在則返回該圖片,否則先載入載一個預設的佔位圖片,同時建立一個通過網路獲取圖片的任務並新增,任務完成後放鬆訊息給主執行緒更新介面。 使用方法: Asyn

Android 非同步獲取網路圖片Bitmap資源

這裡主要是為了把獲取圖片的程式碼單獨出來和UI分開,方便擴充套件。 public interface Callback<T> { public void onSuccess(T o

android 新增視訊、圖片、錄音

接上,上傳新增的視訊、圖片、音訊檔案。之前做的是在新增完檔案後就立即上傳,返回id,將id儲存到任務中。會出現在檔案沒有上傳完,就儲存任務,而沒有檔案id。改成先新增任務,上傳檔案時帶著任務id引數。 //新增檔案 commitFile.set

freemarker+springMVC+ajaxfileupload實現非同步圖片單張

第一步:下載JQuery的JS檔案ajaxfileupload.js 並引入到freemarker 第二步:freemarker頁面 <span style="font-size:18px;"><!DOCTYPE html> <html l

【原創】源碼角度分析Android的消息機制系列——Handler的工作原理

urn long empty isa pat stat 開啟 it is performed ι 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 先看Handler的定義: /** * A Handler allows you to send and proc

HTML5+Canvas+jQuery調用手機拍照功能實現圖片

customer mkdir 狀態保存 ont false lan else if 項目 action 上一篇僅僅講到前臺操作,這篇專門涉及到Java後臺處理。前臺通過Ajax提交將Base64編碼過的圖片數據信息傳到Java後臺,然後Java這邊進行接收處理。通過

HTML5 file API加canvas實現圖片前端JS壓縮並轉載

www. 手機 回調 pre lan 瀏覽器中 rdp 效果 二進制 一、圖片上傳前端壓縮的現實意義 對於大尺寸圖片的上傳,在前端進行壓縮除了省流量外,最大的意義是極大的提高了用戶體驗。 這種體驗包括兩方面: 由於上傳圖片尺寸比較小,因此上傳速度會比較快,交互會更

圖片photoClip

center opacity pla utl ack right nbsp static border 首先我們需要引入4個js包(這4個包總共106.6KB) <script src="__STATIC__/hammer.min.js" ></scri