Возможно ли иметь живые обои с 32-битным (ARGB_8888) форматом поверхности?
При рендеринге моих живых обоев у меня есть некоторые артефакты градиента полосы. Эта статья прекрасно объясняет причину этого: для устранения большинства из них и повышения эффективности я могу рисовать 32-битные растровые изображения поверх 32-битных растровых изображений:)
Поэтому я задал себе вопрос: как это сделать для живых обоев? И не найти ответа:) В живых обоях у нас есть поверхность, созданная для нас с помощью Android Framework. И так получилось, что это поверхность RGB_565, потому что:
// code inside my WallpaperService.Engine subclass
public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height)
{
Log.d("test", "format is: "+format); // => prints 4, which is PixelFormat.RGB_565
}
И, похоже, я не могу попросить платформу Android изменить это на ARGB_8888. Или есть?
PS Конечно, я знаю, что могу делать другие вещи, описанные в вышеприведенной статье, например, применять дизеринг и т. Д., Поэтому, пожалуйста, не указывайте мне это. Я хотел бы найти ответ именно на вопрос, который я задал:)
1 ответ
Установите PixelFormat внутри onCreate()
holder.setFormat(PixelFormat.RGBA_8888);