¿Puedo realizar operaciones matemáticas en dimensiones y variables?

Soy un desarrollador del lado del cliente que entró recientemente en un proyecto android.

En el mundo del lado del cliente tenemos estructuras como SASS que nos permiten hacer operaciones matemáticas sobre las variables.

En los recursos de estilos de Android, tenemos Variables y dimensiones. Mi pregunta es si es posible lograr eso en Android también.

Por ejemplo:

dimens.xml <dimen name="baseFontSize">18sp</dimen> styles.xml <style name="heading1"> <item name="android:textSize"> @dimen/baseFontSize * 2.5 </item> ... </style> 

Definir una unidad de tamaño de fuente base, y juega con él a lo largo de toda la aplicación.

Si no es posible, cuál es la mejor práctica para lograrlo usando la forma de Android .

Podría crear un controlador principal para manejar todos los conjuntos de escala.

Por ejemplo, tiene un diseño:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/my_text_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" android:textSize="16sp" /> </RelativeLayout> 

Y quieres escalar el tamaño del texto android:textSize="16sp" por una escala en dimens.xml .

Crea tu escala en una dimens.xml :

 <?xml version="1.0" encoding="utf-8"?> <resources> <item name="scaleRate" format="float" type="dimen">2.5</item> </resources> 

Y después de crear el controlador principal como este:

 package com.example.stackoverflowsandbox; import android.content.Context; import android.widget.TextView; public class MyScaleController { public static void applyTextSizeScale( final Context context, final TextView myTextView ) { final float currentTextSize = myTextView.getTextSize(); myTextView.setTextSize( currentTextSize * context.getResources().getDimension( R.dimen.scaleRate ) ); } } 

Así que usas así:

 package com.example.stackoverflowsandbox; import android.app.Activity; import android.widget.TextView; public class MainActivity extends Activity { @Override protected void onCreate( final android.os.Bundle savedInstanceState ) { super.onCreate( savedInstanceState ); this.setContentView( R.layout.activity_main ); final TextView myTextView = ( TextView ) this.findViewById( R.id.my_text_view ); MyScaleController.applyTextSizeScale( this, myTextView ); } } 

Ahora puede crear muchos dimens de escala de velocidad a muchos tamaños de pantalla. Lo que wann en la primera vez, hacer cálculos matemáticos en el archivo XML, no funcionará. Pero de esa manera creo que tienes mejor enfoque.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.