Sé que hay toneladas de hilos en realidad para obtener el zoom pellizco implementado, pero ya he llegado hasta aquí.Enfoque en android: mantener la imagen a la vista
Estoy usando SimpleScaleGestureListener para manejar el pellizco. Me las he arreglado para asegurarme de que no se puede alejar más que para mantener la altura de la imagen igual al tamaño de la pantalla (para que la altura de la imagen siempre sea al menos la altura del tamaño de pantalla disponible).
Sin embargo, estoy buscando una manera de detectar automáticamente si la imagen se está panoramizando fuera de estos límites. Al igual que la forma estándar de Android para mostrar la imagen. Por lo tanto, si amplío, y desplazo la imagen hacia arriba, y luego la alejé, quiero que detecte cuando la parte inferior de la imagen llegue al final de la pantalla, y luego el "pivote" del zoom se ajusta en consecuencia, nunca permitiendo " espacios en blanco "arriba o debajo de la imagen misma. ¿Alguien puede ayudarme?
Para referencia, aquí es mi onScale y métodos OnDraw:
public boolean onScale(ScaleGestureDetector detector){
float minScale = (float) ((float) SCREEN_SIZE.y/(float) DRAWABLE_SIZE.y);
mScaleFactor *= detector.getScaleFactor();
mScaleFactor = Math.max(minScale, Math.min(mScaleFactor, 5.0f));
invalidate();
return true;
}
protected void onDraw(Canvas canvas) {
canvas.save();
canvas.drawColor(Color.DKGRAY);
canvas.translate(mPosX, mPosY);
canvas.scale(mScaleFactor, mScaleFactor, getDrawable().getIntrinsicWidth()/2,
getDrawable().getIntrinsicHeight()/2);
this.getDrawable().draw(canvas);
canvas.restore();
}
¡Gracias! Buscaré en la matriz. Agradezco que no desee compartir el código, pero ¿tiene un enlace a buenos recursos en la matriz y cómo superar mi problema específico? Tal vez un buen tutorial? Por supuesto, voy a googlearme a mí mismo, pero si tuvieras alguna sugerencia de primera categoría, estaría muy agradecido :) – Dynde
No sé sobre un enlace en particular. Sin embargo, trate de buscar la transformación 2D, la matriz matemática, etc. No es demasiado difícil, y Matrix es muy potente en gráficos. En el lienzo de Android es solo una matriz 2D. –
@mice hola, ¿me puede enviar el código de este problema en particular con la matriz. Quiero usar el zoom y la panorámica en Canvas.Pero no puedo hacer Panning ... lo hice en google pero usando Matrix no puedo encontrar nada. Gracias por adelantado. – anddev