Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android Force GPU Rendering ¿Cómo habilitar y deshabilitar?

Estoy construyendo una aplicación que requiere mucho dibujo en el lienzo. Me doy cuenta de que la aplicación es un poco laggy en dispositivos con alta resolución (nexo 7, por ejemplo). Vi que hay una opción Force GPU en la opción de desarrollador. Cuando Force GPU está habilitado, mi aplicación se ejecuta sin problemas.

He leído que esta opción Force GPU se llama Aceleración de hardware y está disponible sólo para Android 3.0 y versiones posteriores.

Mi aplicación tiene como objetivo Android 2.3 y versiones posteriores.

¿Es posible activar programaticamente Hardware Accelerated (o Force GPU – cualquier que sea la magia que se llame) en cualquier dispositivo Android 3.0 o superior?

Algo como:

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){ Turn On Hardware Accelerate HERE but How can i do this? any code snippet would be welcome/helpful/thanks } 

3 Solutions collect form web for “Android Force GPU Rendering ¿Cómo habilitar y deshabilitar?”

Supongo que ya has añadido android: hardwareAccelerated a su archivo de manifiesto?

 <application android:hardwareAccelerated="true" ...> 

Eso es lo que permite la aceleración de hardware dentro de su aplicación por la guía de aceleración de hardware y debe hacer exactamente lo que forzar GPU hace a nivel de sistema.

Establezca minSdkVersion en 10 y targetSdkVersion como máximo

Como abajo

  <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="17" /> 

entonces

 <application android:hardwareAccelerated="true" ...> 

Ahora trabajará

Y para las particularidades

 if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB){ view.setLayerType(View.LAYER_TYPE_HARDWARE, null); } 

o

 if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB){ view.setLayerType(View.LAYER_TYPE_SOFTWARE, null); } 

Si desea crear su aplicación utilizando un nivel de api más bajo, puede acceder al método mediante la reflexión:

  try { Method setLayerType = view.getClass().getMethod( "setLayerType", new Class[] { int.class, Paint.class }); if (setLayerType != null) setLayerType.invoke(view, new Object[] { LAYER_TYPE_X, null }); } catch (NoSuchMethodException e) { } catch (IllegalArgumentException e) { } catch (IllegalAccessException e) { } catch (InvocationTargetException e) { } 

Donde LAYER_TYPE_X es el valor entero constante del tipo de capa deseado:

 LAYER_TYPE_NONE = 0 LAYER_TYPE_SOFTWARE = 1 LAYER_TYPE_HARDWARE = 2 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.