This article shows how you can do simple image scaling in Android.
Here I have a simple class that Scales the image.
The Utility class
package pinch_zoom_demo.coderzheaven.com.pinchtozoomdemo; import android.view.ScaleGestureDetector; import android.widget.ImageView; import android.widget.TextView; public class ImageScaler extends ScaleGestureDetector.SimpleOnScaleGestureListener { TextView scaleDataMsg; ImageView myImage; float factor; public ImageScaler(TextView v, ImageView iv) { super (); scaleDataMsg = v; myImage = iv; } @Override public boolean onScaleBegin(ScaleGestureDetector detector) { factor = 1 .0f; return true ; } @Override public boolean onScale(ScaleGestureDetector detector) { float scaleFactor = detector.getScaleFactor() - 1 ; factor += scaleFactor; scaleDataMsg.setText(String.valueOf(scaleFactor) + "\n" + String.valueOf(factor)); myImage.setScaleX(factor); myImage.setScaleY(factor); return true ; } } |
Layout
The layout which shows the image for scaling.
<? xml version = "1.0" encoding = "utf-8" ?> < LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android" android:layout_width = "match_parent" android:layout_height = "match_parent" android:orientation = "vertical" android:padding = "16dp" > < TextView android:id = "@+id/scaleDataMsg" android:layout_width = "match_parent" android:layout_height = "wrap_content" /> < ImageView android:id = "@+id/myImage" android:layout_width = "wrap_content" android:layout_height = "wrap_content" android:src = "@drawable/android" /> </ LinearLayout > |
Set the above xml as layout for the Activity.
Activity
package pinch_zoom_demo.coderzheaven.com.pinchtozoomdemo; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.MotionEvent; import android.view.ScaleGestureDetector; import android.widget.ImageView; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private TextView scaleDataMsg; private ImageView myImage; private ScaleGestureDetector scaleGestureDetector; @Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); scaleDataMsg = (TextView) findViewById(R.id.scaleDataMsg); myImage = (ImageView) findViewById(R.id.myImage); scaleGestureDetector = new ScaleGestureDetector( this , new ImageScaler(scaleDataMsg, myImage)); } @Override public boolean onTouchEvent(MotionEvent event) { scaleGestureDetector.onTouchEvent(event); return true ; } } |
Please leave your comments at the end of the post.