Bild öffnen bei Klick

H

haner

Ambitioniertes Mitglied
0
Hallo,
mit Picasso stelle ich ein Bild/Foto in meiner Activity dar:

Code:
Picasso.with(this)
                .load(imageUrl_detail)
                .fit()
                .centerCrop()
                .into(iv_titel_detail);

Code:
<ImageView
            android:id="@+id/iv_image"
            android:layout_width="match_parent"
            android:layout_height="300dp"
            android:layout_marginEnd="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="8dp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:srcCompat="@drawable/ic_gallery_300" />

Das funktioniert soweit schon prima. Damit der Bildschirm in horizontaler Breite komplett ausgefüllt wird, benutze ich centerCrop(). Gleichzeitig wird dadurch der Randbereich des Bildes beschnitten. Das ist auch so gewollt!
Nun zu meiner Frage:
Ich möchte, dass sich beim Klick auf dieses Bild ein neues Fenster öffnet, sodass dort das Bild ohne Beschnitt dargestellt wird. Da das Seitenverhältnis des Bildes gleich bleiben soll, kann der nicht vom Bild ausgefüllte Bereich natürlich frei, z.B. schwarz, sein. Als nächsten Schritt möchte ich, dass man noch in das Bild hineinzoomen kann. Das müsste aber mit PhotoView machbar sein, soweit ich mich informiert habe.
Im Prinzip ist es nicht anderes als das Öffnen eines Bildes im Messanger WhatsApp, was ich mir da vorstelle.
Vor dieser Aufgabe standen bestimmt schon viele. Kann aber leider im Web nichts dazu finden. Falsche Suchbegriffe?
Wer kann mir helfen?

Schonmal danke und Viele Grüße
 
Naja, PhotoView ist doch schonmal gut. Die kann zoomen. Um das ganze bei Klick zu machen brauchst du auf deiner ImageView einen OnClickListener. Und dann musst du in dem Onclick überlegen wie du die PhotoView anzeigst, das kann zum Beispiel eine neue Activity sein die du startest, der du das image mitgibst, oder ein Fragment, dass du Fullscreen über die Activity legst.

Google Suchbegriffe in fett. Ich kann mir aber nicht vorstellen, dass du mit z.B. "android image open fullscreen on click" nichts halbwegs sinnvolles bei Google findest.
 
Danke für den schnellen Input. Das Aufrufen einer neuen Activity bei Klick auf das Bild funktioniert schonmal. Wie aber bekomme ich nun das Bild in die neue Activity.
Info: Bei dem Bild handelt es sich ursprünglich um ein in einem RecyclerViewer dargestellten Bild, abgerufen mit einem path, der in einer mysql Datenbank gespeichert wurde. Beim Klick auf den RecyclerViewer öffnet sich eine Activity in der das Bild, wie im ersten Post beschrieben, mit Picasso dargestellt wird. Wie übergebe ich nun dieses Bild an die nächste Activity?

Idee:
Gibt es die Möglichkeit den String
Code:
String imageUrl_detail = intent.getStringExtra(EXTRA_URL);
an meine neue Activity zu übergeben?
Dann könnte man dort das Bild mit Picasso anzeigen.
 
Zuletzt bearbeitet:
Na in der RecyclerView übergibst du es ja auch irgendwie an deine neue Activity?

In deinem intent mit dem du die Activity startest kannst du genauso intent.putExtra(EXTRA_URL), imageUrl_detail) sagen.
 
Wieder etwas gelernt. Danke. Es funktioniert.
Nun habe ich jedoch noch eine weitere Frage: Beim Öffnen der neuen Acticity mit dem Bild befindet sich dieses am oberen Bildschirmrand. Erst bei beim Berühren des Bildes springt es in die Bildschirmmitte. Was muss ich machen, damit es sich sofort in der Bildschirmmitte befindet?

Hier mein Code, um es besser nachvollziehen zu können:

Code:
<ImageView
        android:id="@+id/iv_titel_detail"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/ic_gallery" />

Code:
public class FullImageActivity extends AppCompatActivity {

    ImageView iv_titel_detail;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_full_image);

        Intent intent = getIntent();
        final String imageUrl_detail = intent.getStringExtra(EXTRA_URL);

        iv_titel_detail = (ImageView) findViewById(R.id.iv_titel_detail);
        iv_titel_detail.setScaleType(ImageView.ScaleType.MATRIX);

        Picasso.with(this)
                .load(imageUrl_detail)
                .fit()
                .centerInside()
                .into(iv_titel_detail);

        PhotoViewAttacher mAttacher = new PhotoViewAttacher(iv_titel_detail);
    }

}
 
Als Developer sollte man imho auch gut googlen könne. Daher die heutige Lektion: How to Google.

Suchbegriff: photoview picasso not centered
Erster Link: Picasso and PhotoView Library loads image into ImageView weird

Auch wenn es manchmal so aussieht, wissen die hier antwortenden auch nicht alles, sondern sind nur manchmal ganz gut im Umgang mit Google ;)



Disclaimer: Das ist in keinster Weise böse gemeint.
 
Ok, danke. Super Link. ImageView in PhotoView umändern und dann funktioniert es.
 

Ähnliche Themen

B
Antworten
6
Aufrufe
1.002
jogimuc
J
C
Antworten
8
Aufrufe
1.105
swa00
swa00
Gemini-Media
Antworten
1
Aufrufe
1.762
swa00
swa00
Zurück
Oben Unten