Я понимаю, что этот ответ на самом деле не касается рассматриваемого вопроса.Проголосуй, если надо.
Если все, что вам нужно, это нарисовать полноэкранное фоновое изображение, вам не нужен OpenGL.Вы не работаете в 3D, и статическое фоновое изображение не нужно обновлять очень часто (особенно не 30-60 раз в секунду!), Поэтому использование OpenGL приведет к потере батареи.Лучшее решение - взглянуть на соответствующие примеры кода и документацию , где вы увидите, что все, что вам действительно нужно, это скопировать и вставитьПример CubeWallpaper, но измените drawFrame (), чтобы он выглядел следующим образом:
void drawFrame() {
final SurfaceHolder holder = getSurfaceHolder();
Canvas c = null;
try {
c = holder.lockCanvas();
if (c != null) {
// draw something
c.drawBitmap(myBitmap, myMatrix, myPaint);
}
} finally {
if (c != null) holder.unlockCanvasAndPost(c);
}
// Reschedule the next redraw
mHandler.removeCallbacks(mDrawCube);
if (mVisible) {
mHandler.postDelayed(mDrawCube, 1000 / 25);
}
}
, где myBitmap
, myMatrix
и myPaint
Битовая карта , Matrix и Раскрасить объекты, которые были инициализированы ранее.
Даже если мое первоначальное предположение (ваше изображение статичное) неверно, этот способ может быть гораздо более эффективным, если ваше изображение меняется не очень часто, например дважды в секунду или медленнее.
Надеюсь, это поможет