Cómo administrar código para diferentes diseños para soportar todos los dispositivos

Tengo una aplicación y que ya se ha hecho para dispositivos grandes, es decir, 10 pulgadas y quiosco. Hice el mismo diseño para los teléfonos móviles, pero que no estaba bien, así que pensé en mover el dispositivo móvil a diseño de material y el resto de los dispositivos (tabletas y quiosco) se mantendrá igual.

Sé cómo puedo hacer diferentes diseños para los diferentes dispositivos, es decir, normal, grande y x-grande, pero estoy preocupado por el código. Así que básicamente siguen mis confusiones …

  • ¿Cuál es la mejor manera de juzgar el dispositivo de mi aplicación se ejecuta en el código de modo que tengo que ejecutar algunos métodos sobre la base de que porque mi dispositivo normal sigue el diseño de materiales y contiene algunos widgets que no están presentes en el diseño de las tabletas Y quiosco es decir, RecyclerView (para algún propósito)?
  • He buscado mucho para este problema y llegué a un punto que hay 2 maneras de soportar varios dispositivos 1> hacer dos apks separados, 2> Hacer un apk y comprobar en el código para diferenciar los dispositivos, pero como he dicho anteriormente en el punto No # 1 que tengo el diseño de material en dispositivos normales y que es el diseño completamente cambiado en términos de widgets y diseños, fragmentos e incluso la navegación, así que lo que sugiere es la mejor manera de manejar esto?
  • Si hago 1 apk y pongo un código en el código, entonces debo decir que tengo una tonelada de código, y los recursos y en cualquier caso (si el dispositivo es normal y grande) algunos recursos y clases nunca va a utilizar y hará apk Tamaño más grande ¿cuál es la mejor manera de hacer un trabajo alrededor de este problema?

También he buscado a través de stackOverflow y sólo surgió con estos dos enlaces que estaban cerca de mi pregunta, pero el resto de los enlaces son sobre diferentes diseños no el código:

  1. Aplicación de Android para teléfono y tableta: ¿1 o 2 aplicaciones?
  2. Creación de un diseño diferente para el teléfono y la tableta Android

Espero que esté tranquilo claro en mi pregunta por favor responde a mi estas preguntas con algunas razones auténticas y enlaces.

En Google Play se admiten varios apks para una sola aplicación . Sin embargo, a menos que su aplicación sea muy grande (superior a 100 MB), le recomendamos que libere un apk para todos los dispositivos.

Así que necesita inspeccionar el tamaño de la pantalla en tiempo de ejecución. Puede hacerlo por categoría , por píxeles independientes del dispositivo o incluso en pulgadas . Entonces, como usted dijo, cargaría las disposiciones y los fragmentos apropiados en consecuencia.

Incluso si usted fuera a utilizar diferentes apks, es probable que lo haga de una manera similar, porque es probable que desee compartir algunos código.

En Gradle haría productFlavors para cada apk, junto con una variable para definir la compilación como esta:

productFlavors { bigtablet { buildConfigField "String", "deviceType", "\"bigtable\"" } smalltablet { buildConfigField "String", "deviceType", "\"smalltable\"" } } 

A continuación, en tiempo de ejecución que se utiliza el BuildConfig.deviceType para impulsar la misma lógica exacta que el tamaño de la pantalla hizo en el método de un apk. Con este método Gradle eliminará todo el código no utilizado de cada apk.

La última opción sería crear proyectos completamente diferentes para cada apk. Empujar todo el código compartido en las bibliotecas.

Siempre se puede poner todo en un apk por ahora y cambiar a varios productFlavors si el apk crece demasiado grande. Puesto que la lógica es similar no sería demasiado difícil swicth. Espero que esto ayude.

Las bibliotecas de soporte están diseñadas para minimizar la cantidad de trabajo que debe realizar para detectar diferencias en la versión de Android en la que se ejecuta la aplicación. Por ejemplo, RecyclerView está disponible en la biblioteca de soporte. Entre esta y layout-xxx carpetas de layout-xxx , normalmente puede crear un solo APK para todos los niveles de API y factores de forma de dispositivo.

  • ImageView inside CollapsingToolbarLayout no visible en ciertos dispositivos
  • Diferencia entre TextInputLayout y TextInputEditText
  • FloatingActionButton, botón cuadrado debajo del nivel API 17
  • TextInputLayout no muestra la sugerencia de EditText antes de que el usuario se centre en ella
  • Cómo cambiar el color de la etiqueta de TextinputLayout y edittext subrayar android
  • Establecer el ítem / id de elementos inicialmente seleccionado en BottomNavigationView
  • CollapsingToolbarLayout y NestedScrollView no funcionan
  • Desactivar el desplazamiento de la barra de herramientas
  • Biblioteca de soporte de diseño V22 - No hay fuentes?
  • Cómo crear un tamaño personalizado de FloatingActionButton
  • Cómo agregar elementos de submenú a NavigationView programaticamente en lugar de menú xml
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.