如有錯誤歡迎指正
想把網路的圖片加載到自己的image view里面,所以用imageView.setImageURI(uri); 但是運行的時候沒有加載圖片,看logcat發現了標題的報錯,上網搜了一下,突然醒悟,Uri本身就有別與URL,Uri是用來加載本地路徑的,所以不能用imageView.setImageURI(uri);這個方法
我們用Android中的一個服務叫 Picasso
在build:gradle中的dependencies中添加一個依賴
implementation 'com.squareup.picasso:picasso:2.5.2'

然后可以直接在代碼中用
//firstUrl 是一個圖片的網路地址,second是一個imageview
Picasso.get(context).load(firstUrl).into(second);

在寫的時候遇到一個問題,Picasso爆紅,找了好久原因我覺得可能是我先在類中呼叫了Picasso的方法,后寫的依賴,我把Picasso.get(context).load(firstUrl).into(second);刪掉重新寫了一遍它就不爆紅了,,,
但這可能是運氣,你們修改了依賴之后注意編譯器有沒有提示,點擊sync now

點擊之后爆紅就消失了

但是程式運行的時候會報錯

他說我第81行寫錯了(在排錯的程序中我使用了更新版本的picasso,所以這里換了種用法,如果你也要用這個用法,就把依賴中的陳述句改成implementation 'com.squareup.picasso:picasso:2.71828')

我們把這個陳述句寫到異步類的另一個函式去

再次運行,解決

根據現象總結經驗,異步就是為了耗時操作,所以剛才的對json資料的加載和決議看成是一個耗時操作,我們接下來的這個Picasso操作是另一個操作,而這個操作是建立在上一個操作的基礎之上的,我們應該保證上一個操作完成之后再做這個操作,如果你把這兩個操作都放在doInBackground方法中,就沒辦法保證他們的同步性,所以AsyncTask給我們提供了幾個不同的函式可以控制前后順序,這個onPostExecute函式就是得等到doInBackground函式執行完畢之后才執行的,所以把Picasso操作寫在這個函式之中,
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/357142.html
標籤:其他
上一篇:Android 實作圓形按鈕
