第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

使用Thread加載圖片出現(xiàn)圖片閃動三次才加載對圖片

package?com.example.asynctask;

import?java.io.BufferedInputStream;
import?java.io.IOException;
import?java.net.MalformedURLException;
import?java.net.URL;
import?java.util.HashMap;
import?java.util.Map;

import?android.graphics.Bitmap;
import?android.graphics.BitmapFactory;
import?android.os.AsyncTask;
import?android.os.Handler;
import?android.os.Message;
import?android.support.v4.util.LruCache;
import?android.util.Log;
import?android.widget.ImageView;

public?class?LoadImgUrl?{

????private?ImageView?itemImg;
????private?String?imgUrl;
????private?LruCache<String,?Bitmap>?mImgCache;
????private?Map<String,?Thread>?threadMap?=?new?HashMap<String,?Thread>();
????private?Handler?mHandler?=?new?Handler(){
????????public?void?handleMessage(Message?msg)?{
????????????if(itemImg.getTag()!=?null?&&?itemImg.getTag().equals(imgUrl)){
????????????????ImageView?threadImg?=?((ItemBean)msg.obj).msgImg;
????????????????Bitmap?bitMap?=?((ItemBean)msg.obj).bitMap;
????????????????threadImg.setImageBitmap(bitMap);
????????????}
????????};
????};
????public?LoadImgUrl()?{
????????//?TODO?Auto-generated?constructor?stub
????????int?maxMemory?=?(int)?Runtime.getRuntime().maxMemory()?/?4;
????????mImgCache?=?new?LruCache<String,?Bitmap>(maxMemory);
????}
????public?void?setImgUrl(ImageView?img,final?String?url,int?imgHolder)?{
????????this.itemImg?=?img;
????????this.imgUrl?=?url;
????????if?(img.getTag()?==?null?||?!img.getTag().equals(url))?{
????????????img.setBackgroundResource(imgHolder);
????????????img.setTag(url);
????????}
????????Bitmap?imgBitmap?=?getBitMapByLruc(url);
????????if?(imgBitmap?==?null)?{
//????????????setBitmapByAsyncTask(url,?img);
????????????Thread?imgThread?=?threadMap.get(url);
????????????if?(imgThread?==?null)?{
????????????????setBitmapByNewThread(url,img);
????????????}
????????}else?{
????????????img.setImageBitmap(imgBitmap);
????????}
????}
????
????private?void?setBitmapByNewThread(final?String?url,final?ImageView?threadImg)?{
????????Thread?newThread?=?new?Thread(){
????????????@Override
????????????public?void?run()?{
????????????????//?TODO?Auto-generated?method?stub
????????????????super.run();
????????????????BufferedInputStream?is?=?null;
????????????????try?{
????????????????????is?=?new?BufferedInputStream(new?URL(url).openStream());
????????????????????Thread.sleep(3000);
????????????????}?catch?(MalformedURLException?e)?{
????????????????????//?TODO?Auto-generated?catch?block
????????????????????e.printStackTrace();
????????????????}?catch?(IOException?e)?{
????????????????????//?TODO?Auto-generated?catch?block
????????????????????e.printStackTrace();
????????????????}?catch?(InterruptedException?e)?{
????????????????????//?TODO?Auto-generated?catch?block
????????????????????e.printStackTrace();
????????????????}
????????????????Bitmap?bitMap?=?BitmapFactory.decodeStream(is);
????????????????putBitmapToLruc(bitMap,?url);
????????????????Message?msg?=?Message.obtain();
????????????????ItemBean?itemBean?=?new?ItemBean(threadImg,?bitMap);
????????????????msg.obj?=?itemBean;
????????????????mHandler.sendMessage(msg);
????????????}
????????};
????????newThread.start();
????????threadMap.put(url,?newThread);
????}

????private?void?setBitmapByAsyncTask(String?url,ImageView?imgView)?{
????????new?MyImgAsyncTask(url,?imgView).execute();
????}
????
????private?Bitmap?getBitMapByLruc(String?url)?{
????????return?mImgCache.get(url);
????}
????
????private?void?putBitmapToLruc(Bitmap?bitMap,String?url)?{
????????mImgCache.put(url,?bitMap);
????}

????class?MyImgAsyncTask?extends?AsyncTask<String,?Progress,?Bitmap>{
????????ImageView?asItemImg;
????????String?imgUrl;
????????public?MyImgAsyncTask(String?url,ImageView?imgView)?{
????????????//?TODO?Auto-generated?constructor?stub
????????????asItemImg?=?imgView;
????????????imgUrl?=?url;
????????}
????????@Override
????????protected?Bitmap?doInBackground(String...?params)?{
????????????//?TODO?Auto-generated?method?stub
????????????Bitmap?bitMap?=?null;
????????????try?{
????????????????BufferedInputStream?bfIs?=?new?BufferedInputStream(new?URL(imgUrl).openStream());
????????????????bitMap?=?BitmapFactory.decodeStream(bfIs);
????????????????putBitmapToLruc(bitMap,?imgUrl);
????????????}?catch?(MalformedURLException?e)?{
????????????????//?TODO?Auto-generated?catch?block
????????????????e.printStackTrace();
????????????}?catch?(IOException?e)?{
????????????????//?TODO?Auto-generated?catch?block
????????????????e.printStackTrace();
????????????}
????????????return?bitMap;
????????}
????????
????????@Override
????????protected?void?onPostExecute(Bitmap?result)?{
????????????//?TODO?Auto-generated?method?stub
????????????super.onPostExecute(result);
????????????asItemImg.setImageBitmap(result);
????????}
????}
????
????class?ItemBean{
????????ImageView?msgImg;
????????Bitmap?bitMap;
????????public?ItemBean(ImageView?img,Bitmap?bitmap)?{
????????????//?TODO?Auto-generated?constructor?stub
????????????msgImg?=?img;
????????????this.bitMap?=?bitmap;
????????}
????}
}


正在回答

2 回答


package com.example.asynctask;

import java.io.BufferedInputStream;
import java.io.InputStream;
import java.net.URI;
import java.net.URL;
import java.util.List;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class NewsListAdapter extends BaseAdapter {
?? ?List<NewsBean> newsList;
?? ?LayoutInflater lInflater;
?? ?LoadImgUrl mLoadImgurl = new LoadImgUrl();
?? ?public NewsListAdapter(Context context,List<NewsBean> newsList) {
?? ??? ?// TODO Auto-generated constructor stub
?? ??? ?lInflater = LayoutInflater.from(context);
?? ??? ?this.newsList = newsList;
?? ?}
?? ?@Override
?? ?public int getCount() {
?? ??? ?// TODO Auto-generated method stub
?? ??? ?return newsList.size();
?? ?}

?? ?@Override
?? ?public Object getItem(int position) {
?? ??? ?// TODO Auto-generated method stub
?? ??? ?return newsList.get(position);
?? ?}

?? ?@Override
?? ?public long getItemId(int position) {
?? ??? ?// TODO Auto-generated method stub
?? ??? ?return position;
?? ?}

?? ?@Override
?? ?public View getView(int position, View convertView, ViewGroup parent) {
?? ??? ?// TODO Auto-generated method stub
?? ??? ?ViewHolder viewHolder;
?? ??? ?NewsBean itemBean;
?? ??? ?if (convertView == null) {
?? ??? ??? ?convertView = lInflater.inflate(R.layout.news_item, null);
?? ??? ??? ?viewHolder = new ViewHolder();
?? ??? ??? ?viewHolder.newsIconView = (ImageView) convertView.findViewById(R.id.newsIcon);
?? ??? ??? ?viewHolder.titleLb = (TextView) convertView.findViewById(R.id.newTitle);
?? ??? ??? ?viewHolder.subLb = (TextView) convertView.findViewById(R.id.newsSub);
?? ??? ??? ?convertView.setTag(viewHolder);
?? ??? ?}else {
?? ??? ??? ?viewHolder = (ViewHolder) convertView.getTag();
?? ??? ?}
?? ??? ?itemBean = newsList.get(position);
//?? ??? ?viewHolder.newsIconView.setBackgroundResource(R.drawable.ic_launcher);
//?? ??? ?viewHolder.newsIconView.setImageURI(new URI(itemBean.newsIcon));
//?? ??? ?new LoadImgUrl().setImgUrl(viewHolder.newsIconView, itemBean.newsIcon);
?? ??? ?mLoadImgurl.setImgUrl(viewHolder.newsIconView, itemBean.newsIcon,R.drawable.ic_launcher);
?? ??? ?viewHolder.titleLb.setText(itemBean.newsTitle);
?? ??? ?viewHolder.subLb.setText(itemBean.newSub);
?? ??? ?
?? ??? ?return convertView;
?? ?}
?? ?
?? ?
?? ?class ViewHolder{
?? ??? ?public ImageView newsIconView;
?? ??? ?public TextView titleLb;
?? ??? ?public TextView subLb;
?? ?}

}

0 回復(fù) 有任何疑惑可以回復(fù)我~
  1. threadMap可以用線程池代替,具體是哪個類記不清楚了,好像是ThreadPool

  2. 你這里沒必要用線程池(包括threadMap和我說的ThreadPool)

  3. 不太清楚你具體是怎么調(diào)用的,所以不敢妄言。不過只從當(dāng)前代碼看的話,你那個ThreadMap注釋掉你再試試?

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

囧恩_姜戈 提問者

注釋了還是一樣的
2016-10-22 回復(fù) 有任何疑惑可以回復(fù)我~
#2

親愛的Joe 回復(fù) 囧恩_姜戈 提問者

你怎么調(diào)用的啊?
2016-10-23 回復(fù) 有任何疑惑可以回復(fù)我~
#3

囧恩_姜戈 提問者 回復(fù) 親愛的Joe

下面是listview的adapter
2016-10-24 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消
Android必學(xué)-異步加載
  • 參與學(xué)習(xí)       50617    人
  • 解答問題       326    個

了解Android中的異步加載處理方法,這是面試問的最多的知識點(diǎn)

進(jìn)入課程

使用Thread加載圖片出現(xiàn)圖片閃動三次才加載對圖片

我要回答 關(guān)注問題
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號