/* * This function is strictly for use by internal APIs. Not that we have * anything external but there is some trickery here! The getBitmap function * cannot be invoked from the UI thread. Having to deal with complexity of * when & how to call this API is too much for those who just want to have * the bitmap. This is a utility function and is public because it is to be * shared by other components in the internal implementation. */ public Bitmap getBitmap( String serverUrl, boolean cacheBitmap, int bestWidth, int bestHeight, String source) { File f = mFileCache.getFile(serverUrl); // from SD cache Bitmap b = decodeFile(f, bestHeight, bestWidth, source); if (b != null) { Logging.i(TAG, "Image Available in SD card: ", false, classLevelLogEnabled); if (cacheBitmap) mAisleImagesCache.putBitmap(serverUrl, b); return b; } // from web try { if (serverUrl == null || serverUrl.length() < 1) { return null; } Logging.i( TAG, "Image DownLoad Time starts At: " + System.currentTimeMillis(), false, classLevelLogEnabled); Bitmap bitmap = null; URL imageUrl = new URL(serverUrl); HttpURLConnection conn = (HttpURLConnection) imageUrl.openConnection(); conn.setConnectTimeout(30000); conn.setReadTimeout(30000); conn.setInstanceFollowRedirects(true); InputStream is = conn.getInputStream(); int hashCode = serverUrl.hashCode(); String filename = String.valueOf(hashCode); OutputStream os = new FileOutputStream(f); Utils.CopyStream(is, os); os.close(); Logging.i( TAG, "Image DownLoad Time Ends At: " + System.currentTimeMillis(), false, classLevelLogEnabled); Logging.i( TAG, "Bitmap Decode Time Starts At: " + System.currentTimeMillis(), false, classLevelLogEnabled); bitmap = decodeFile(f, bestHeight, bestWidth, source); Logging.i( TAG, "Bitmap Decode Time Ends At: " + System.currentTimeMillis(), false, classLevelLogEnabled); if (cacheBitmap) mAisleImagesCache.putBitmap(serverUrl, bitmap); return bitmap; } catch (Throwable ex) { ex.printStackTrace(); if (ex instanceof OutOfMemoryError) { // mAisleImagesCache.evictAll(); } return null; } }
private BitmapLoaderUtils() { // mContext = context; mFileCache = AnchoredContext.getInstance().getFileCache(); mAisleImagesCache = BitmapLruCache.getInstance(AnchoredContext.getInstance()); // DisplayMetrics metrics = mContext.getResources().getDisplayMetrics(); // mScreenWidth = metrics.widthPixels; // mExecutorService = Executors.newFixedThreadPool(5); }
private class AlubumListViewAdapter extends ArrayAdapter<ListviewAlubumData> { RequestQueue mRequestQueue = Volley.newRequestQueue(AlbumListView.this); private ImageLoader imageLoader = new ImageLoader(mRequestQueue, new BitmapLruCache(BitmapLruCache.getDefaultLruCacheSize())); private RelativeLayout.LayoutParams params; private int imageHeigthAndWidth[]; private Activity mActivity; Typeface HelveticaLTStd_Light = Typeface.createFromAsset(getAssets(), "fonts/HelveticaLTStd-Light.otf"); private LayoutInflater mInflater; public AlubumListViewAdapter( Activity context, List<ListviewAlubumData> objects, int imageHeigthAndWidth[]) { super(context, R.layout.alubumlistviewitem, objects); // TODO Auto-generated constructor stub mActivity = context; mInflater = (LayoutInflater) mActivity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); this.imageHeigthAndWidth = imageHeigthAndWidth; Ultilities ultilities = new Ultilities(); // params=ultilities.getRelativelayoutParams(imageHeigthAndWidth[1], // imageHeigthAndWidth[0]); // params.addRule(RelativeLayout.CENTER_HORIZONTAL); // params.addRule(RelativeLayout.CENTER_VERTICAL); /* * params.addRule(RelativeLayout.); params.setMargins(5, 0, 0, 0); */ } @Override public int getCount() { // TODO Auto-generated method stub return super.getCount(); } @Override public ListviewAlubumData getItem(int position) { // TODO Auto-generated method stub return super.getItem(position); } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub ViewHolder holder; // TODO Auto-generated method stub- if (convertView == null) { holder = new ViewHolder(); convertView = mInflater.inflate(R.layout.alubumlistviewitem, null); holder.imageview = (NetworkImageView) convertView.findViewById(R.id.albumlistviewitemImageview); holder.imageview.setImageResource(R.drawable.multi_user_icon); holder.textview = (TextView) convertView.findViewById(R.id.albumlistviewitemTextView); holder.photocount = (TextView) convertView.findViewById(R.id.photocount); holder.textview.setTypeface(HelveticaLTStd_Light); holder.photocount.setTypeface(HelveticaLTStd_Light); holder.textview.setTextColor(Color.rgb(105, 105, 105)); holder.photocount.setTextColor(Color.rgb(153, 153, 153)); // holder.alubumitemimageViewParent = // (RelativeLayout)convertView.findViewById(R.id.alubumitemimageViewParent); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); holder.imageview.setImageResource(R.drawable.multi_user_icon); } holder.textview.setId(position); holder.imageview.setId(position); holder.photocount.setId(position); // holder.alubumitemimageViewParent.setId(position); // holder.imageview.setLayoutParams(params); holder.photocount.setText("" + getItem(position).getPhotoCount() + " Photos"); holder.textview.setText("" + getItem(position).getAlubumName()); holder.imageview.setImageResource(R.drawable.multi_user_icon); // holder.imageview.setImageUrl(getItem(position).getPickUrl(), // imageLoader,"AlubumLisView",AlbumListView.this); holder.imageview.setImageUrl(getItem(position).getPickUrl(), imageLoader); // if (getItem(position).getmBitmap()!=null) // { // // // holder.mProgressBar.setVisibility(View.GONE); // holder.imageview.setImageBitmap( // Bitmap.createScaledBitmap(getItem(position).getmBitmap(), // imageHeigthAndWidth[1], imageHeigthAndWidth[0], false)); // } // else // { // // } return convertView; } class ViewHolder { NetworkImageView imageview; TextView textview; TextView photocount; RelativeLayout alubumitemimageViewParent; } }