Android Open Source - UltraExplorer Drawable Manager






From Project

Back to project page UltraExplorer.

License

The source code is released under:

GNU General Public License

If you think the Android project UltraExplorer listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.mirrorlabs.filebrowser;
// www .  java 2 s  . com
import java.util.Collections;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import android.app.Activity;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.ImageView;


public class DrawableManager {
  
  static final String TAG = "DrawableManager";
  
  private  ConcurrentMap<String, Drawable> cache;
  private   ExecutorService pool;  
  private Activity activity;
    private  Map<ImageView, String> imageViews = Collections  
              .synchronizedMap(new ConcurrentHashMap<ImageView, String>());  
  private static Drawable placeholder;
   
    
    public DrawableManager(Activity activity) {
          this.activity = activity;
      }


  DrawableManager(){
    cache = new ConcurrentHashMap<String, Drawable>();  
      pool = Executors.newFixedThreadPool(5); 
  
   }

public static void setPlaceholder(Drawable drawable) {  
    placeholder = drawable;  
}  

public void clearCache(){
  cache.clear();
}

public  Drawable getDrawableFromCache(String url) {  
    if (cache.containsKey(url)) {  
        return cache.get(url); 
    }  

    return null;  
}  

public void queueJob(final String url, final ImageView imageView) {  
    /* Create handler in UI thread. */  
    final   Handler handler = new Handler() {  
        @Override  
        public void handleMessage(Message msg) {  
            String tag = imageViews.get(imageView);  
            if (tag != null && tag.equals(url)) {  
                if (msg.obj != null) {  
                    imageView.setImageDrawable((Drawable) msg.obj);  
                } else {  
                    imageView.setImageDrawable(placeholder);  
                    Log.d(null, "fail " + url);  
                }  
            }  
        }  
    };  

    pool.submit(new Runnable() {  
        public void run() {  
            final Drawable drawable = getapkicon(url);
            Message message = Message.obtain();  
            message.obj = drawable;  
            Log.d(null, "Item downloaded: " + url);  

            handler.sendMessage(message);  
        }  
    });  
}  



public void loadDrawable(final String url, final ImageView imageView) {  
    imageViews.put(imageView, url);  
    Drawable drawable = getDrawableFromCache(url); 

    // check in UI thread, so no concurrency issues  
    if (drawable != null) {  
        Log.d(null, "Item loaded from cache: " + url);  
        imageView.setImageDrawable(drawable);  
    } else {  
        imageView.setImageDrawable(placeholder);  
        queueJob(url, imageView);  
    }  
}  


public  Drawable getapkicon(String url){
  
   
  Drawable icon ;
  icon = getDrawableFromCache(url);
  if(icon!=null){
    return icon;
  }
  
  else{
    String filePath = url;
    try{
    PackageInfo packageInfo = activity.getPackageManager().getPackageArchiveInfo(filePath, PackageManager.GET_ACTIVITIES);
    ApplicationInfo appInfo = packageInfo.applicationInfo;
   
   
    if (Build.VERSION.SDK_INT >= 5) {
       appInfo.sourceDir = filePath;
       appInfo.publicSourceDir = filePath;
   
   
       icon = appInfo.loadIcon(activity.getPackageManager());
     Bitmap bitmap = ((BitmapDrawable) icon).getBitmap();
         int dp5 = (int)(75*activity.getResources().getDisplayMetrics().density);

     icon= new BitmapDrawable(Bitmap.createScaledBitmap(bitmap, dp5, dp5, true));
       }
     else {
      icon = activity.getResources().getDrawable(R.drawable.apk_file);
     
     }
   
    
   
  cache.put(url, icon);
  return icon;
   }
   catch (Exception e) {
    // TODO: handle exception
     return activity.getResources().getDrawable(R.drawable.apk_file);
       }
   }

  
 
}
}




Java Source Code List

com.android.gestures.CreateGestureActivity.java
com.android.gestures.GestureBuilderActivity.java
com.android.gestures.GestureMonitorActivity.java
com.markupartist.android.widget.ActionBar.java
com.markupartist.android.widget.ScrollingTextView.java
com.mirrorlabs.customcheckboxwidget.DontPressWithParentCheckBox.java
com.mirrorlabs.customtoast.Toaster.java
com.mirrorlabs.filebrowser.BackupManager.java
com.mirrorlabs.filebrowser.BaseActivity.java
com.mirrorlabs.filebrowser.BitmapManager.java
com.mirrorlabs.filebrowser.BookmarksProvider.java
com.mirrorlabs.filebrowser.CMDProcessor.java
com.mirrorlabs.filebrowser.CompressManager.java
com.mirrorlabs.filebrowser.DesEncrypter.java
com.mirrorlabs.filebrowser.DrawableManager.java
com.mirrorlabs.filebrowser.DrawableThreadLoader.java
com.mirrorlabs.filebrowser.DuplicatesManager.java
com.mirrorlabs.filebrowser.ExtractManager.java
com.mirrorlabs.filebrowser.FileUtils.java
com.mirrorlabs.filebrowser.FilebrowserULTRAActivity.java
com.mirrorlabs.filebrowser.ImageThreadLoader.java
com.mirrorlabs.filebrowser.LinuxShell.java
com.mirrorlabs.filebrowser.MimeTypes.java
com.mirrorlabs.filebrowser.MyApplication.java
com.mirrorlabs.filebrowser.PDFViewer.java
com.mirrorlabs.filebrowser.PreferenceActivity.java
com.mirrorlabs.filebrowser.ProcessManager.java
com.mirrorlabs.filebrowser.RootUtils.java
com.mirrorlabs.filebrowser.SearchFilesDialog.java
com.mirrorlabs.filebrowser.SearchFilesWidget.java
com.mirrorlabs.filebrowser.UltraBaseAdapter.java
com.mirrorlabs.imageviewer.EclairMotionEvent.java
com.mirrorlabs.imageviewer.ExpandImage.java
com.mirrorlabs.imageviewer.TouchImageView.java
com.mirrorlabs.imageviewer.WrapMotionEvent.java
com.mirrorlabs.menupopup.MenuItem.java
com.mirrorlabs.menupopup.PopupMenu.java
com.mirrorlabs.musicplayer.DBHelper.java
com.mirrorlabs.musicplayer.PlayerActivity.java
com.mirrorlabs.quickaction3D.ActionItem.java
com.mirrorlabs.quickaction3D.PopupWindows.java
com.mirrorlabs.quickaction3D.QuickAction.java
com.mirrorlabs.quickaction.ActionItem.java
com.mirrorlabs.quickaction.PopupWindows.java
com.mirrorlabs.quickaction.QuickAction.java
com.mirrorlabs.ui.widgets.ClickableSlidingDrawer.java
com.mirrorlabs.ui.widgets.DropDownMenu.java
com.mirrorlabs.ui.widgets.IcsListPopupWindow.java
com.mirrorlabs.ui.widgets.JavaYoutubeDownloader.java
com.mirrorlabs.ui.widgets.Panel.java
com.mirrorlabs.ui.widgets.ScrollPager.java
com.mirrorlabs.ui.widgets.SlidingFrameLayout.java
com.mirrorlabs.widgets.ExampleAppWidgetProvider1.java
com.mirrorlabs.widgets.ExampleAppWidgetProvider.java
com.mirrorlabs.widgets.UpdateWidgetService1.java
com.mirrorlabs.widgets.UpdateWidgetService.java
org.zeroxlab.widget.AnimationLayout.java
org.zeroxlab.widget.MyHorizontalScrollView.java