У меня есть андроид приложение, имеющий компоновку, содержащую Listview, который накачивается сAndroid Низкая производительность SurfaceView в Listview
LayoutInflater inflater = getLayoutInflater();
row = inflater.inflate(R.layout.disc_row, parent, false);
«R.layout.disc_row» является содержащим SurfaceView рисунок холста. поэтому каждая строка в ListView содержит холст. при прокрутке списка холст остается на своем месте, а другие элементы строки прокручиваются. Я думаю, что это плохое поведение устройства. то же приложение не рисует что-либо на эмуляторе, пока не нажмет на ListItem.
Есть ли лучшая стратегия для рисования внутри ListViews (нет растровых изображений, только некоторые строки), может быть, с помощью Paint? эмулятор sys делает слишком много работы в своей деятельности.
заранее спасибо
прилагается CLASS
public class DrawDiscInListView extends SurfaceView implements
SurfaceHolder.Callback {
private static final String TAG = "DISCONT SurfaceView";
public DrawDiscInListView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
tryDrawing(holder);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int frmt, int w, int h) {
tryDrawing(holder);
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
private void tryDrawing(SurfaceHolder holder) {
Log.i(TAG, "Trying to draw...");
Canvas canvas = holder.lockCanvas();
if (canvas == null) {
Log.e(TAG, "Cannot draw onto the canvas as it's null");
} else {
drawMyStuff(canvas);
holder.unlockCanvasAndPost(canvas);
}
}
private void drawMyStuff(final Canvas canvas) {
Random random = new Random();
Log.i(TAG, "Drawing...");
canvas.drawRGB(255, 128, 128);
}
}
благодарит вас за комментарий. попробует, но я думаю, что битмап прочный. – user1616685