最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android 下載網(wǎng)絡圖片并顯示到本地

 更新時間:2017年03月31日 08:42:54   作者:玉杰365  
本文主要介紹了Android實現(xiàn)下載網(wǎng)絡圖片并顯示到本地功能的示例代碼。具有很好的參考價值,下面跟著小編一起來看下吧

Android下載網(wǎng)絡圖片的流程是:

發(fā)送網(wǎng)絡請求->將圖片以流的形式下載下來->將流轉換為Bitmap并賦給ImageView控件。

注意點

  • 最新的Android系統(tǒng)不可以在主線程上請求網(wǎng)絡,需要使用線程來請求
  • 下載圖片屬于耗時任務,最優(yōu)做法是放在一個AsyncTask中操作

設計思路

1.網(wǎng)絡請求:該例中需要下載的文件類型是圖片類型,可以將網(wǎng)絡請求獲取的數(shù)據(jù)類型轉換為Bitmap已供ImageView直接使用,但是一個合理的網(wǎng)絡請求類的設計是將下載的數(shù)據(jù)類型轉換為最基本的InputStream,這樣不管是下載圖片,音頻,文本還是視頻,都可以將結果拋出去讓上層的邏輯來處理。

2.異步請求:下載圖片,網(wǎng)絡下載屬于耗時操作,所以需要封裝一個AsyncTask來處理網(wǎng)絡請求,該請求繼承自Runnable接口。

3.異步回調:前臺需要通過回調的方式來得到圖片源,并將該圖片源賦值給ImageView.

相關代碼

NetService:網(wǎng)絡請求服務類

public class NetService {
public static InputStream getInputStreamByUrl(String address){
URL url = null;
HttpURLConnection urlConnection = null;
try {
url = new URL(address);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setConnectTimeout(2 * 1000);
urlConnection.setRequestMethod("GET");
return urlConnection.getInputStream();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}

NetServiceTask:AsyncTask類

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import java.io.BufferedInputStream;
import java.io.InputStream;
public class NetServiceTask extends AsyncTask
public NetServiceTask(String address, URLPostHandler urlPostHandler) {
 this.address=address;
 this.urlPostHandler=urlPostHandler;
}
/**
 * 表示任務執(zhí)行之前的操作
 */
@Override
protected void onPreExecute() {
 // TODO Auto-generated method stub
 super.onPreExecute();
}
/**
 * 主要是完成耗時的操作
 */
@Override
protected Bitmap doInBackground(String... arg0) {
 InputStream inputStream=NetService.getInputStreamByUrl(arg0[0]);
 if(inputStream!=null){
  return BitmapFactory.decodeStream(new BufferedInputStream(inputStream));
 }
 return null;
}
/**
 * 主要是更新UI的操作
 */
@Override
protected void onPostExecute(Bitmap result) {
 // TODO Auto-generated method stub
 super.onPostExecute(result);
 if(this.urlPostHandler!=null&&result!=null){
  this.urlPostHandler.PostHandler(result);
 }
}
@Override
public void run() {
 execute(this.address);
}
}

URLPostHandler:回調接口

public interface URLPostHandler {
void PostHandler(Bitmap bitmap);
}

前臺請求圖片并顯示到ImageView

public class MainActivity extends AppCompatActivity {
Button buttonDownload;
ImageView imageViewImg;
@Override
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 buttonDownload = (Button) findViewById(R.id.buttonDownload);
 imageViewImg = (ImageView) findViewById(R.id.imageViewImg);
 buttonDownload.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
  String address = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1490783056273&di=6160d101d31dcf5f44b443ad9c5b2648&imgtype=0&src=http%3A%2F%2Fimg.sc115.com%2Fuploads%2Fallimg%2F110626%2F2011062622383898.jpg";
  NetServiceTask netServerTask= new NetServiceTask(address,new URLPostHandler() {
  @Override
  public void PostHandler(Bitmap bitmap) {
   imageViewImg.setImageBitmap(bitmap);
  }
  });
  Thread thread=new Thread(netServerTask);
  thread.start();
 }
 });
}
}

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關文章

  • Android幀率監(jiān)測與優(yōu)化技巧

    Android幀率監(jiān)測與優(yōu)化技巧

    Android 應用的性能優(yōu)化是開發(fā)過程中至關重要的一環(huán),而幀率(Frame Rate)是評估應用性能的一個關鍵指標,在本文中,我們將深入探討如何監(jiān)測 Android 應用的幀率,以及如何通過代碼示例來優(yōu)化應用的性能,需要的朋友可以參考下
    2023-10-10
  • Android開發(fā)教程之shape和selector的結合使用

    Android開發(fā)教程之shape和selector的結合使用

    shape和selector是Android UI設計中經(jīng)常用到的,比如我們要自定義一個圓角Button,點擊Button有些效果的變化,就要用到shape和selector,接下來通過本文給大家介紹Android開發(fā)教程之shape和selector的結合使用,感興趣的朋友一起學習吧
    2016-01-01
  • android用java和c實現(xiàn)查找sd卡掛載路徑(sd卡路徑)的方法

    android用java和c實現(xiàn)查找sd卡掛載路徑(sd卡路徑)的方法

    這篇文章主要介紹了android用java和c實現(xiàn)查找sd卡掛載路徑(sd卡路徑)的方法,需要的朋友可以參考下
    2014-02-02
  • Android系統(tǒng)狀態(tài)欄定制圖標顯示邏輯控制

    Android系統(tǒng)狀態(tài)欄定制圖標顯示邏輯控制

    這篇文章主要為大家介紹了Android系統(tǒng)狀態(tài)欄定制圖標顯示邏輯控制,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • Android選項菜單用法實例分析

    Android選項菜單用法實例分析

    這篇文章主要介紹了Android選項菜單用法,以完整實例形式較為詳細分析了Android選項菜單的布局及功能實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • Android ActionBarActivity設置全屏無標題的方法總結

    Android ActionBarActivity設置全屏無標題的方法總結

    這篇文章主要介紹了Android ActionBarActivity設置全屏無標題的相關資料,需要的朋友可以參考下
    2017-07-07
  • Android scrollTo和scrollBy方法使用解析

    Android scrollTo和scrollBy方法使用解析

    在一個View中,系統(tǒng)提供了scrollTo、scrollBy兩種方式來改變一個View的位置,下面通過本文給大家介紹Android scrollTo和scrollBy方法使用解析,需要的朋友參考下吧
    2018-01-01
  • 深入理解Kotlin的泛型系統(tǒng)

    深入理解Kotlin的泛型系統(tǒng)

    Kotlin 泛型即 “參數(shù)化類型”,將類型參數(shù)化,可以用在類,接口,方法上。下面 這篇文章主要給大家介紹了關于Kotlin泛型系統(tǒng)的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。
    2017-12-12
  • Android精靈動畫用法實例

    Android精靈動畫用法實例

    這篇文章主要介紹了Android精靈動畫用法,實例分析了Android動畫的相關使用技巧,需要的朋友可以參考下
    2015-06-06
  • 圖文詳解Flutter單例的實現(xiàn)

    圖文詳解Flutter單例的實現(xiàn)

    一個類只允許創(chuàng)建一個實例,那這個類就是一個單例類,這種設計模式就叫作單例設計模式,簡稱單例模式,下面這篇文章主要給大家介紹了關于Flutter單例的實現(xiàn)方法,需要的朋友可以參考下
    2021-12-12

最新評論

富顺县| 宣城市| 岑巩县| 绩溪县| 萨迦县| 吉隆县| 武隆县| 斗六市| 迁西县| 崇明县| 宜兰县| 驻马店市| 佛冈县| 白沙| 南京市| 蒙阴县| 宜昌市| 长丰县| 黄陵县| 光山县| 丰都县| 江门市| 广平县| 长海县| 吉木萨尔县| 崇信县| 通海县| 西青区| 突泉县| 盐边县| 巩义市| 灵丘县| 肃南| 安达市| 西盟| 宣恩县| 荆州市| 石狮市| 平湖市| 建始县| 天台县|