En el artículo anterior, hemos visto que la mayoría de las veces cuando publicamos un estado en WhatsApp o publicamos una publicación en Facebook o Instagram, seleccionamos más de una imagen. Entonces, en este artículo, se ha discutido paso a paso cómo seleccionar una o más de una imagen de la galería y luego veremos el recuento total de la imagen seleccionada.
Implementación paso a paso
Paso 1: Crear un nuevo proyecto
Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Java como lenguaje de programación.
Paso 2: trabajar con el archivo AndroidManifest.xml
Para agregar datos a Firebase, deberíamos otorgar permisos para acceder a Internet. Para agregar estos permisos, vaya a la aplicación > AndroidManifest.xml y, dentro de ese archivo, agregue los siguientes permisos.
<usos-permiso android:name=”android.permission.READ_EXTERNAL_STORAGE”/>
<usos-permiso android:name=”android.permission.WRITE_EXTERNAL_STORAGE”/>
<usos-permiso android:name=”android.permission.INTERNET”/>
Paso 3: trabajar con el archivo activity_main.xml
Vaya a la aplicación > res > diseño > actividad_principal.xml y agregue el siguiente código a ese archivo. A continuación se muestra el código para el archivo activity_main.xml .
XML
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <Button android:id="@+id/select" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:text="Select Multiple Images" /> <ImageSwitcher android:id="@+id/image" android:layout_width="200dp" android:layout_height="200dp" android:layout_marginLeft="100dp" /> <!--click here to view previous image--> <Button android:id="@+id/previous" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:text="Previous" /> <!--click here to view next image--> <Button android:id="@+id/next" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:text="Next" /> <TextView android:id="@+id/text" android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="#000" android:textSize="22sp" android:textStyle="bold" /> </LinearLayout>
Paso 4: trabajar con el archivo MainActivity.java
Vaya al archivo MainActivity.java y consulte el siguiente código. A continuación se muestra el código del archivo MainActivity.java . Se agregan comentarios dentro del código para comprender el código con más detalle.
Java
import android.content.ClipData; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ImageSwitcher; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import android.widget.ViewSwitcher; import androidx.appcompat.app.AppCompatActivity; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { Button select, previous, next; ImageSwitcher imageView; int PICK_IMAGE_MULTIPLE = 1; String imageEncoded; TextView total; ArrayList<Uri> mArrayUri; int position = 0; List<String> imagesEncodedList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); select = findViewById(R.id.select); total = findViewById(R.id.text); imageView = findViewById(R.id.image); previous = findViewById(R.id.previous); mArrayUri = new ArrayList<Uri>(); // showing all images in imageswitcher imageView.setFactory(new ViewSwitcher.ViewFactory() { @Override public View makeView() { ImageView imageView1 = new ImageView(getApplicationContext()); return imageView1; } }); next = findViewById(R.id.next); // click here to select next image next.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (position < mArrayUri.size() - 1) { // increase the position by 1 position++; imageView.setImageURI(mArrayUri.get(position)); } else { Toast.makeText(MainActivity.this, "Last Image Already Shown", Toast.LENGTH_SHORT).show(); } } }); // click here to view previous image previous.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (position > 0) { // decrease the position by 1 position--; imageView.setImageURI(mArrayUri.get(position)); } } }); imageView = findViewById(R.id.image); // click here to select image select.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // initialising intent Intent intent = new Intent(); // setting type to select to be image intent.setType("image/*"); // allowing multiple image to be selected intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_MULTIPLE); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // When an Image is picked if (requestCode == PICK_IMAGE_MULTIPLE && resultCode == RESULT_OK && null != data) { // Get the Image from data if (data.getClipData() != null) { ClipData mClipData = data.getClipData(); int cout = data.getClipData().getItemCount(); for (int i = 0; i < cout; i++) { // adding imageuri in array Uri imageurl = data.getClipData().getItemAt(i).getUri(); mArrayUri.add(imageurl); } // setting 1st selected image into image switcher imageView.setImageURI(mArrayUri.get(0)); position = 0; } else { Uri imageurl = data.getData(); mArrayUri.add(imageurl); imageView.setImageURI(mArrayUri.get(0)); position = 0; } } else { // show this if no image is selected Toast.makeText(this, "You haven't picked Image", Toast.LENGTH_LONG).show(); } } }