我刚刚开始进行android开发,所以请原谅,我也搜索过但我发现的任何东西都是初学友好的。
我想要实现的是当我按下listview上的某个项目时,会播放一个短的声音片段,这些片段可能只有2秒钟。到目前为止,这是我的代码,我已经按照教程创建了列表视图。
所以要清楚,它将是一个名单列表,当点击一个名字时,将播放声音。
NamesList.java
package me.creativebla.names;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class NamesList extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// storing string resources into Array
String[] names = getResources().getStringArray(R.array.names);
// Binding resources Array to ListAdapter
this.setListAdapter(new ArrayAdapter<String>(this, R.layout.activity_names_list, R.id.label, names));
ListView lv = getListView();
}
};
列表数据可在list_data.xml中找到
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="names">
<item>Name 1</item>
<item>Name 2</item>
<item>Name 3</item>
</string-array>
</resources>
如果有人能帮助我,我会非常感激,一步一步告诉我需要做什么。感谢。
答案 0 :(得分:1)
假设您有两个名为&#34; rock_sound&#34;的声音文件和&#34; disco_sound&#34;在 res / raw 文件夹中,listview会监听点击事件并根据点击的位置(列表中的名称)播放声音:
package me.creativebla.names;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class NamesList extends ListActivity {
private SoundPool soundPool;
private int soundID1;
private int soundID2;
private boolean soundLoaded;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.name_of_layout);
// Set hardware buttons to control music
this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
// storing string resources into Array
String[] names = getResources().getStringArray(R.array.names);
// Binding resources Array to ListAdapter
this.setListAdapter(new ArrayAdapter<String>(this, R.layout.activity_names_list, R.id.label, names));
ListView lv = getListView();
// load the sound here
soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0); //first parameter restricts the number of sound effects can be played concurrently
soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
if (sampleId == R.raw.rock_sound) {
soundLoaded = true;
}
}
});
soundID1 = soundPool.load(this, R.raw.rock_sound, 1);
soundID2 = soundPool.load(this, R.raw.disco_sound, 1);
}
};
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long arg3) {
//play sound based on item name clicked
switch(position){
case 0:
playSound(soundID1, 1.0f);
break;
case 1:
playSound(soundID2, 0.5f);
break;
}
}
});
//播放声音的方法。 volume是一个浮点值,范围为0.0(最低)1.0(最大值)
private void playSound(int soundId, float volume) {
if (soundLoaded)
soundPool.play(soundId, volume, volume, 1, 0, 1f);
}
}