Hi,
ich suche nun schon eine gefühlte Ewigkeit, kann aber keine Antwort finden.
Ich setze mit setBackgroundDrawable(Drawable) ein Bild als Hintergrund meiner ListView. Im Prinzip klappt das ganze auch, aber die ListView wird dadurch irgendwie extrem lahm. Soll heißen: Das Scrollen läuft einfach nicht mehr flüssig.
Habe das ganze mal in einem einfachen Beispiel zusammengefasst, wo das Problem auftritt:
package chiro.test;
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class ListViewBackgroundActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final ListView listView = new ListView(this);
final Drawable drawable = getResources().getDrawable(R.drawable.sample);
setContentView(listView);
String[] strings = new String[100];
for (int i = 0; i < strings.length; i++) strings[i] = Integer.toString(i);
listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, strings));
listView.setBackgroundDrawable(drawable);
listView.setCacheColorHint(0);
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
if (listView.getBackground() == null) listView.setBackgroundDrawable(drawable);
else listView.setBackgroundDrawable(null);
}
});
}
}
Alles anzeigen
Das Verhalten ist eindeutig. Bei geladenem Hintergrund-Bild scrollt die ListView überhaupt nicht flüssig. Entferne ich den Hintergrund (im Beispiel-Code einfach durch Clicken auf die ListView), funktioniert scrollen wieder einwandfrei und total flüssig.
Aber woran liegt das? Wird das Drawable evtl. wiederholt gezeichnet, obwohl es sich eigentlich nicht verändert? Und wird es dabei vielleicht immer erst skaliert?
Habe auch mal ein ScaleDrawable Objekt genommen, half aber auch nicht.
Hoffe jemand kann helfen.
Danke schonmal!