diff options
author | John Reck <jreck@google.com> | 2013-02-26 15:19:30 -0800 |
---|---|---|
committer | John Reck <jreck@google.com> | 2013-02-26 17:33:36 -0800 |
commit | 5c9eeb4916824dcce3a2271d5677a9a925a35938 (patch) | |
tree | 937c45e4f6a993e976b70d37a54f83ff42c78b34 /src/com/android/photos/PhotoSetFragment.java | |
parent | 02ef5ba117462eda524820b6004f84d26b28f647 (diff) | |
download | android_packages_apps_Snap-5c9eeb4916824dcce3a2271d5677a9a925a35938.tar.gz android_packages_apps_Snap-5c9eeb4916824dcce3a2271d5677a9a925a35938.tar.bz2 android_packages_apps_Snap-5c9eeb4916824dcce3a2271d5677a9a925a35938.zip |
Thumbnails for PhotoSetPage
Change-Id: I8d62b4ca0d0902ca2a18b087a344d35d17a97fa7
Diffstat (limited to 'src/com/android/photos/PhotoSetFragment.java')
-rw-r--r-- | src/com/android/photos/PhotoSetFragment.java | 61 |
1 files changed, 51 insertions, 10 deletions
diff --git a/src/com/android/photos/PhotoSetFragment.java b/src/com/android/photos/PhotoSetFragment.java index e9bfce56f..a3406bea4 100644 --- a/src/com/android/photos/PhotoSetFragment.java +++ b/src/com/android/photos/PhotoSetFragment.java @@ -18,40 +18,41 @@ package com.android.photos; import android.app.Fragment; import android.app.LoaderManager.LoaderCallbacks; +import android.content.Context; import android.content.Loader; import android.database.Cursor; import android.os.Bundle; -import android.provider.MediaStore.Files.FileColumns; +import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.CursorAdapter; -import android.widget.ListView; -import android.widget.SimpleCursorAdapter; +import android.widget.ImageView; +import android.widget.ImageView.ScaleType; import com.android.gallery3d.R; import com.android.photos.data.PhotoSetLoader; +import com.android.photos.drawables.AutoThumbnailDrawable; +import com.android.photos.views.GalleryThumbnailView; +import com.android.photos.views.GalleryThumbnailView.GalleryThumbnailAdapter; public class PhotoSetFragment extends Fragment implements LoaderCallbacks<Cursor> { private static final int LOADER_PHOTOSET = 1; - private ListView mPhotoSetView; + private GalleryThumbnailView mPhotoSetView; private View mEmptyView; - private CursorAdapter mAdapter; + private ThumbnailAdapter mAdapter; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View root = inflater.inflate(R.layout.photo_set, container, false); - mPhotoSetView = (ListView) root.findViewById(android.R.id.list); + mPhotoSetView = (GalleryThumbnailView) root.findViewById(android.R.id.list); mEmptyView = root.findViewById(android.R.id.empty); mEmptyView.setVisibility(View.GONE); - mAdapter = new SimpleCursorAdapter(getActivity(), - android.R.layout.simple_list_item_1, null, - new String[] { FileColumns.DATA }, - new int[] { android.R.id.text1 }, 0); + mAdapter = new ThumbnailAdapter(getActivity()); mPhotoSetView.setAdapter(mAdapter); getLoaderManager().initLoader(LOADER_PHOTOSET, null, this); updateEmptyStatus(); @@ -79,4 +80,44 @@ public class PhotoSetFragment extends Fragment implements LoaderCallbacks<Cursor @Override public void onLoaderReset(Loader<Cursor> loader) { } + + private static class ThumbnailAdapter extends CursorAdapter implements GalleryThumbnailAdapter { + + public ThumbnailAdapter(Context context) { + super(context, null, false); + } + + @Override + public void bindView(View view, Context context, Cursor cursor) { + ImageView iv = (ImageView) view; + AutoThumbnailDrawable drawable = (AutoThumbnailDrawable) iv.getDrawable(); + int width = cursor.getInt(PhotoSetLoader.INDEX_WIDTH); + int height = cursor.getInt(PhotoSetLoader.INDEX_HEIGHT); + String path = cursor.getString(PhotoSetLoader.INDEX_DATA); + drawable.setImage(path, width, height); + } + + @Override + public View newView(Context context, Cursor cursor, ViewGroup parent) { + ImageView iv = new ImageView(context); + AutoThumbnailDrawable drawable = new AutoThumbnailDrawable(); + iv.setImageDrawable(drawable); + int padding = (int) Math.ceil(2 * context.getResources().getDisplayMetrics().density); + iv.setPadding(padding, padding, padding, padding); + return iv; + } + + @Override + public float getIntrinsicAspectRatio(int position) { + Cursor cursor = getItem(position); + float width = cursor.getInt(PhotoSetLoader.INDEX_WIDTH); + float height = cursor.getInt(PhotoSetLoader.INDEX_HEIGHT); + return width / height; + } + + @Override + public Cursor getItem(int position) { + return (Cursor) super.getItem(position); + } + } } |