ImageZoom
An Android library that makes any view to be zoomable. It was created to mimick the Instagram Zoom feature.
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
ImageZoomHelper imageZoomHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
// ... your code ...
imageZoomHelper = new ImageZoomHelper(this);
}Override dispatchTouchEvent in your Activity and pass all touch events to the ImageZoomHelper instance:
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
return imageZoomHelper.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) {
View decorView = getWindow().getDecorView();
// Hide the status bar.
int uiOptions = 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.
ImageView imageView = new ImageView(RecyclerViewActivity.this);
imageView.setImageResource(R.mipmap.ic_launcher);
ImageZoomHelper.setViewZoomable(imageView);
return new RecyclerView.ViewHolder(frameLayout) {};Workaround is to wrap the zoomable View with a parent ViewGroup.
// Wrap ImageView with FrameLayout to avoid RecyclerView issue
FrameLayout frameLayout = new FrameLayout(parent.getContext());
frameLayout.addView(imageView);
return new RecyclerView.ViewHolder(frameLayout) {};
Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.

