スクロールビューを持つxmlを作成しました。
そして、スクロールビューにはたくさんの画像があります。それら全体を一度に拡大したい。
私がしなければならないこと?
スクロールビューを持つxmlを作成しました。
そして、スクロールビューにはたくさんの画像があります。それら全体を一度に拡大したい。
私がしなければならないこと?
カスタム レイアウト クラスを使用 -
public CrosswordGridLayout(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public CrosswordGridLayout(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public CrosswordGridLayout(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
}
protected void dispatchDraw(Canvas canvas) {
canvas.save(Canvas.MATRIX_SAVE_FLAG);
canvas.scale(mScaleFactor, mScaleFactor, mPivotX, mPivotY);
super.dispatchDraw(canvas);
canvas.restore();
}
public void scale(float scaleFactor, float pivotX, float pivotY) {
mScaleFactor = scaleFactor;
mPivotX = pivotX;
mPivotY = pivotY;
this.invalidate();
}
public void restore() {
mScaleFactor = 1;
this.invalidate();
}
}
ジェスチャーリスナーを作る -
private class OnPinchListener extends SimpleOnScaleGestureListener {
float startingSpan;
float endSpan;
float startFocusX;
float startFocusY;
public boolean onScaleBegin(ScaleGestureDetector detector) {
startingSpan = detector.getCurrentSpan();
startFocusX = detector.getFocusX();
startFocusY = detector.getFocusY();
return true;
}
public boolean onScale(ScaleGestureDetector detector) {
crosswordGridLayout.scale(detector.getCurrentSpan()/startingSpan, startFocusX, startFocusY);
return true;
}
public void onScaleEnd(ScaleGestureDetector detector) {
crosswordGridLayout.restore();
}
}
ピンチズーム機能のビューでこれを使用します。