android网上下载图片存在本地并在Listview上显示

来源:互联网 发布:文怡小虫淘宝 编辑:程序博客网 时间:2024/04/30 07:23
 注:

内含搜索功能,因为公司项目所以不展示

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.ScrollView;
import android.widget.TextView;

import com.beem.project.beem.R;

public class PhoinixAddContact extends Activity implements OnClickListener,OnTouchListener {

 private PhoinixSearchEditText text;
 private TextView ok_btn;
 private TextView total_tv;
 private ImageButton operate_btn;
 private ListView contact_list;
 private ProgressDialog dig;
 listViewAdapter adapter;
 private ScrollView scrollview;
    private int i=0;   //listview显示的个数
    private int total;  //总共的数据个数
    LinearLayout.LayoutParams linearParams;
    ProgressBar progressbar;
   
 final Handler handler = new Handler();
 
 final Runnable UpdateResults = new Runnable() {
     public void run() {
      updateUI();
     }
  };
 
 final Runnable UpdateProgress = new Runnable() {
      public void run() {
       updateProgress();
      }
   };
  
 public PhoinixAddContact(){
  
 }
 
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.phoinix_add_contact);
  findView();
  setListener();
  adapter=new listViewAdapter();
  contact_list.setAdapter(adapter);
 }
 
 public void findView(){
  text=(PhoinixSearchEditText)findViewById(R.id.phoinix_search_friend_text);
  ok_btn=(TextView)findViewById(R.id.phoinix_search_friend_ok);
  operate_btn=(ImageButton)findViewById(R.id.phoinix_search_friend_operate_btn);
  contact_list=(ListView)findViewById(R.id.phoinix_search_contact_list);
  total_tv=(TextView)findViewById(R.id.phoinix_search_total_text);
  scrollview=(ScrollView)findViewById(R.id.scrollview);
  progressbar=(ProgressBar)findViewById(R.id.progressbar);
 }

 public void setListener(){
  text.addTextChangedListener(watcher); 
  ok_btn.setOnClickListener(this);
  operate_btn.setOnClickListener(this);
  scrollview.setOnTouchListener(this);
 }
 
 @Override
 public void onClick(View v) {
  // TODO Auto-generated method stub
  switch(v.getId()){
      case R.id.phoinix_search_friend_operate_btn:
        operateClick();
        break;
      case R.id.phoinix_search_friend_ok:
        okClick(v);
        break;
    
  }
 }
 
 public void operateClick(){
  if(!text.getText().toString().equals("")){
   text.setText("");
   operate_btn.setBackgroundResource(R.color.white);
  }
 }
 
 //监听文本框事件
 private TextWatcher watcher = new TextWatcher(){

  @Override
  public void afterTextChanged(Editable s) {
   // TODO Auto-generated method stub
  }

  @Override
  public void beforeTextChanged(CharSequence s, int start, int count,
    int after) {
   // TODO Auto-generated method stub
   
  }

  @Override
  public void onTextChanged(CharSequence s, int start, int before,
    int count) {
   // TODO Auto-generated method stub
   if(!text.getText().toString().equals("")){
    operate_btn.setBackgroundResource(R.drawable.phoinix_icon_delete);
   }
   else if(text.getText().toString().equals("")){
    operate_btn.setBackgroundResource(R.color.white);
   }
  }  
          
    };
   
    //点击查找按钮
    public void okClick(View v){
     if(text.getText().toString().equals("")){
      operate_btn.setBackgroundResource(R.drawable.phoinix_ico_wrong);
      PhoinixWarnPopupWindow pop=new PhoinixWarnPopupWindow(v);
      pop.showLikeQuickAction(0,-400);
     }
     else{
      dig= ProgressDialog.show(PhoinixAddContact.this, "查询中...", "请稍等...", true, false);
      i=10;
      new Thread(){ 
        
                @Override 
                public void run() { 
                 try {
      Thread.sleep(3000);
      dig.dismiss();
      handler.post(UpdateResults);
      
     } catch (InterruptedException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     } 
                }}.start();
                linearParams = (LinearLayout.LayoutParams) contact_list.getLayoutParams();
          
          String[] strings={"name1","name2","name3","name4","name5","name6","name7","name8","name9","name10","name11",
                      "name2","name3","name4","name5","name6","name7","name8","name9","name10","name3","name4","name5","name6","name7","name8","name9","name10",
                      "name3","name4","name5","name6","name7","name8","name9","name10"};
       String[] paths = new String[strings.length];
       total=strings.length;
       linearParams.height = (730/10)*i;
       contact_list.setLayoutParams(linearParams);
       adapter.strings=strings;
       adapter.paths=paths;
       total_tv.setText("总共有"+strings.length+"人");
       adapter.notifyDataSetChanged();
       contact_list.setVisibility(View.VISIBLE);
     }
    }
   //重新赋值,显示头像
    public void updateUI(){
     String[] paths = {"http://www.qqgexingwu.cn/uploads/allimg/101108/23515T112-0.gif",
             "http://www.qqgexingwu.cn/uploads/allimg/101108/23515S555-1.gif",
                "http://www.qqjay.com/uploads/allimg/090524/1U5294193-15.gif",
             "http://www.qqwmh.com/qqtx/UploadPic/2010-4/2010427132957697.gif",
             "http://www.qqwmh.com/qqtx/UploadPic/2010-4/2010427132959127.gif",
             "http://www.qqwmh.com/qqtx/UploadPic/2010-4/2010427132957538.gif",
             "http://www.qqwmh.com/qqtx/UploadPic/2010-4/2010427132959605.gif",
                "http://www.qqwmh.com/qqtx/UploadPic/2010-4/2010427132958829.gif",
             "http://www.qqwmh.com/qqtx/UploadPic/2010-4/2010427132955272.gif",
             "http://www.qqwmh.com/qqtx/UploadPic/2010-4/201042713301726.gif",
             "http://www.qqwmh.com/qqtx/UploadPic/2010-4/201042713301726.gif",
             "http://www.qqjay.com/uploads/allimg/090524/1U5294193-15.gif",
             "http://www.qqwmh.com/qqtx/UploadPic/2010-4/2010427132957697.gif",
             "http://www.qqwmh.com/qqtx/UploadPic/2010-4/2010427132959127.gif",
             "http://www.qqwmh.com/qqtx/UploadPic/2010-4/2010427132957538.gif",
             "http://www.qqwmh.com/qqtx/UploadPic/2010-4/2010427132959605.gif",
                "http://www.qqwmh.com/qqtx/UploadPic/2010-4/2010427132958829.gif",
             "http://www.qqwmh.com/qqtx/UploadPic/2010-4/2010427132955272.gif",
             "http://www.qqwmh.com/qqtx/UploadPic/2010-4/201042713301726.gif",
             "http://www.qqwmh.com/qqtx/UploadPic/2010-4/201042713301726.gif",
             "http://www.qqwmh.com/qqtx/UploadPic/2010-4/2010427132957697.gif",
             "http://www.qqwmh.com/qqtx/UploadPic/2010-4/2010427132959127.gif",
             "http://www.qqwmh.com/qqtx/UploadPic/2010-4/2010427132957538.gif",
             "http://www.qqwmh.com/qqtx/UploadPic/2010-4/2010427132959605.gif",
                "http://www.qqwmh.com/qqtx/UploadPic/2010-4/2010427132958829.gif",
             "http://www.qqwmh.com/qqtx/UploadPic/2010-4/2010427132955272.gif",
             "http://www.qqwmh.com/qqtx/UploadPic/2010-4/201042713301726.gif",
             "http://www.qqwmh.com/qqtx/UploadPic/2010-4/201042713301726.gif",
             "http://www.qqwmh.com/qqtx/UploadPic/2010-4/2010427132957697.gif",
             "http://www.qqwmh.com/qqtx/UploadPic/2010-4/2010427132959127.gif",
             "http://www.qqwmh.com/qqtx/UploadPic/2010-4/2010427132957538.gif",
             "http://www.qqwmh.com/qqtx/UploadPic/2010-4/2010427132959605.gif",
                "http://www.qqwmh.com/qqtx/UploadPic/2010-4/2010427132958829.gif",
             "http://www.qqwmh.com/qqtx/UploadPic/2010-4/2010427132955272.gif",
             "http://www.qqwmh.com/qqtx/UploadPic/2010-4/201042713301726.gif",
             "http://www.qqwmh.com/qqtx/UploadPic/2010-4/201042713301726.gif"};
     adapter.paths=paths;
     adapter.notifyDataSetChanged();
    }

    public void updateProgress(){
     progressbar.setVisibility(View.GONE);
     linearParams.height = (730/10)*i;
  adapter.notifyDataSetChanged();
    }
   
    public void ProgressThread(){
     new Thread(){ 
    
            @Override 
            public void run() { 
             try {
     Thread.sleep(2000);
     handler.post(UpdateProgress);
     
    } catch (InterruptedException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    } 
            }}.start();
    }
   
    //提示窗体
    private  class PhoinixWarnPopupWindow extends BetterPopupWindow implements OnClickListener {
  public PhoinixWarnPopupWindow(View anchor) {
   super(anchor);
  }

  @Override
  protected void onCreate() {
   // inflate layout
   LayoutInflater inflater =(LayoutInflater) this.anchor.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View view = inflater.inflate(R.layout.phoinix_contact_warn_dialog, null);  
   this.setContentView(view);
  }

  @Override
  public void onClick(View v) {
   // TODO Auto-generated method stub
   
  }
 }
   
    //listViewAdapter
    class listViewAdapter extends BaseAdapter { 
       
     private int count; 
        private ImageView img_head;
     private TextView name_tv;
     private ImageView img_add;

     private String[] strings = {""};
     private String[] paths = {""};
     
        listViewAdapter(){
         
        }
       
        public int getCount() { 
            count=i;
         return count; 
        } 
 
        public Object getItem(int pos) {   
            return pos; 
        } 
 
        public long getItemId(int pos) { 
            return pos; 
        } 
 
        public View getView(int position, View view, ViewGroup p) { 
 
         LayoutInflater inflater=LayoutInflater.from(PhoinixAddContact.this);
            view=inflater.inflate(R.layout.phoinix_search_contact_list, null);
           
            img_head=(ImageView) view.findViewById(R.id.phoinix_search_contact_image);
            img_add=(ImageView) view.findViewById(R.id.phoinix_search_contact_add);
            name_tv=(TextView) view.findViewById(R.id.phoinix_search_contact_name);
  
            img_head.setTag(paths[position]);
            name_tv.setText(strings[position]);
            new CanvasImageTask().execute(img_head);
            img_head.setDrawingCacheEnabled(true);

            return view; 
        } 
    }
  
    //异步处理远程图片
    public class CanvasImageTask extends AsyncTask<ImageView, Void, Drawable> {
        private ImageView gView;

        protected Drawable doInBackground(ImageView... views) {
         Drawable drawable = null;
                ImageView view = views[0];
                // 根据iconUrl获取图片并渲染,iconUrl的url放在了view的tag中。
                if (view.getTag() != null) {
                        try {
                                URL url = new URL(view.getTag().toString());
                                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                                conn.setDoInput(true);
                                conn.connect();
                                InputStream stream = conn.getInputStream();
                                drawable = Drawable.createFromStream(stream, "src");
                                stream.close();
                        } catch (Exception e) {
                                Log.v("img", e.getMessage());
                                return null;
                        }
                }
                this.gView = view;
                return drawable;
        }

        protected void onPostExecute(Drawable drawable) {
                if (drawable != null) {
                                                //此处更新图片
                        this.gView.setBackgroundDrawable(drawable);
                        this.gView = null;
                }
        }
 }

 @Override
 public boolean onTouch(View v, MotionEvent event) {
  // TODO Auto-generated method stub
  if(event.getAction()==MotionEvent.ACTION_DOWN){   
   if(i<=total-(total-10)%6-6){
    progressbar.setVisibility(View.VISIBLE);
    i+=6;
    ProgressThread();
   }
   else if(i==total-(total-10)%6){
    progressbar.setVisibility(View.VISIBLE);
    i+=(total-10)%6;
    ProgressThread();    
   }
   else{
    i=total;
   }
  }
  return false;
 }
}

 

原创粉丝点击