En este artículo, construiremos un proyecto en Xilófono usando Java y XML en Android. El xilófono originalmente es un instrumento que se toca golpeando una fila de barras de madera. Esta aplicación implementará un instrumento similar a un xilófono que es capaz de producir sonidos. Crearemos algunos botones en esta aplicación que actuarán como teclas del instrumento cuando se presionen. Esta va a ser una aplicación de una sola actividad. qué
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: antes de ir a la sección de codificación, primero debe hacer una tarea previa
Agregar colores: necesitamos agregar colores en el valor del directorio de recursos. Usaremos estos colores para nuestros botones.
XML
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="green1">#0F9D58</color> <color name="green2">#F21BB56A</color> <color name="green3">#E620C374</color> <color name="green4">#D929CF7E</color> <color name="green5">#CC2ED885</color> <color name="green6">#BF34E18D</color> <color name="green7">#B33FF39B</color> </resources>
Agregar notas clave : guarde estas notas de audio en la aplicación> res> directorio sin formato
Nota : Artículo de referencia:
Paso 3: trabajar con el archivo activity_main.xml
Los códigos XML se utilizan para construir la estructura de la actividad, así como su parte de estilo. En este archivo XML, crearemos un LinearLayout con orientación vertical. Este contendrá siete botones , cada uno con diferentes funciones onClick . El ancho del botón se reduce a medida que bajamos para darle un aspecto de xilófono y también para simbolizar que cuanto más pequeño es el botón menos es el sonido de la nota. 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:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="vertical" tools:context=".MainActivity"> <Button style="@style/KeyStyle" android:id="@+id/c_key" android:background="@color/green1" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="c"/> <Button style="@style/KeyStyle" android:id="@+id/d_key" android:background="@color/green2" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="d"/> <Button style="@style/KeyStyle" android:id="@+id/e_key" android:background="@color/green3" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="e"/> <Button style="@style/KeyStyle" android:id="@+id/f_key" android:background="@color/green4" android:layout_marginLeft="15dp" android:layout_marginRight="15dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="f"/> <Button style="@style/KeyStyle" android:id="@+id/g_key" android:background="@color/green5" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="g"/> <Button style="@style/KeyStyle" android:id="@+id/a_key" android:background="@color/green6" android:layout_marginLeft="25dp" android:layout_marginRight="25dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="a"/> <Button style="@style/KeyStyle" android:id="@+id/b_key" android:background="@color/green7" android:layout_marginLeft="30dp" android:layout_marginRight="30dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="b"/> </LinearLayout>
Paso 4: trabajar con el archivo MainActivity.java
En MainActivity necesitamos crear un nuevo SoundPool . Un Soundpool utiliza los servicios de biblioteca de MediaPlayer para cargar archivos de audio. Crearemos una función para cada botón de tecla con una nota de audio diferente. 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.media.AudioManager; import android.media.SoundPool; import android.os.Bundle; import android.util.Log; import android.view.View; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { // Helpful Constants private final int sim_sound = 7; private final float lft_vol = 1.0f; private final float rgt_vol = 1.0f; private final int loop = 0; private final int prty = 0; private final float NORMAL_PLAY_RATE = 1.0f; // Add member variables here private SoundPool mSoundPool; private int mCSoundId1; private int mDSoundId2; private int mESoundId3; private int mFSoundId4; private int mGSoundId5; private int mASoundId6; private int mBSoundId7; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Create a new SoundPool mSoundPool = new SoundPool(sim_sound, AudioManager.STREAM_MUSIC, 0); // Load and get the IDs to identify the sounds mCSoundId1 = mSoundPool.load(getApplicationContext(), R.raw.note1_c, 1); mDSoundId2 = mSoundPool.load(getApplicationContext(), R.raw.note2_d, 1); mESoundId3 = mSoundPool.load(getApplicationContext(), R.raw.note3_e, 1); mFSoundId4 = mSoundPool.load(getApplicationContext(), R.raw.note4_f, 1); mGSoundId5 = mSoundPool.load(getApplicationContext(), R.raw.note5_g, 1); mASoundId6 = mSoundPool.load(getApplicationContext(), R.raw.note6_a, 1); mBSoundId7 = mSoundPool.load(getApplicationContext(), R.raw.note7_b, 1); } // Add the play methods triggered by the buttons public void c (View v){ mSoundPool.play(mCSoundId1, lft_vol, rgt_vol, prty,loop,NORMAL_PLAY_RATE); } public void d (View v){ mSoundPool.play(mDSoundId2, lft_vol, rgt_vol, prty,loop,NORMAL_PLAY_RATE); } // Add the play methods triggered by the buttons public void e (View v){ mSoundPool.play(mESoundId3, lft_vol, rgt_vol, prty,loop,NORMAL_PLAY_RATE); } public void f (View v){ mSoundPool.play(mFSoundId4, lft_vol, rgt_vol, prty,loop,NORMAL_PLAY_RATE); } public void g (View v){ mSoundPool.play(mGSoundId5, lft_vol, rgt_vol, prty,loop,NORMAL_PLAY_RATE); } public void a (View v){ mSoundPool.play(mASoundId6, lft_vol, rgt_vol, prty,loop,NORMAL_PLAY_RATE); } public void b (View v){ mSoundPool.play(mBSoundId7, lft_vol, rgt_vol, prty,loop,NORMAL_PLAY_RATE); } }
Producción:
Publicación traducida automáticamente
Artículo escrito por namanjha10 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA