Обновление:
Я обнаружил, что просто создание SurfaceView не удается. Если я добавлю его в конце представлений - addView (surface, params) - он сразу затемнит экран без выполнения сегмента кода аниматора. Я также попытался создать его в XML. Тот же результат.
У меня есть RelativeLayout, и во время выполнения я пытаюсь добавить SurfaceView к нему. Представление добавлено, но оно не «пробивается», как сказано в документации. Если я изменю порядок, чтобы поставить его сверху, я получу черный экран.
Вот код, в который он добавлен, который вызывается вскоре после выполнения конструктора (в этом представлении представление «снизу», и я ничего не вижу):
surface = new SurfaceView (getContext ());
int w = ViewGroup.LayoutParams.MATCH_PARENT;
int h = ViewGroup.LayoutParams.MATCH_PARENT;
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams (w, h);
addView (surface, 0, params);
И вот код, в котором я пытаюсь что-то отобразить:
animator.addUpdateListener (new ValueAnimator.AnimatorUpdateListener()
{
public void onAnimationUpdate (ValueAnimator animation)
{
zoomScale = (float) animation.getAnimatedValue ();
Canvas canvas = surface.getHolder ().lockCanvas ();
canvas.scale (zoomScale, zoomScale);
canvas.drawBitmap (folderToZoom, 0, 0, null);
surface.getHolder ().unlockCanvasAndPost (canvas);
}
});
Помещая точку останова в последнем коде, я вижу, что SurfaceView имеет правильный размер. Также, растровое изображение folderToZoom
является действительным.