Android Open Source - android-gskbyte-utils Async Image View






From Project

Back to project page android-gskbyte-utils.

License

The source code is released under:

GNU Lesser General Public License

If you think the Android project android-gskbyte-utils 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 org.gskbyte.view;
/*from  w w  w. j  a  v  a 2  s .c o  m*/
import org.gskbyte.R;
import org.gskbyte.bitmap.AbstractBitmapManager;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.ProgressBar;

/**
 * ImageView that supports loading of bitmaps in background.
 * Shows a ProgressBar if the file needs to be loaded.
 * 
 * Provides interaction with BitmapManager to ease loading of files even more.
 * 
 * TODO improve method documentation
 * */

public class AsyncImageView
extends FrameLayout
implements AbstractBitmapManager.BackgroundLoadListener
{

private ImageView imageView;
private ProgressBar progressBar;
private volatile boolean loading;
private volatile String path;

public AsyncImageView(Context context, AttributeSet attrs, int defStyle)
{
    super(context, attrs, defStyle);
    commonInit(context);
}

public AsyncImageView(Context context, AttributeSet attrs)
{
    super(context, attrs);
    commonInit(context);
}

private void commonInit(Context context)
{
    LayoutInflater.from(context).inflate(R.layout.async_imageview, this, true);
    imageView = (ImageView) findViewById(R.id.asyncimageview_image);
    progressBar = (ProgressBar) findViewById(R.id.asyncimageview_progress_bar);
    
    setLoading(true);
}

public boolean isLoading()
{ return this.loading; }

public synchronized void setLoading(boolean loading)
{
    this.loading = loading;
    if( !isInEditMode() ) {
        imageView.setVisibility(loading ? GONE : VISIBLE);
        progressBar.setVisibility(loading ? VISIBLE : GONE);
    }
}

public ImageView getInternalImageView()
{ return this.imageView; }

public Drawable getDrawable()
{
    return imageView.getDrawable();
}

private synchronized void setBitmap(Bitmap bitmap)
{
    if(bitmap != null && !bitmap.isRecycled()) {
        setLoading(false);
        imageView.setImageBitmap(bitmap);
    } else {
        imageView.setVisibility( GONE );
        progressBar.setVisibility( GONE );
    }
}

public synchronized void setImageBitmap(AbstractBitmapManager manager, String path)
{
    this.path = path;
    Bitmap bitmap = manager.getInBackground(path, this);
    if(bitmap != null) {
        setBitmap(bitmap);
    } else {
        setLoading(true);
    }
}

public void setImageBitmap(Bitmap b)
{
    setLoading(false);
    imageView.setImageBitmap(b);
}

public void setImageResource(int res)
{
    setLoading(false);
    imageView.setImageResource(res);
}


@Override
public synchronized void bitmapLoadedInManager(Bitmap bitmap, String loadedPath, AbstractBitmapManager manager)
{
    if(loadedPath.equals(this.path)) {
        setBitmap(bitmap);
    }
}

}




Java Source Code List

com.woozzu.android.widget.IndexScroller.java
com.woozzu.android.widget.IndexableListView.java
org.gskbyte.FragmentWrapperActivity.java
org.gskbyte.animation.ExpandAnimation.java
org.gskbyte.bitmap.AbstractBitmapManager.java
org.gskbyte.bitmap.BitmapColorizer.java
org.gskbyte.bitmap.BitmapManager.java
org.gskbyte.bitmap.CachedBitmapColorizer.java
org.gskbyte.bitmap.IndexedBitmaps.java
org.gskbyte.bitmap.LRUBitmapCache.java
org.gskbyte.bitmap.LRUBitmapManager.java
org.gskbyte.bitmap.PrivateBitmapManager.java
org.gskbyte.bitmap.ReferencedBitmaps.java
org.gskbyte.collection.ArrayHashMap.java
org.gskbyte.collection.DoubleSparseArray.java
org.gskbyte.collection.ListHashMap.java
org.gskbyte.dialog.DownloadDialogFragment.java
org.gskbyte.dialog.LoadDialogFragment.java
org.gskbyte.dialog.OpenLinkDialogBuilder.java
org.gskbyte.dialog.PickerDialogFragment.java
org.gskbyte.download.DiskDownload.java
org.gskbyte.download.DownloadManager.java
org.gskbyte.download.Download.java
org.gskbyte.download.MemoryDownload.java
org.gskbyte.drawable.AutoBackgroundButtonDrawable.java
org.gskbyte.listener.IListenable.java
org.gskbyte.listener.ListenableNG.java
org.gskbyte.listener.Listenable.java
org.gskbyte.preferences.DialogSeekBarPreference.java
org.gskbyte.preferences.InlineSeekBarPreference.java
org.gskbyte.remote.AsyncURLRequest.java
org.gskbyte.remote.URLRequest.java
org.gskbyte.tasks.QueuedTaskExecutor.java
org.gskbyte.tasks.TaskStep.java
org.gskbyte.tasks.Task.java
org.gskbyte.ui.ArrayAdapterWithDefaultValue.java
org.gskbyte.ui.ListAdapter.java
org.gskbyte.ui.ColorDialog.ColorDialog.java
org.gskbyte.ui.ColorDialog.ColorPreference.java
org.gskbyte.ui.iconifiedMainMenuList.EntryView.java
org.gskbyte.ui.iconifiedMainMenuList.MainMenuAdapter.java
org.gskbyte.ui.iconifiedMainMenuList.MenuEntry.java
org.gskbyte.util.FrequentIntents.java
org.gskbyte.util.IOUtils.java
org.gskbyte.util.Logger.java
org.gskbyte.util.OpenFileHandlerFactory.java
org.gskbyte.util.OpenFileHandler.java
org.gskbyte.util.XmlUtils.java
org.gskbyte.view.AsyncImageView.java
org.gskbyte.view.AutoBackgroundButton.java
org.gskbyte.view.AutoBackgroundImageButton.java
org.gskbyte.view.AutoHeightImageView.java
org.gskbyte.view.ExpandedGridView.java
org.gskbyte.view.ExpandedListView.java
org.gskbyte.view.FontUtil.java
org.gskbyte.view.FontableButton.java
org.gskbyte.view.FontableCheckBox.java
org.gskbyte.view.FontableEditText.java
org.gskbyte.view.FontableTextView.java
org.gskbyte.view.FullWidthImageView.java
org.gskbyte.view.ProportionalHeightLayout.java
org.gskbyte.view.PullToRefreshListView.java
org.gskbyte.view.SquaredLayout.java
org.gskbyte.view.StepSeekBar.java
org.gskbyte.view.TextViewUtil.java
org.gskbyte.view.ViewUtils.java