Привет всем Мне было интересно, если бы можно было привлечь к закадровому Canvas/Bitmap и воспользоваться аппаратным ускорением, или я должен сделать внутри onDraw()
способа View
Android Canvas и аппаратное ускорение?
Например я рисую с закадровым Bitmap выполнив следующие действия:
Bitmap.Config config = Bitmap.Config.ARGB_8888;
Bitmap buffer = Bitmap.createBitmap(200, 200, config);
Canvas canvas = new Canvas(buffer);
Paint paint = new Paint();
paint.setColor(Color.RED);
canvas.drawLine(0, 0, 100, 100, paint);
Однако canvas.isHardwareAccelerated()
возвращает ложь и рисунок вялым по сравнению с:
protected void onDraw(Canvas canvas) {
Paint paint = new Paint();
paint.setColor(Color.RED);
canvas.drawLine(0, 0, 100, 100, paint);
}
где canvas.isHardwareAccelerated()
возвращает true. Есть ли способ рисовать в Bitmap, используя преимущества аппаратного ускорения? Или мне нужно рисовать непосредственно на экране в методе onDraw?
Спасибо за вашу помощь :) Я знаю, что в Java я могу сделать для BufferedImage закадровым, и это будет аппаратное ускорение, но, возможно, его не то же самое по телефону ...
В соответствии с этим ответом: http://stackoverflow.com/a/9950775/935242 «Холст, возвращенный SurfaceView.lockCanvas(), не может быть аппаратным ускоренным в данный момент». – ggurov
То же самое для TextureView: http://stackoverflow.com/a/14987164/935242 «TextureView работает только тогда, когда приложение аппаратно ускорено, но Canvas, который он возвращает из lockCanvas(), в настоящее время не аппаратно ускоряется ... В настоящее время, единственный способ получить аппаратное ускорение Canvas - использовать метод onDraw (Canvas) для представления ». – ggurov
@ggurov Обновлено. Благодарю. –