Java >> Java Tutorial >  >> Java

Ich habe die Glide-Bibliothek verwendet, um ein Bild in imageView zu laden, und ich weiß nicht, wie ich das Bild zoombar machen kann

Diese Bibliothek heißt hier PhotoView ist ziemlich beliebt.
https://github.com/chrisbanes/PhotoView

Mit mehr als 13.500 Sternen, mehr als 30 Mitwirkenden, so vielen Menschen, die es verwenden, und wie einfach es in ein Projekt zu integrieren ist, fühlt es sich fast wie ein Standard an.

Es ist auch mit Glide kompatibel ^.^

Installation (Offizielle Dokumentation von Chrisbanes)

Fügen Sie dies in Ihrem Stamm build.gradle hinzu Datei (nicht Ihr Modul build.gradle Datei):

allprojects {
    repositories {
        maven { url "https://jitpack.io" }
    }
}

Fügen Sie dann die Bibliothek zu Ihrem Modul build.gradle hinzu

dependencies {
    implementation 'com.github.chrisbanes:PhotoView:latest.release.here'
}

Zum Zeitpunkt des Schreibens latest.release.here ist 2.1.4 .

Verwendung (Offizielle Dokumentation von Chrisbanes)

Es gibt ein Beispiel, das zeigt, wie man die Bibliothek auf fortgeschrittenere Weise verwendet, aber der Vollständigkeit halber ist hier alles, was erforderlich ist, um PhotoView zum Laufen zu bringen:

<com.github.chrisbanes.photoview.PhotoView
    android:id="@+id/photo_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
PhotoView photoView = (PhotoView) findViewById(R.id.photo_view);
photoView.setImageResource(R.drawable.image);

Das ist es!

Verwendung mit Glide

Es ändert sich nichts!!

PhotoView photoView = (PhotoView) findViewById(R.id.photo_view);
Glide.with(this).load(imageUrl).into(photoView);

Sie können zum Beispiel diese Bibliothek verwenden.https://github.com/MikeOrtiz/TouchImageView

Laden Sie Ihr Bild in dieses Widget anstelle von ImageView

Beispielnutzung:

private TouchImageView mContentView;
private private SimpleTarget target;

mContentView = (TouchImageView) findViewById(R.id.fullscreen_content);

target = new SimpleTarget<Bitmap>() {
        @Override
   public void onResourceReady(Bitmap bitmap, GlideAnimation glideAnimation) 
{
            // do something with the bitmap
            // for demonstration purposes, let's just set it to an ImageView
            mContentView.setImageBitmap(bitmap);
        }
    };



    Glide.with(this) // could be an issue!
            .load( imagePath )
            .asBitmap()
            .into(target);

Beachten Sie, dass ich auch zuerst SimpleTarget verwende, es ist eine gute Übung, Glide and Pinch to Zoom Effect für große Bilder zu verwenden.

Und das Layout sieht in etwa so aus:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.FullscreenActivity">


<com.yourPath.TouchImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/fullscreen_content"/>

</FrameLayout>

Außerdem gibt es manchmal ein Problem beim Laden des Bildes nach diesem Setup. Bei mir funktioniert das ungefähr so. Ich überschreibe die Methode der TouchImageView-Klasse:

@Override
public void setImageBitmap(Bitmap bm) {
    imageRenderedAtLeastOnce = false;
    super.setImageBitmap(bm);
    savePreviousImageValues();
    fitImageToView();
}

Java-Tag