Je dois implémenter le zoom d’image, j’ai essayé avec autant de codes. Mais je n’ai pas eu une idée complète des événements gestuels. Je veux implémenter lorsque nous appliquons un double tap, l'image sera agrandie en fonction de l'endroit du toucher (événement x et y). Je ne dois implémenter que le zoom à cette heure, pas de panoramique. Est-ce que tout le corps peut me suggérer?
Edit: En fait, j’ai implémenté ce viewflipper avec des images; si j’essaie d’appliquer un effet de panoramique et de zoom, il arrive que les images soient modifiées .Je souhaite implémenter un effet de zoom lorsque l’utilisateur est cliqué.
Donnez-moi une idée de ça ...
L'homme paresseux peut utiliser this lib , importez simplement à l'intérieur de votre projet et
ImageView mImageView;
PhotoViewAttacher mAttacher;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Any implementation of ImageView can be used!
mImageView = (ImageView) findViewById(R.id.iv_photo);
// Set the Drawable displayed
Drawable bitmap = getResources().getDrawable(R.drawable.wallpaper);
mImageView.setImageDrawable(bitmap);
// Attach a PhotoViewAttacher, which takes care of all of the zooming functionality.
mAttacher = new PhotoViewAttacher(mImageView);
}
// If you later call mImageView.setImageDrawable/setImageBitmap/setImageResource/etc then you just need to call
mAttacher.update();
Voici l'un des moyens les plus efficaces, cela fonctionne bien:
https://github.com/MikeOrtiz/TouchImageView
Endroit TouchImageView.Java
dans votre projet. Il peut alors être utilisé de la même manière que ImageView
.
Exemple:
TouchImageView img = (TouchImageView) findViewById(R.id.img);
Si vous utilisez TouchImageView
dans un fichier xml, vous devez fournir le nom complet du package car il s'agit d'une vue personnalisée.
Exemple:
<com.example.touch.TouchImageView
Android:id="@+id/img”
Android:layout_width="match_parent"
Android:layout_height="match_parent" />
J'espère que vous allez bien. Cela arrive souvent quand ils veulent ajouter de nouvelles fonctionnalités à votre application, puis, normalement, ils recherchent tous des bibliothèques qui ne sont pas une bonne tactique, car vous ne savez pas quel type de code est contenu dans cette bibliothèque. Je préfère donc toujours bifurquer les bibliothèques et ajouter les classes et méthodes utiles dans le code de mon application.
alors, quand je suis coincé avec le même problème, je fais beaucoup de R & D, alors je trouve une classe qui donne la possibilité de faire un zoom avant, un zoom arrière et un pinIn and out. afin que vous puissiez voir cette classe ici. .
comme je l'ai déjà dit, c'est une classe unique. afin que vous puissiez mettre cette classe n'importe où dans vos projets comme le dossier utils . et mettre des lignes ci-dessous dans vos fichiers XML comme:
<your_packege_name.TouchImageView
Android:id="@+id/frag_imageview"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:scaleType="fitCenter"
Android:src="@drawable/default_flag"
Android:transitionName="@string/transition_name_phone" />
et vous pouvez trouver cette image dans votre activité respectée, comme vous l'avez fait pour toutes les vues telles que -:
TouchImageView tv=(TouchImageView)findViewById(R.id.frag_imageview);
tv.setImageResource(R.drawable.ic_play);
c'est tout pour TouchImageView
. profitez de notre code :)
moyen très simple (testé): -
PhotoViewAttacher pAttacher;
pAttacher = new PhotoViewAttacher(Your_Image_View);
pAttacher.update();
Ajouter la ligne ci-dessous dans build.gradle: -
compile 'com.commit451:PhotoView:1.2.4'
Voici un excellent exemple sur la façon de mettre en œuvre un effet de zoom sur le toucher avec une image view
MODIFIER:
Aussi voici un autre excellent.
C’est en fait le meilleur exemple jamais réalisé pour Image Zoom et Pan sous Android,
http://blog.sephiroth.it/2011/04/04/imageview-zoom-and-scroll/
Ci-dessous le code pour ImageFullViewActivity
Class
public class ImageFullViewActivity extends AppCompatActivity {
private ScaleGestureDetector mScaleGestureDetector;
private float mScaleFactor = 1.0f;
private ImageView mImageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.image_fullview);
mImageView = (ImageView) findViewById(R.id.imageView);
mScaleGestureDetector = new ScaleGestureDetector(this, new ScaleListener());
}
@Override
public boolean onTouchEvent(MotionEvent motionEvent) {
mScaleGestureDetector.onTouchEvent(motionEvent);
return true;
}
private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
@Override
public boolean onScale(ScaleGestureDetector scaleGestureDetector) {
mScaleFactor *= scaleGestureDetector.getScaleFactor();
mScaleFactor = Math.max(0.1f,
Math.min(mScaleFactor, 10.0f));
mImageView.setScaleX(mScaleFactor);
mImageView.setScaleY(mScaleFactor);
return true;
}
}
}
J'ai préféré la bibliothèque davemorrissey/subsampling-scale-image-view plutôt que chrisbanes/PhotoView ( réponse de star18bit)
Voir Comment convertir AAR en JAR , si vous souhaitez utiliser le sous-échantillonnage-échelle-image-vue avec Eclipse/ADT
Vous pouvez vérifier la réponse dans une question connexe. https://stackoverflow.com/a/16894324/1465756
Juste importer la bibliothèque https://github.com/jasonpolites/gesture-imageview .
dans votre projet et ajoutez les éléments suivants dans votre fichier de mise en page:
<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:gesture-image="http://schemas.polites.com/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent">
<com.polites.Android.GestureImageView
Android:id="@+id/image"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:src="@drawable/image"
gesture-image:min-scale="0.1"
gesture-image:max-scale="10.0"
gesture-image:strict="false"/>`