package cn.riddles.activity; import android.app.Activity; import android.os.Bundle; import android.widget.ListView; public class MainActivity extends Activity { private ListView lv; @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.main); lv = (ListView) this .findViewById(R.id.test_lv); lv.setAdapter( new SongListAdapter( this )); } }
package cn.riddles.activity; import android.content.Context; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; /** * @author riddlezhang 歌曲条目适配器 */ public class SongListAdapter extends BaseAdapter { private static final String TAG = "SongListAdapter" ; private Context mContext; private String[] strings = { "王力宏" , "吴尊" , "何润东" , "金城武" , "吴彦祖" }; private String[] paths = { "http://list.image.baidu.com/t/image_category/galleryimg/menstar/hk/wang_li_hong.jpg" , "http://list.image.baidu.com/t/image_category/galleryimg/menstar/hk/wu_zun.jpg" , "http://list.image.baidu.com/t/image_category/galleryimg/menstar/hk/he_run_dong.jpg" , "http://list.image.baidu.com/t/image_category/galleryimg/menstar/hk/jin_cheng_wu.jpg" , "http://list.image.baidu.com/t/image_category/galleryimg/menstar/hk/wu_yan_zu.jpg" }; public SongListAdapter(Context mContext) { this .mContext = mContext; } public void setmContext(Context mContext) { this .mContext = mContext; } public int getCount() { return paths.length; } public Object getItem( int position) { return position; } public long getItemId( int position) { return position; } public View getView( int position, View convertView, ViewGroup parent) { convertView = LayoutInflater.from(mContext).inflate(R.layout.lv_adapter, null ); ImageView image = (ImageView) convertView.findViewById(R.id.image); TextView songer = (TextView) convertView.findViewById(R.id.songer); image.setTag(paths[position]); songer.setText(strings[position]); new CanvasImageTask().execute(image); //异步加载图片 Log.i(TAG, "execute:" +strings[position]); return convertView; } }
import java.io.InputStream; import java.lang.ref.SoftReference; import java.net.HttpURLConnection; import java.net.URL; import java.util.HashMap; import android.content.Context; import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.util.Log; import android.view.View; import android.webkit.URLUtil; /** * @author riddlezhang 异步加载图片 */ public class AsyncViewTask extends AsyncTask<View, Void, Drawable> { private View mView; private HashMap<String, SoftReference<Drawable>> imageCache; public AsyncViewTask(Context mContext, String mobileinfo) { imageCache = new HashMap<String, SoftReference<Drawable>>(); } protected Drawable doInBackground(View... views) { Drawable drawable = null ; View view = views[ 0 ]; if (view.getTag() != null ) { if (imageCache.containsKey(view.getTag())) { SoftReference<Drawable> cache = imageCache.get(view.getTag().toString()); drawable = cache.get(); if (drawable != null ) { return drawable; } } try { if (URLUtil.isHttpUrl(view.getTag().toString())) { // 如果为网络地址。则连接url下载图片 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(); } else { // 如果为本地数据,直接解析 drawable = Drawable.createFromPath(view.getTag().toString()); } } catch (Exception e) { Log.v( "img" , e.getMessage()); return null ; } } this .mView = view; return drawable; if(drawable !=null) { this .mView.setBackgroundDrawable(drawable); this .mView = null ; } } }

更多相关文章

  1. android中的Dialog的使用
  2. android webview实现拍照
  3. 关于android studio启动时加载项目gradle build出现错误的解决方
  4. android练习一之简易浏览器
  5. android 调用图库并显示选择的图片
  6. android 处理图片工具
  7. Android(安卓)Jetpack-Paging使用
  8. android 多点触摸实现图片缩放
  9. android 图片缩放

随机推荐

  1. Android 简单的网络变化监听器
  2. Android Studio多个Module依赖同一个jar
  3. 进度条2
  4. Android 手机相机自动对焦
  5. android 实现一直震动和间歇震动
  6. android 之一键root权限 快速刷机
  7. android AudioManager
  8. Android中从服务器端向客户端传数据
  9. android ExpandableListView的下拉刷新实
  10. Android PlayGame