Foro de elhacker.net

Programación => Java => Mensaje iniciado por: rubia28 en 17 Diciembre 2021, 19:19 pm



Título: Gridview para mostrar imágenes storage Firebase
Publicado por: rubia28 en 17 Diciembre 2021, 19:19 pm
Buenas a todos,

Estoy desarrollando un juego de puzzles para android y me gustaría que las imágenes que tiene el usuario para elegir el puzzle en lugar de ser de una carpeta local, fuesen de una carpeta de firebase.

Actualmente, estas imágenes tienen un adaptador para que aparezcan en un gridview con un marco etc. Pero no consigo saber como poder dar acceso al imageAdapter y a la clase Main para que muestre las imágenes de la carpeta como hace ahora en local pero con los archivos de firebase.

He buscado el multitud de sitios pero no encuentro nada similar. ¿Alguien puede echarme una mano?

Actualmente tengo el imageAdapter y el MainActivity así;

ImageAdaptaer;

Código
  1. public ImageAdapter(Context c) {
  2.        mContext = c;
  3.        am = mContext.getAssets();
  4.        try {
  5.            files  = am.list("img");
  6.        } catch (IOException e) {
  7.            e.printStackTrace();
  8.        }
  9.    }

Código
  1. private Bitmap getPicFromAsset(ImageView imageView, String assetName) {
  2.        // Obtener las dimensiones de la Vista
  3.        int targetW = imageView.getWidth();
  4.        int targetH = imageView.getHeight();
  5.  
  6.        if(targetW == 0 || targetH == 0) {
  7.            // la vista no tiene dimensiones establecidas
  8.            return null;
  9.        }
  10.  
  11.        try {
  12.            InputStream is = am.open("img/" + assetName);
  13.            // Obtener las dimensiones del mapa de bits
  14.            BitmapFactory.Options bmOptions = new BitmapFactory.Options();
  15.            bmOptions.inJustDecodeBounds = true;
  16.            BitmapFactory.decodeStream(is, new Rect(-1, -1, -1, -1), bmOptions);
  17.            int photoW = bmOptions.outWidth;
  18.            int photoH = bmOptions.outHeight;
  19.  
  20.            // Determine cuánto reducir la imagen
  21.            int scaleFactor = Math.min(photoW/targetW, photoH/targetH);
  22.  
  23.            is.reset();
  24.  
  25.            // Decodifica el archivo de imagen en un mapa de bits de tamaño para llenar la vista
  26.            bmOptions.inJustDecodeBounds = false;
  27.            bmOptions.inSampleSize = scaleFactor;
  28.            bmOptions.inPurgeable = true;
  29.  
  30.            return BitmapFactory.decodeStream(is, new Rect(-1, -1, -1, -1), bmOptions);
  31.        } catch (IOException e) {
  32.            e.printStackTrace();
  33.  
  34.            return null;
  35.        }
  36.    }

MainActivity;

Código
  1. AssetManager am = getAssets();
  2.        try {
  3.            final String[] files = am.list("img");
  4.  
  5.            GridView grid = findViewById(R.id.grid);
  6.            grid.setAdapter(new ImageAdapter(this));
  7.            grid.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  8.                @Override
  9.                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
  10.  
  11.                    Intent intent = new Intent(getApplicationContext(), PuzzleActivity.class);
  12.                    intent.putExtra("assetName", files[i % files.length]);

Mil gracias por vuestra ayuda.


Título: Re: Gridview para mostrar imágenes storage Firebase
Publicado por: rub'n en 17 Diciembre 2021, 22:01 pm
Recuerda que Firebase es un servicio externo, deberas usar su api para conectarte a el, tienes en ejmplos en Java y Kotlin.

* https://firebase.google.com/docs/storage/android/download-files