Cómo previsualizar SVG (Gráficos vectoriales escalables) en el explorador de Windows10


Apuntes de cómo añadir la funcionalidad en el explorador de windows10 que se visualizen las miniaturas de archivos SVG (Gráficos vectoriales escalables)

Todo diseñador gráfico, ilustrador, diseñador web usa a menudo gráficos en formato SVG, pero el explorador de windows no da soporte adecuado para la previsualización de SVG

Instalar SVG Viewer Extension

La extensión del visor de SVG para Windows es una extensión para el explorador nativo de windows, añade la funcionalidad de pre-visualizar miniaturas de SVG.

Hay una versión de 32 bits y una versión de 64 bits. Antes de descargar el software de instalación de la extensión, asegúrese de conocer la arquitectura de su computadora y sistema operativo.

Descarga oficial: SVG Viewer Extension for Windows Explorer v0.1.1

Su instalación es muy fácil solo seguir los pasos del instalador

Una vez finalizado, se debe reiniciar el ordenador y luego ya podremos ver la miniatura de los archivos SVG des de el explorar nativo de windows10

Anuncio publicitario

Implementar RecyclerView en AndroidX


¿Qué es un RecyclerView?

La clase RecyclerView nos permite mostrar un listado de elementos. es una versión más avanzada de la clase ListView con un mayor rendimiento.

Su nombre indica parte del funcionamiento, los elementos de la lista se reciclan para otros, de esa forma se aumenta el rendimiento en mostrar datos variables y lista más largas.

Añadir dependencia para el RecyclerView

Para usar el RecyclerView en tus proyectos Android Studio es necesario añadir la siguiente dependencia en app.gradle. RecyclerView forma parte del JetPack de AndroidX

 implementation 'androidx.recyclerview:recyclerview:1.0.0'

Añadir el widget RecyclerView

Para mostrar la lista dinámica se usa el widget RecyclerView, su declaración en el layout.xml es la siguiente:

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recycle_view_list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

Creando un adaptador para controlar el RecyclerView

Se debe crear un adaptador para controlar el RecyclerView. El adaptador se constituye:

  • Constructor y métodos para gestionar la carga de datos, añadir, remover, editar, actualizar etc…
  • en onCreateViewHolder es donde cargará el layout para cada elemento de la lista
  • onBindViewHolder es donde se cargará los datos por elemento que se visualice en pantalla
  • la clase interna ViewHolder permite obtener las referencias de los componentes visuales (views) de cada elemento de la lista, es el encargado de reciclar la vista si es necesario.
  • Sobrescribir el método getItemCount para que devuelve el total de elementos de la lista

Si desea usar Kotlin consultar Implementado RecyclerView con Kotlin y AndroidX

public class MySimpleAdapter extends RecyclerView.Adapter<MySimpleAdapter.MyViewHolder> {

    private String[] mDataSet;

    public MySimpleAdapter(String[] mDataSet) {
        this.mDataSet = mDataSet;
    }

    @NonNull
    @Override
    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(android.R.layout.simple_list_item_1, parent, false);
        return new MyViewHolder(v);
    }

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
        String data = mDataSet[position];
        holder.bindData(data);
    }

    @Override
    public int getItemCount() {
        return (mDataSet != null) ? mDataSet.length : 0;
    }

    public class MyViewHolder extends RecyclerView.ViewHolder {

        private TextView text1;

        public MyViewHolder(@NonNull View v) {
            super(v);
            text1 = (TextView) v.findViewById(android.R.id.text1);
        }

        public void bindData(final String data) {
            text1.setText(data);
        }
    }
}

Configurar el RecyclerView

Antes de mostrar los datos al RecyclerView se debe especificar como serán mostrados, se puede visualizar en forma de lista, columnas, bloques o bloques adaptados. Y por últmo asignar el adaptador

//inicalizar el recyclerview
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view_list);

//Definiendo datos
final String[] topics = {"Attractions", "Dining", "Education","Health","Family","Office","Promotions","Radio","Food","Sports","Travel"};

//Crear adaptador
MySimpleAdapter adapter = new MySimpleAdapter(topics);

//Fijar el tamaño de los elementos
recyclerView.setHasFixedSize(true);

//Declarar la visualización de los elementos
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setOrientation(RecyclerView.VERTICAL);
recyclerView.setLayoutManager(linearLayoutManager);

//Asignar el adaptador al recyclerview
recyclerView.setAdapter(adapter);

Encabezados Material Design para Nuestros proyectos Android


Si añadimos un menú lateral a las aplicaciones, en la parte superior queda un espacio generoso, ideal para poner un encabezados de la siguiente lista:

Fuente: Oxygenna

Solución del “Cannot resolve symbol GlideApp” – Glide Library v4 error


Está librería ahorra mucho código y agiliza los proyectos cuando necesitamos tratar con imágenes.

El cambio más significativo de la versión anterior es que ahora con Glide v4 requiere usar GlideApp en lugar de solo Glide. Ese pequeño cambio arroja errores en implementar la última versión en Gradle y Glide.

Cómo implementar la librería Glide 4

En el archivo app.gradle del proyecto añadir:

    implementation 'com.github.bumptech.glide:glide:4.8.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.8.0'

Para obtener más información de la librería Glide consultar la documentación no-oficial de Glide

Cómo resolver el error «Cannot resolve symbol GlideApp»

Para solucionar el error solo se debe crear una nueva clase MyAppGlideModule y que extiende de AppGlideModule. Consulte el código a continuación.

import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.module.AppGlideModule;

// nuevo a partir de Glide v4
@GlideModule
public final class MyAppGlideModule extends AppGlideModule {
    // dejar vacío por ahora
}

Para finalizar ir a Build > Make Project al construir el proyecto de nuevo, debería solucionar el error.

Separar la configuración en Home Asistant usando paquetes(Packages)


A parte de poder separar la configuración de Home Assistant usando carpetas, se puede hacer usando paquetes(packages en Home Assistant)

Separando la configuración con paquetes se puede diferenciar por zonas/habitaciones y allí tener la configuración agrupada de los sensores, dispositivos, automatizaciones, etc..

Crear un paquete

Primero se debe crear una carpeta con nombre packages y allí meter los archivos de cada habitación, comedor.yaml, cocina.yaml, dormitorio.yaml.

Cada archivo contendrá sus sensores, automatizaciones etc..

Declarando los paquetes

En el archivo configuration.yaml se debe añadir

packages: !include_dir_named packages

Si los paquetes incluyen las automatizacones, escenas etc.. retirar su declaración en el configuration.yaml

Ejemplo práctico

En este Github(my-home-automation) se puede sacar alguna idea de como implementar el uso de packages en Home Assistant