diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 9add12392..6d74d5509 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -24,5 +24,10 @@ + + diff --git a/app/src/main/java/gallery/simplemobiletools/com/Constants.java b/app/src/main/java/gallery/simplemobiletools/com/Constants.java index 7fb01ae80..f4e2fa40d 100644 --- a/app/src/main/java/gallery/simplemobiletools/com/Constants.java +++ b/app/src/main/java/gallery/simplemobiletools/com/Constants.java @@ -2,4 +2,5 @@ package gallery.simplemobiletools.com; public class Constants { public static final String DIRECTORY = "directory"; + public static final String PHOTO = "photo"; } diff --git a/app/src/main/java/gallery/simplemobiletools/com/MyPagerAdapter.java b/app/src/main/java/gallery/simplemobiletools/com/MyPagerAdapter.java new file mode 100644 index 000000000..c6ee8b644 --- /dev/null +++ b/app/src/main/java/gallery/simplemobiletools/com/MyPagerAdapter.java @@ -0,0 +1,48 @@ +package gallery.simplemobiletools.com; + +import android.content.Context; +import android.support.v4.view.PagerAdapter; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; + +import com.bumptech.glide.Glide; + +import java.util.List; + +public class MyPagerAdapter extends PagerAdapter { + private final Context context; + private final List paths; + private final LayoutInflater inflater; + + public MyPagerAdapter(Context context, List paths) { + this.context = context; + this.paths = paths; + this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + } + + @Override + public int getCount() { + return paths.size(); + } + + @Override + public boolean isViewFromObject(View view, Object object) { + return view == object; + } + + @Override + public Object instantiateItem(ViewGroup container, int position) { + final View view = inflater.inflate(R.layout.pager_item, container, false); + final ImageView imageView = (ImageView) view.findViewById(R.id.photo); + Glide.with(context).load(paths.get(position)).fitCenter().crossFade().into(imageView); + container.addView(view); + return view; + } + + @Override + public void destroyItem(ViewGroup container, int position, Object object) { + container.removeView((View) object); + } +} diff --git a/app/src/main/java/gallery/simplemobiletools/com/PhotoActivity.java b/app/src/main/java/gallery/simplemobiletools/com/PhotoActivity.java new file mode 100644 index 000000000..9c5dc849b --- /dev/null +++ b/app/src/main/java/gallery/simplemobiletools/com/PhotoActivity.java @@ -0,0 +1,55 @@ +package gallery.simplemobiletools.com; + +import android.database.Cursor; +import android.net.Uri; +import android.os.Bundle; +import android.provider.MediaStore; +import android.support.v4.view.ViewPager; +import android.support.v7.app.AppCompatActivity; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +public class PhotoActivity extends AppCompatActivity { + private int pos; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_photo); + + pos = 0; + final ViewPager pager = (ViewPager) findViewById(R.id.view_pager); + final MyPagerAdapter adapter = new MyPagerAdapter(this, getPhotos()); + pager.setAdapter(adapter); + pager.setCurrentItem(pos); + } + + private List getPhotos() { + final List photos = new ArrayList<>(); + final String path = getIntent().getStringExtra(Constants.PHOTO); + final String fileDir = new File(path).getParent().toLowerCase(); + final Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; + final String where = MediaStore.Images.Media.DATA + " like ? "; + final String[] args = new String[]{fileDir + "%"}; + final String[] columns = {MediaStore.Images.Media.DATA}; + final Cursor cursor = getContentResolver().query(uri, columns, where, args, null); + + int i = 0; + if (cursor != null && cursor.moveToFirst()) { + final int pathIndex = cursor.getColumnIndex(MediaStore.Images.Media.DATA); + do { + final String curPath = cursor.getString(pathIndex); + photos.add(curPath); + + if (curPath.equals(path)) + pos = i; + + i++; + } while (cursor.moveToNext()); + cursor.close(); + } + return photos; + } +} diff --git a/app/src/main/java/gallery/simplemobiletools/com/PhotosActivity.java b/app/src/main/java/gallery/simplemobiletools/com/PhotosActivity.java index 2ab280ac7..aff7ea72e 100644 --- a/app/src/main/java/gallery/simplemobiletools/com/PhotosActivity.java +++ b/app/src/main/java/gallery/simplemobiletools/com/PhotosActivity.java @@ -1,5 +1,6 @@ package gallery.simplemobiletools.com; +import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; @@ -13,12 +14,14 @@ import java.util.ArrayList; import java.util.List; public class PhotosActivity extends AppCompatActivity implements AdapterView.OnItemClickListener { + private List photos; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_photos); + photos = new ArrayList<>(); final GridView gridView = (GridView) findViewById(R.id.photos_grid); final PhotosAdapter adapter = new PhotosAdapter(this, getPhotos()); gridView.setAdapter(adapter); @@ -26,7 +29,6 @@ public class PhotosActivity extends AppCompatActivity implements AdapterView.OnI } private List getPhotos() { - final List photos = new ArrayList<>(); final String path = getIntent().getStringExtra(Constants.DIRECTORY); final Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; final String where = MediaStore.Images.Media.DATA + " like ? "; @@ -46,6 +48,8 @@ public class PhotosActivity extends AppCompatActivity implements AdapterView.OnI @Override public void onItemClick(AdapterView parent, View view, int position, long id) { - + final Intent intent = new Intent(this, PhotoActivity.class); + intent.putExtra(Constants.PHOTO, photos.get(position)); + startActivity(intent); } } diff --git a/app/src/main/res/layout/activity_photo.xml b/app/src/main/res/layout/activity_photo.xml new file mode 100644 index 000000000..0638d871f --- /dev/null +++ b/app/src/main/res/layout/activity_photo.xml @@ -0,0 +1,13 @@ + + + + + + diff --git a/app/src/main/res/layout/pager_item.xml b/app/src/main/res/layout/pager_item.xml new file mode 100644 index 000000000..399c2e089 --- /dev/null +++ b/app/src/main/res/layout/pager_item.xml @@ -0,0 +1,6 @@ + + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 5885930df..b4390a216 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,8 +1,6 @@ -