Creates effect such as vertical parallax, horizontal parallax etc. on android ImageView when it's being vertically or horizontally scrolled (moving) on the screen.
References:
- https://abdularis.com/2018/06/06/scroll_parallax_image_view.html
- https://medium.com/@abdularis/android-custom-view-tutorial-scroll-parallax-image-view-2140ac292ecb
- Step 1 Add repository into root build.gradle
allprojects {
repositories {
...
maven {
url 'https://jitpack.io' }
}
}
- Step 2 Add library dependency into app build.gradle
dependencies {
implementation 'com.github.abdularis:parallaximageview:1.1'
}
- Create vertical parallax image view
<com.github.abdularis.piv.VerticalScrollParallaxImageView
android:id="@+id/image_view"
android:layout_width="200dp"
android:layout_height="170dp"
android:src="@drawable/img1"/>
- Create Horizontal parallax image view
<com.github.abdularis.piv.HorizontalScrollParallaxImageView
android:id="@+id/image_view"
android:layout_width="200dp"
android:layout_height="170dp"
android:src="@drawable/img1"/>
- Create and customize effect on your own
<com.github.abdularis.piv.ScrollTransformImageView
android:id="@+id/image_view"
android:layout_width="200dp"
android:layout_height="170dp"
android:src="@drawable/img1"/>
In the java/kotlin code you can set the effect (transformer) manually. There are three built-in effect classes, VerticalParallaxTransformer, HorizontalParallaxTransformer, HorizontalScaleTransformer.
Java code
ScrollTransformImageView img = findViewById(R.id.image_view);
// create horizontal scale effect
img.setViewTransformer(new HorizontalScaleTransformer())
// create vertical or horizontal parallax effect manually
// img.setViewTransformer(new VerticalParallaxTransformer())
// img.setViewTransformer(new HorizontalParallaxTransformer())
//
// the VerticalParallaxImageView or HorizontalParallaxImageView are nothing but the ScrollTransformImageView with coresponding parallax effect
You can create your own custom effect by extending ViewTransformer.
public class CustomTransformer extends ViewTransformer {
@Override
public void onAttached(@NotNull ScrollTransformImageView view) {
// do something when this transformer is set into image view
}
@Override
public void onDetached(@NotNull ScrollTransformImageView view) {
// do something when this transformer is remove from image view
}
@Override
public void apply(@NotNull ScrollTransformImageView view, @NotNull Canvas canvas, int viewX, int viewY) {
// do transformation effect or so, this would be called everytime image view move/scrolled
}
}
MIT License