0

Inside my RecyclerView ‚s Reihe habe ich ein ImageView und ich möchte diese ImageView in der Vorschau anzeigen‘ auf der gleichen Aktivität (Vollbild-Vorschau)UI Einfrieren während Bild in Image zeigt

und dass ich tue das Image Dieser:

public void showImageZoomable(String imageURL) { 

imageViewZoomable.setVisibility(View.VISIBLE); 

DisplayImageOptions options = new DisplayImageOptions.Builder().cacheOnDisk(true).build(); 

imageLoader.loadImage(imageURL , options, new ImageLoadingListener() { 
    @Override 
    public void onLoadingStarted(String imageUri, View view) { 

    } 

    @Override 
    public void onLoadingFailed(String imageUri, View view, FailReason failReason) { 

    } 

    @Override 
    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { 

     imageViewZoomable.setImage(ImageSource.bitmap(loadedImage)); 
    } 

    @Override 
    public void onLoadingCancelled(String imageUri, View view) { 

    } 
}); 
toolBar.setVisibility(View.GONE); 
getActivity().findViewById(R.id.tabs).setVisibility(View.GONE); 

}

die obige Funktion ausgelöst wird, wenn der Benutzer auf ImageView Abgriffe (die auf Recyclerview ‚s Zeile), und es führt den URL des Bildes (imag e ist bereits zwischengespeichert) und weist sie imageViewZoomable mit imageLoader Bibliothek

es funktioniert gut, aber der ganze Prozess ist etwas langsam und laggy

eine Ahnung, wie kann ich es verbessern ?? oder die Art und Weise ich tue es nicht effizient ist, dann bitte machen Sie mir eine bessere Alternative

+0

1. Sie sollten die ImageLoader- und DisplayImageOptions-Instanz nur einmal deklarieren. 2. Verwenden Sie loadImage und deklarieren Sie DisplayImageOptions in der Recyclerview-Zeile (viewHolder-Adapter), damit RecyclerView langsam ausgeführt wird. Wenn Sie 'imageImage' von imageLoader nicht verwenden können, können Sie auch andere Bibliotheken wie' Picasso' oder 'Glide' ausprobieren, usw. –

Antwort

0

Try

imageLoader.displayImage(imageURL, imageViewZoomable); 

statt

imageLoader.loadImage(...); 
+0

danke für die Antwort, ich kann' displayImage' nicht verwenden, da 'imageViewZoomable' kein imageView ist (eine erweiterte imageView-Klasse) und 'displayImage' erfordert eine imageView als Parameter –

0

U verwenden, um ein Vollbild-Dialog verwenden (erweitert DialogFragment) um ein Vollbild anzuzeigen, wenn der Benutzer auf das Bild im recyclerview item klickt

+0

Bild ist auf recyclerView-Element und ich möchte es auf Eltern Layout zeigen, können wir das tun? Wie ? –

+0

Erstellen Sie die Bildansicht in der übergeordneten Layoutdatei und machen Sie sie sichtbar, wenn Bilder angezeigt werden, und legen Sie die Sichtbarkeit fest, wenn Sie das Bild schließen möchten. Aber es ist kein guter Weg, es zu tun. Wenn Sie einen Vollbilddialog verwenden, wird er über der Recycleransicht eingeblendet, und wenn der Benutzer zurückklickt, wird er ausgeblendet. –

0

Sie können den folgenden Code verwenden, wenn Ihre benutzerdefinierte Klasse imageView Object wie imageViewZoomable.getI zurückgibt mage() als Bildansicht, so dass Sie es wie folgt weitergeben können.

imageLoader.displayImage(imageURL, imageViewZoomable.getImage());