Salut les gars!
Tout d'abord, merci beaucoup pour votre superbe bibliothèque ! Bon travail!
À propos de mon problème : lorsque mon activité démarre, je souhaite afficher initialement l' image initialisation , je ne peux donc pas définir scale_type = center_crop, car après cela, je ne peux pas voir l'image complète lorsque je pince / zoome.
Merci beaucoup pour votre aide!
Avez-vous trouvé une solution?
Je recherche également cette fonctionnalité
La fonction de zoom arrière sera bonne.
Avez-vous trouvé une solution?
Oui:
public void showFullScreen() {
float photoViewWidth = mPhotoView.getWidth();
float photoViewHeight = mPhotoView.getHeight();
float viewScale = mPhotoView.getScale();
RectF rect = mPhotoView.getDisplayRect();
// Compute initial base rect
float baseRectWidth = (rect.right - rect.left) / viewScale;
float baseRectHeight = (rect.bottom - rect.top) / viewScale;
// Compute medium scale for full size
double mediumScale, currentScale;
if (baseRectHeight > baseRectWidth) {
mediumScale = photoViewWidth / baseRectWidth;
} else {
mediumScale = photoViewHeight / baseRectHeight;
}
mediumScale = Math.round(mediumScale * 100.0) / 100.0;
currentScale = Math.round(mPhotoView.getScale() * 100.0) / 100.0;
// Apply new scale: minimum or medium
if (currentScale < mediumScale) {
mPhotoView.setScale((float) mediumScale);
} else {
mPhotoView.setScale(mPhotoView.getMinimumScale());
}
}
@ anthony3444 J'ai essayé votre solution mais je n'ai rien obtenu. Lorsque j'appelle photoView.setScale (quelque chose), rien ne change. Est-ce que tu sais pourquoi?
@giusecapo si cela ne fonctionne pas pour vous, essayez de définir l'échelle APRÈS le rendu de la vue :
Exemple:
dashboard_image = (PhotoView) TheView.findViewById(R.id.dashboard_image);
ViewTreeObserver vto = dashboard_image.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
<strong i="8">@Override</strong>
public void onGlobalLayout() {
dashboard_image.getViewTreeObserver().removeOnGlobalLayoutListener(this);
dashboard_image.setScale(2f);
}
});
@anthony3444
la solution fonctionne plus ou moins. mais provoque parfois des lancers :
java.lang.IllegalArgumentException : le zoom moyen doit être inférieur au zoom maximum. Appelez setMaximumZoom() avec une valeur plus appropriée
ajoutez simplement ceci dans votre photoview xml
android:adjustViewBounds="true"
android:scaleType="fitXY"
Commentaire le plus utile
Oui: