2016-07-28 5 views
1

Ich benutze Picasso, um die Hintergrundbilder zu laden, und ich verwende relatives Layout. Die Hintergrundbilder brauchen Zeit zum Laden und manche laden sogar nicht. Mein Stück Code ist,Zeit zum Laden von Hintergrundbildern in Android

 final int k = random.nextInt(20); 
     ImageView imageView= (ImageView)findViewById(R.id.backgrd); 
     TypedArray imgb = getResources().obtainTypedArray(R.array.backg); 
     int resourceId = imgb.getResourceId(k, 0); 

Picasso.with(getApplicationContext()). 
       load(resourceId). 
       fit(). 
       noPlaceholder(). 
       into(imageView); 

Ich versuchte Resize() zu verwenden Picasso Taking time to load images auch, aber es funktioniert nicht.

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/relative1" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 


     <ImageView 
      android:id="@+id/backgrd" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:scaleType="fitXY" 
      /> 

    <ImageView 
     android:id="@+id/img1" 
     android:paddingTop="90dp" 
     android:layout_width="wrap_content" 
     android:layout_height="400dp" 
     /> 
+0

Was ist Ihre prägnant worter Frage? – RabidMutant

+0

Überprüfen Sie die Bandbreite oder, wenn die Bilder lokal gespeichert sind, verwenden Sie UniversalImageLoader –

+0

@RabidMutant Ich habe Ihre Frage nicht erhalten. – Sanik

Antwort

1

Es ist wegen der großen Größe der Bilder. Sie sollten die Bildgröße mit Photoshop oder einem anderen Grafikwerkzeug reduzieren. Es wird sowohl Ihren Anwendungsraum reduzieren als auch Ihre Bilder schneller laden.

Glide-Bibliothek ist auch eine bessere Möglichkeit, Bilder schnell zu laden. Aber in Ihrem Zustand gibt es ein Problem mit der Größe.

+0

Ich habe nur 19 Hintergrundbilder und die Gesamtgröße beträgt 106 kB. Jedes Bild hat eine Größe von 1 kB bis 10 kB. Muss ich es noch etwas reduzieren? – Sanik

+0

Okay Sanik können Sie Ihren vollständigen Code teilen. – Akshay

+0

Zusammen mit den XML-Dateien? – Sanik

0

Von Ihrer oben Kommentar klar ist, dass Sie Picasso verwenden die Bilder und die Bilder werden lokal

So oben Szenario stoppen alles die Lösung

Zuerst hier nach gespeichert zu laden mit Picasso, wenn die Bilder lokal sind, brauchen Sie keine Bibliothek von Drittanbietern, um sie zu laden.

Zweitens stattdessen in Ihrem Code Relative Layout verwendet CardView als Haupt Layout wie -

<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/VechicleCardView" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:foreground="?android:attr/selectableItemBackground" 
    app:cardCornerRadius="@dimen/margin_small_five" 
    app:cardElevation="@dimen/card_elevation_two" 
    app:cardUseCompatPadding="true"> 


</android.support.v7.widget.CardView> 

Nach cardview setzen Sie Ihr Image "@ + id/backgrd" als erstes Kind, wie unten

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.CardView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="200dp" 
    app:cardCornerRadius="4dp" 
    app:cardElevation="0dp" 
    app:cardMaxElevation="0dp"> 

    <ImageView 
     android:src="@drawable/your_background" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:scaleType="fitXY"/> 

    <... your layout 

    .../> 


</android.support.v7.widget.CardView> 

nun den Hintergrund des Imageview aus der Klassendatei

Hoffnung dieser Arbeit für u gesetzt !!

Happy Coding;)

+0

Eigentlich habe ich versucht, Bitmap anstelle von Picasso zu verwenden und recycelte es nach der Verwendung. Daher ist das OOM-Problem gelöst und für diesen Hintergrund habe ich seine Größe etwas reduziert. Es funktioniert gut. Danke allen. Mein Code für Bitmap – Sanik

+0

if (imageView! = Null) imageView.setImageBitmap (null); if (Bitmap! = Null) { bitmap.recycle(); } Bitmap = null; Bitmap Bitmap = BitmapFactory.de CodeStream (getResources(). OpenRawResource (RessourceId)); imageView.setImageBitmap (Bitmap); – Sanik

Verwandte Themen