diff options
Diffstat (limited to 'src/com/android/camera/data/LocalData.java')
-rw-r--r-- | src/com/android/camera/data/LocalData.java | 102 |
1 files changed, 95 insertions, 7 deletions
diff --git a/src/com/android/camera/data/LocalData.java b/src/com/android/camera/data/LocalData.java index 9f9be8e80..9ebc9caa3 100644 --- a/src/com/android/camera/data/LocalData.java +++ b/src/com/android/camera/data/LocalData.java @@ -21,6 +21,7 @@ import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Matrix; +import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.media.MediaMetadataRetriever; import android.os.AsyncTask; @@ -32,6 +33,7 @@ import android.view.View; import android.widget.ImageView; import com.android.camera.ui.FilmStripView; +import com.android.gallery3d.R; import java.util.Comparator; import java.util.Date; @@ -39,7 +41,7 @@ import java.util.Date; /* An abstract interface that represents the local media data. Also implements * Comparable interface so we can sort in DataAdapter. */ -abstract interface LocalData extends FilmStripView.ImageData { +public abstract interface LocalData extends FilmStripView.ImageData { static final String TAG = "LocalData"; abstract View getView(Context c, int width, int height, Drawable placeHolder); @@ -123,19 +125,23 @@ abstract interface LocalData extends FilmStripView.ImageData { return false; } - @Override - public View getView(Context c, + protected ImageView getImageView(Context c, int decodeWidth, int decodeHeight, Drawable placeHolder) { ImageView v = new ImageView(c); - v.setImageDrawable(placeHolder); + v.setBackground(placeHolder); - v.setScaleType(ImageView.ScaleType.FIT_XY); BitmapLoadTask task = getBitmapLoadTask(v, decodeWidth, decodeHeight); task.execute(); return v; } @Override + public View getView(Context c, + int decodeWidth, int decodeHeight, Drawable placeHolder) { + return getImageView(c, decodeWidth, decodeHeight, placeHolder); + } + + @Override public void prepare() { synchronized (mUsing) { mUsing = true; @@ -179,8 +185,9 @@ abstract interface LocalData extends FilmStripView.ImageData { Log.e(TAG, "Failed decoding bitmap for file:" + path); return; } - mView.setScaleType(ImageView.ScaleType.FIT_XY); - mView.setImageBitmap(bitmap); + BitmapDrawable d = new BitmapDrawable(bitmap); + d.setGravity(android.view.Gravity.FILL); + mView.setBackground(d); } } } @@ -403,6 +410,15 @@ abstract interface LocalData extends FilmStripView.ImageData { } @Override + public View getView(Context c, + int decodeWidth, int decodeHeight, Drawable placeHolder) { + ImageView v = getImageView(c, decodeWidth, decodeHeight, placeHolder); + v.setImageResource(R.drawable.ic_control_play); + v.setScaleType(ImageView.ScaleType.CENTER); + return v; + } + + @Override protected BitmapLoadTask getBitmapLoadTask( ImageView v, int decodeWidth, int decodeHeight) { return new VideoBitmapLoadTask(v); @@ -438,5 +454,77 @@ abstract interface LocalData extends FilmStripView.ImageData { } } } + + /* + * A LocalData that does nothing but only shows a view. + */ + public static class LocalViewData implements LocalData { + private int mWidth; + private int mHeight; + View mView; + private long mDateTaken; + private long mDateModified; + + public LocalViewData(View v, + int width, int height, + int dateTaken, int dateModified) { + mView = v; + mWidth = width; + mHeight = height; + mDateTaken = dateTaken; + mDateModified = dateModified; + } + + @Override + public long getDateTaken() { + return mDateTaken; + } + + @Override + public long getDateModified() { + return mDateModified; + } + + @Override + public String getTitle() { + return ""; + } + + @Override + public int getWidth() { + return mWidth; + } + + @Override + public int getHeight() { + return mHeight; + } + + @Override + public int getType() { + return FilmStripView.ImageData.TYPE_PHOTO; + } + + @Override + public boolean isActionSupported(int action) { + if (action == FilmStripView.ImageData.ACTION_PLAY) return true; + return false; + } + + @Override + public View getView(Context c, int width, int height, Drawable placeHolder) { + return mView; + } + + @Override + public void prepare() { + // do nothing. + } + + @Override + public void recycle() { + // do nothing. + } + } } |