Added ability to leaf images in fullscreen mode
This commit is contained in:
parent
aa001e7c37
commit
b92a9d0c58
@ -0,0 +1,98 @@
|
|||||||
|
package ru.volgorobot.vrcatalog.additional;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.support.annotation.NonNull;
|
||||||
|
import android.support.v4.view.PagerAdapter;
|
||||||
|
import android.support.v7.widget.Toolbar;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.view.animation.AccelerateInterpolator;
|
||||||
|
import android.view.animation.DecelerateInterpolator;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
|
||||||
|
import com.github.chrisbanes.photoview.OnPhotoTapListener;
|
||||||
|
import com.github.chrisbanes.photoview.PhotoView;
|
||||||
|
import com.squareup.picasso.Picasso;
|
||||||
|
|
||||||
|
public class FullscreenImagePagerAdapter extends PagerAdapter {
|
||||||
|
/**
|
||||||
|
* This class is designed to control the ViewPager (images of item) in the activity of viewing details of items (DetailActivity).
|
||||||
|
*/
|
||||||
|
|
||||||
|
private Context context;
|
||||||
|
private String[] imageUris;
|
||||||
|
private Toolbar mToolbar;
|
||||||
|
private boolean mIsFullScreen;
|
||||||
|
|
||||||
|
public FullscreenImagePagerAdapter(Context context, String[] imageUris, Toolbar toolbar, boolean isFullScreen) {
|
||||||
|
this.context = context;
|
||||||
|
this.imageUris = imageUris;
|
||||||
|
this.mToolbar = toolbar;
|
||||||
|
this.mIsFullScreen = isFullScreen;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getCount() {
|
||||||
|
return imageUris.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
|
||||||
|
return view == object;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function initializes a new image from a URI.
|
||||||
|
* @return ImageView
|
||||||
|
*/
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public Object instantiateItem(@NonNull ViewGroup container, int position) {
|
||||||
|
PhotoView photoView = new PhotoView(context);
|
||||||
|
Picasso.get()
|
||||||
|
.load(imageUris[position])
|
||||||
|
.into(photoView);
|
||||||
|
photoView.setOnPhotoTapListener(new PhotoTapListener());
|
||||||
|
container.addView(photoView);
|
||||||
|
|
||||||
|
return photoView;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
|
||||||
|
container.removeView((View) object);
|
||||||
|
}
|
||||||
|
|
||||||
|
private class PhotoTapListener implements OnPhotoTapListener, View.OnSystemUiVisibilityChangeListener {
|
||||||
|
@Override
|
||||||
|
public void onPhotoTap(ImageView view, float x, float y) {
|
||||||
|
updateView();
|
||||||
|
}
|
||||||
|
public void updateView() {
|
||||||
|
mIsFullScreen = !mIsFullScreen;
|
||||||
|
|
||||||
|
if (mIsFullScreen) {
|
||||||
|
hideSystemUI();
|
||||||
|
} else {
|
||||||
|
showSystemUI();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void hideSystemUI() {
|
||||||
|
mToolbar.animate().translationY(-mToolbar.getHeight()).setInterpolator(new AccelerateInterpolator(2)).start();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void showSystemUI() {
|
||||||
|
mToolbar.animate().translationY(0).setInterpolator(new DecelerateInterpolator(2)).start();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSystemUiVisibilityChange(int visibility) {
|
||||||
|
if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
|
||||||
|
mIsFullScreen = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
updateView();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -67,7 +67,7 @@ public class ImagePagerAdapter extends PagerAdapter {
|
|||||||
@Override
|
@Override
|
||||||
public void onClick(View view) {
|
public void onClick(View view) {
|
||||||
Intent intent = new Intent(context, FullScreenImageActivity.class);
|
Intent intent = new Intent(context, FullScreenImageActivity.class);
|
||||||
intent.putExtra("path", imageUris[position]);
|
intent.putExtra("uris", imageUris);
|
||||||
context.startActivity(intent);
|
context.startActivity(intent);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -6,24 +6,20 @@ import android.graphics.drawable.Drawable;
|
|||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.support.v4.content.ContextCompat;
|
import android.support.v4.content.ContextCompat;
|
||||||
|
import android.support.v4.view.ViewPager;
|
||||||
import android.support.v7.app.AppCompatActivity;
|
import android.support.v7.app.AppCompatActivity;
|
||||||
import android.support.v7.widget.Toolbar;
|
import android.support.v7.widget.Toolbar;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.Window;
|
import android.view.Window;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
import android.view.animation.AccelerateInterpolator;
|
|
||||||
import android.view.animation.DecelerateInterpolator;
|
|
||||||
import android.widget.ImageView;
|
|
||||||
|
|
||||||
import com.github.chrisbanes.photoview.OnPhotoTapListener;
|
|
||||||
import com.github.chrisbanes.photoview.PhotoView;
|
|
||||||
import com.squareup.picasso.Picasso;
|
|
||||||
|
|
||||||
import ru.volgorobot.vrcatalog.R;
|
import ru.volgorobot.vrcatalog.R;
|
||||||
|
import ru.volgorobot.vrcatalog.additional.FullscreenImagePagerAdapter;
|
||||||
|
|
||||||
public class FullScreenImageActivity extends AppCompatActivity implements View.OnSystemUiVisibilityChangeListener {
|
public class FullScreenImageActivity extends AppCompatActivity {
|
||||||
private Toolbar mToolbar;
|
private Toolbar mToolbar;
|
||||||
|
private ViewPager fullscreenViewPager;
|
||||||
private boolean mIsFullScreen;
|
private boolean mIsFullScreen;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -56,60 +52,14 @@ public class FullScreenImageActivity extends AppCompatActivity implements View.O
|
|||||||
|View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
|
|View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
|
||||||
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
|
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
|
||||||
|
|
||||||
String path = getIntent().getStringExtra("path");
|
|
||||||
|
|
||||||
PhotoView photoView = (PhotoView) findViewById(R.id.photo_view);
|
fullscreenViewPager = findViewById(R.id.fullscreen_mode_viewpager);
|
||||||
|
FullscreenImagePagerAdapter adapter = new FullscreenImagePagerAdapter(FullScreenImageActivity.this, getIntent().getExtras().getStringArray("uris"), mToolbar, mIsFullScreen);
|
||||||
photoView.setOnPhotoTapListener(new OnPhotoTapListener() {
|
fullscreenViewPager.setAdapter(adapter);
|
||||||
@Override
|
|
||||||
public void onPhotoTap(ImageView view, float x, float y) {
|
|
||||||
updateView();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
Picasso.get()
|
|
||||||
.load(path)
|
|
||||||
.into(photoView);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onSystemUiVisibilityChange(int visibility) {
|
|
||||||
if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
|
|
||||||
mIsFullScreen = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
updateView();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void updateView() {
|
|
||||||
mIsFullScreen = !mIsFullScreen;
|
|
||||||
|
|
||||||
if (mIsFullScreen) {
|
|
||||||
hideSystemUI();
|
|
||||||
} else {
|
|
||||||
showSystemUI();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void hideSystemUI() {
|
|
||||||
mToolbar.animate().translationY(-mToolbar.getHeight()).setInterpolator(new AccelerateInterpolator(2)).start();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void showSystemUI() {
|
|
||||||
mToolbar.animate().translationY(0).setInterpolator(new DecelerateInterpolator(2)).start();
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getStatusBarHeight() {
|
|
||||||
int result = 0;
|
|
||||||
int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
|
|
||||||
if (resourceId > 0) {
|
|
||||||
result = getResources().getDimensionPixelSize(resourceId);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onOptionsItemSelected(MenuItem item) {
|
public boolean onOptionsItemSelected(MenuItem item) {
|
||||||
switch (item.getItemId()) {
|
switch (item.getItemId()) {
|
||||||
@ -117,7 +67,6 @@ public class FullScreenImageActivity extends AppCompatActivity implements View.O
|
|||||||
finish();
|
finish();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,8 +9,8 @@
|
|||||||
tools:context="ru.volgorobot.vrcatalog.view.FullScreenImageActivity"
|
tools:context="ru.volgorobot.vrcatalog.view.FullScreenImageActivity"
|
||||||
android:background="@android:color/black">
|
android:background="@android:color/black">
|
||||||
|
|
||||||
<com.github.chrisbanes.photoview.PhotoView
|
<android.support.v4.view.ViewPager
|
||||||
android:id="@+id/photo_view"
|
android:id="@+id/fullscreen_mode_viewpager"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent" />
|
android:layout_height="match_parent" />
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user