Skip to content

okaybroda/ImageZoom

Repository files navigation

ImageZoom

An Android library that makes any view to be zoomable. It was created to mimick the Instagram Zoom feature.

View Preview

Installation

Add Jitpack

allprojects{repositories{maven{url "https://jitpack.io" } } }

Then add ImageZoom library

dependencies{compile 'com.github.okaybroda:ImageZoom:1.1.0' }

Usage

Create an ImageZoomHelper instance in the OnCreate function of your Activity

ImageZoomHelperimageZoomHelper; @OverrideprotectedvoidonCreate(BundlesavedInstanceState){// ... your code ...imageZoomHelper = newImageZoomHelper(this)}

Override dispatchTouchEvent in your Activity and pass all touch events to the ImageZoomHelper instance:

@OverridepublicbooleandispatchTouchEvent(MotionEventev){returnimageZoomHelper.onDispatchTouchEvent(ev) || super.dispatchTouchEvent(ev)}

Set the R.id.zoomable tag to the Views that you would like to be zoomable.

ImageZoomHelper.setViewZoomable(findViewById(R.id.imgLogo));

To enable/disable zoom for certain Views (e.g. Recycler View refreshing)

ImageZoomHelper.setZoom(recyclerView, false)

Advanced Usage

For a smoother zoom transition, set the layout to be fullscreen. This only works on API 16 and above.

Place this code in the OnCreate function of your Activity. Preferably before the setContentView line.

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN){ViewdecorView = getWindow().getDecorView(); // Hide the status bar.intuiOptions = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE; decorView.setSystemUiVisibility(uiOptions)}

The above code makes your Activity layout go behind the status bar which brings the status bar on top of the layout. To fix that, put this line in your root layout XML.

android:fitsSystemWindows="true"

Known Issues

RecyclerView

When using RecyclerView and setting it's child to be zoomable, RecyclerView crashes.

ImageViewimageView = newImageView(RecyclerViewActivity.this); imageView.setImageResource(R.mipmap.ic_launcher); ImageZoomHelper.setViewZoomable(imageView); returnnewRecyclerView.ViewHolder(frameLayout){};

Workaround is to wrap the zoomable View with a parent ViewGroup.

// Wrap ImageView with FrameLayout to avoid RecyclerView issueFrameLayoutframeLayout = newFrameLayout(parent.getContext()); frameLayout.addView(imageView); returnnewRecyclerView.ViewHolder(frameLayout){};

About

An Android library that makes any view to be zoomable.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages