Skip to content

Commit 417279a

Browse files
committed
Center the 'earth' on screen at init in example Activity
1 parent a664cb7 commit 417279a

File tree

1 file changed

+23
-10
lines changed

1 file changed

+23
-10
lines changed

src/com/almeros/android/multitouch/TouchActivity.java

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22

33
import android.app.Activity;
44
import android.graphics.Matrix;
5+
import android.graphics.Point;
56
import android.graphics.PointF;
67
import android.graphics.drawable.Drawable;
78
import android.os.Bundle;
89
import android.util.Log;
10+
import android.view.Display;
911
import android.view.MotionEvent;
1012
import android.view.ScaleGestureDetector;
1113
import android.view.View;
@@ -52,33 +54,44 @@ public class TouchActivity extends Activity implements OnTouchListener {
5254
private ScaleGestureDetector mScaleDetector;
5355
private RotateGestureDetector mRotateDetector;
5456
private MoveGestureDetector mMoveDetector;
55-
private ShoveGestureDetector mShoveDetector;
57+
private ShoveGestureDetector mShoveDetector;
5658

59+
@SuppressWarnings("deprecation")
5760
@Override
5861
public void onCreate(Bundle savedInstanceState) {
5962
super.onCreate(savedInstanceState);
6063
setContentView(R.layout.main);
6164

65+
// Determine the center of the screen to center 'earth'
66+
Display display = getWindowManager().getDefaultDisplay();
67+
mFocusX = display.getWidth()/2f;
68+
mFocusY = display.getHeight()/2f;
69+
70+
// Set this class as touchListener to the ImageView
6271
ImageView view = (ImageView) findViewById(R.id.imageView);
6372
view.setOnTouchListener(this);
6473

65-
// View is scaled by matrix, so scale initially
66-
mMatrix.postScale(mScaleFactor, mScaleFactor);
67-
view.setImageMatrix(mMatrix);
68-
69-
// Dimensions of image
74+
// Determine dimensions of 'earth' image
7075
Drawable d = this.getResources().getDrawable(R.drawable.earth);
7176
mImageHeight = d.getIntrinsicHeight();
7277
mImageWidth = d.getIntrinsicWidth();
73-
Log.d(LOG_TAG, "Image dimensions -> height: " + mImageHeight + "px, width: " + mImageWidth + "px");
78+
79+
// View is scaled and translated by matrix, so scale and translate initially
80+
float scaledImageCenterX = (mImageWidth*mScaleFactor)/2;
81+
float scaledImageCenterY = (mImageHeight*mScaleFactor)/2;
82+
83+
mMatrix.postScale(mScaleFactor, mScaleFactor);
84+
mMatrix.postTranslate(mFocusX - scaledImageCenterX, mFocusY - scaledImageCenterY);
85+
view.setImageMatrix(mMatrix);
7486

7587
// Setup Gesture Detectors
76-
mScaleDetector = new ScaleGestureDetector(getApplicationContext(), new ScaleListener());
88+
mScaleDetector = new ScaleGestureDetector(getApplicationContext(), new ScaleListener());
7789
mRotateDetector = new RotateGestureDetector(getApplicationContext(), new RotateListener());
78-
mMoveDetector = new MoveGestureDetector(getApplicationContext(), new MoveListener());
79-
mShoveDetector = new ShoveGestureDetector(getApplicationContext(), new ShoveListener());
90+
mMoveDetector = new MoveGestureDetector(getApplicationContext(), new MoveListener());
91+
mShoveDetector = new ShoveGestureDetector(getApplicationContext(), new ShoveListener());
8092
}
8193

94+
@SuppressWarnings("deprecation")
8295
public boolean onTouch(View v, MotionEvent event) {
8396
mScaleDetector.onTouchEvent(event);
8497
mRotateDetector.onTouchEvent(event);

0 commit comments

Comments
 (0)