Android Open Source - slider Image Cache






From Project

Back to project page slider.

License

The source code is released under:

Apache License

If you think the Android project slider 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 de.devisnik.android.sliding;
/*w ww.j av a 2s.c o  m*/
import java.io.Closeable;
import java.io.File;
import java.io.FileDescriptor;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Bitmap.CompressFormat;

public class ImageCache {
  private static final String CACHED_IMAGE = "cached_image";
  private static final String TAG = "ImageCache";
  private final File itsCacheDir;

  abstract class CacheFileCommand<RESULT, STREAM extends Closeable> {

    private final RESULT itsErrorResult;

    CacheFileCommand(final RESULT errorResult) {
      itsErrorResult = errorResult;
    }

    protected final File createCacheFile() {
      return new File(itsCacheDir, CACHED_IMAGE);
    }

    public final RESULT execute() {
      STREAM stream = null;
      File file = createCacheFile();
      try {
        stream = createStream(file);
        return execute(stream);
      } catch (FileNotFoundException e) {
        Logger.e(TAG, e.getMessage());
        return itsErrorResult;
      } finally {
        if (stream != null)
          try {
            getFD(stream).sync();
            stream.close();
          } catch (IOException e) {
            Logger.e(TAG, e.getMessage());
            e.printStackTrace();
          }
      }
    }

    abstract STREAM createStream(File file) throws FileNotFoundException;

    abstract FileDescriptor getFD(STREAM stream) throws IOException;

    abstract RESULT execute(STREAM stream);
  }

  private class WriteFileCommand extends CacheFileCommand<Boolean, FileOutputStream> {

    private final Bitmap itsBitmap;

    WriteFileCommand(final Bitmap bitmap) {
      super(Boolean.FALSE);
      itsBitmap = bitmap;
    }

    @Override
    FileOutputStream createStream(final File file) throws FileNotFoundException {
      return new FileOutputStream(file);
    }

    @Override
    FileDescriptor getFD(final FileOutputStream stream) throws IOException {
      return stream.getFD();
    }

    @Override
    Boolean execute(final FileOutputStream stream) {
      return itsBitmap.compress(CompressFormat.PNG, 100, stream);
    }
  }

  private class ReadFileCommand extends CacheFileCommand<Bitmap, FileInputStream> {

    ReadFileCommand() {
      super(null);
    }

    @Override
    FileInputStream createStream(final File file) throws FileNotFoundException {
      return new FileInputStream(file);
    }

    @Override
    Bitmap execute(final FileInputStream stream) {
      return BitmapFactory.decodeStream(stream);
    }

    @Override
    FileDescriptor getFD(final FileInputStream stream) throws IOException {
      return stream.getFD();
    }
  }

  public ImageCache(final File cacheDir) {
    itsCacheDir = cacheDir;
  }

  public boolean put(final Bitmap bitmap) {
    if (bitmap == null)
      return false;
    return new WriteFileCommand(bitmap).execute();
  }

  public Bitmap get() {
    return new ReadFileCommand().execute();
  }
}




Java Source Code List

de.devisnik.android.sliding.ARandom.java
de.devisnik.android.sliding.FPSCounter.java
de.devisnik.android.sliding.FrameDrawer.java
de.devisnik.android.sliding.ISpeed.java
de.devisnik.android.sliding.ImageCache.java
de.devisnik.android.sliding.ImageFactory.java
de.devisnik.android.sliding.Logger.java
de.devisnik.android.sliding.OpenActivity.java
de.devisnik.android.sliding.OpenPreviewActivity.java
de.devisnik.android.sliding.PropertiesBuilder.java
de.devisnik.android.sliding.RenderHandler.java
de.devisnik.android.sliding.Replayer.java
de.devisnik.android.sliding.Settings.java
de.devisnik.android.sliding.SlidingPreferences.java
de.devisnik.android.sliding.SlidingWallpaper.java
de.devisnik.android.sliding.SpeedFactory.java
de.devisnik.android.sliding.SummaryUpdater.java
de.devisnik.android.sliding.tile.BitmapCachingPieceDrawer.java
de.devisnik.android.sliding.tile.CachingPieceDrawer.java
de.devisnik.android.sliding.tile.IPieceDrawer.java
de.devisnik.android.sliding.tile.ImagePieceDrawer.java
de.devisnik.android.sliding.tile.NumberPieceDrawer.java
de.devisnik.android.sliding.tile.PieceDrawerFactory.java
de.devisnik.android.sliding.tile.TileShifter.java
de.devisnik.android.sliding.tile.TileStore.java
de.devisnik.android.sliding.tile.Tile.java
de.devisnik.sliding.FrameFactory.java
de.devisnik.sliding.FrameScrambler.java
de.devisnik.sliding.FromHomeShiftingEvent.java
de.devisnik.sliding.IFrameListener.java
de.devisnik.sliding.IFrame.java
de.devisnik.sliding.IHole.java
de.devisnik.sliding.IMove.java
de.devisnik.sliding.IPiece.java
de.devisnik.sliding.IRandom.java
de.devisnik.sliding.IRobotFrame.java
de.devisnik.sliding.IShifterListener.java
de.devisnik.sliding.MoveFactory.java
de.devisnik.sliding.Point.java
de.devisnik.sliding.ShiftingEvent.java
de.devisnik.sliding.ToHomeShiftingEvent.java
de.devisnik.sliding.animation.AccelerateDecelerateInterpolator.java
de.devisnik.sliding.animation.AnimationRunner.java
de.devisnik.sliding.animation.Animation.java
de.devisnik.sliding.animation.IInterpolator.java
de.devisnik.sliding.animation.IMovement.java
de.devisnik.sliding.animation.IShiftable.java
de.devisnik.sliding.animation.LinearInterpolator.java
de.devisnik.sliding.animation.MetaShiftable.java
de.devisnik.sliding.animation.ShiftAnimation.java
de.devisnik.sliding.animation.Translation.java
de.devisnik.sliding.impl.Frame.java
de.devisnik.sliding.impl.Hole.java
de.devisnik.sliding.impl.Move.java
de.devisnik.sliding.impl.PieceIterator.java
de.devisnik.sliding.impl.Piece.java
de.devisnik.sliding.impl.RobotFrame.java
de.devisnik.sliding.impl.Scrambler.java