我正在学习android,我的第一个应用程序是一个简单的乐器。我目前有7个按钮,我每个人都使用MediaPlayer。问题是每个按钮都具有相同的功能,我想避免在Onclick方法上使用switch语句 - 这是我在网上找到的唯一内容。有人告诉我用相应的mp3文件命名按钮并写一个简单的" play"与右键/按钮匹配的功能,但我想我做得不对。有人可以帮我吗?这是我所拥有的,并且对此有所帮助:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
//these buttons have the same name as the mp3 key notes file
c1= (Button) findViewById(R.id.key1);
c1.setOnClickListener(this);
d1= (Button) findViewById(R.id.key2);
d1.setOnClickListener(this);
e1= (Button) findViewById(R.id.key3);
e1.setOnClickListener(this);
f1= (Button) findViewById(R.id.key4);
f1.setOnClickListener(this);
g1= (Button) findViewById(R.id.key5);
g1.setOnClickListener(this);
a1=(Button) findViewById(R.id.key6);
a1.setOnClickListener(this);
b1=(Button) findViewById(R.id.key7);
b1.setOnClickListener(this);
OnClick方法(当然,第一个if示例有效,但如果我想要一个复杂的乐器,我会重复代码。所以我想要这个"否则"是唯一的声明) :
@Override
public void onClick(View v) {
Button b = (Button)v;
String note=b.getText().toString();
if(v==c1){
mp = MediaPlayer.create(this, R.raw.c1);
mp.start();
}
else{
play( note+".mp3");
}
尝试游戏方法:
public void play(String note){
note.equals("cs2");//??
//the mp3 files are stored in res/raw and I also tried that specific path but it didnt work. The keys are silent, except the c1
}
编辑: 现在我只有这个:
public void play(String note){
mp = MediaPlayer.create(this,getResources().getIdentifier(note,"raw",getPackageName()));
mp.start();
}
@Override
public void onClick(View v) {
clickCount++;
updateClickCount();
Button b = (Button)v;
String note=b.getText().toString();
play(note);
}
但该应用仍然崩溃
编辑:XML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main2"
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"
tools:context="com.example.vtorferreira.sounds.MainActivity">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
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"
tools:context="com.example.vtorferreira.sounds.MainActivity">
<ImageView
android:layout_width="300dp"
android:layout_height="1200dp"
android:id="@+id/kid"
android:src="@drawable/kid"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:clickable="true"/>
<ImageView
android:layout_width="300dp"
android:layout_height="1200dp"
android:id="@+id/partido"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:clickable="true"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_weight="10">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="5"
android:orientation="horizontal"
android:weightSum="34"
android:gravity="center">
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#9BC53D"
android:visibility="invisible"
android:id="@+id/key1_ext"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:layout_marginLeft="1dp"
android:layout_marginRight="1dp"
android:background="#000000"
android:visibility="invisible"
android:id="@+id/black1"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#2660A4"
android:visibility="invisible"
android:id="@+id/key2_ext"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#000000"
android:visibility="invisible"
android:id="@+id/black2"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#399E5A"
android:visibility="invisible"
android:id="@+id/key3_ext"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#5F0F40"
android:visibility="invisible"
android:id="@+id/key4_ext"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#000000"
android:visibility="invisible"
android:id="@+id/black3"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#FA7921"
android:visibility="invisible"
android:id="@+id/key5_ext"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#000000"
android:visibility="invisible"
android:id="@+id/black4"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#9BC53D"
android:visibility="invisible"
android:id="@+id/key6_ext"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#000000"
android:visibility="invisible"
android:id="@+id/black5"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#2660A4"
android:visibility="invisible"
android:id="@+id/key7_ext"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#399E5A"
android:visibility="invisible"
android:id="@+id/key8_ext"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#000000"
android:visibility="invisible"
android:id="@+id/black6"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#5F0F40"
android:visibility="invisible"
android:id="@+id/key9_ext"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#000000"
android:visibility="invisible"
android:id="@+id/black7"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#FA7921"
android:visibility="invisible"
android:id="@+id/key10_ext"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#000000"
android:visibility="invisible"
android:id="@+id/black8"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#9BC53D"
android:visibility="invisible"
android:id="@+id/key11_ext"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#2660A4"
android:visibility="invisible"
android:id="@+id/key12_ext"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#000000"
android:visibility="invisible"
android:id="@+id/black9"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#399E5A"
android:visibility="invisible"
android:id="@+id/key13_ext"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#000000"
android:visibility="invisible"
android:id="@+id/black10"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#5F0F40"
android:visibility="invisible"
android:id="@+id/key14_ext"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="10"
android:orientation="horizontal"
android:weightSum="7"
android:gravity="center">
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.5"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#2660A4"
android:visibility="invisible"
android:id="@+id/key1"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.5"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#2660A4"
android:visibility="invisible"
android:id="@+id/key2"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.5"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#399E5A"
android:visibility="invisible"
android:id="@+id/key3"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.5"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#5F0F40"
android:visibility="invisible"
android:id="@+id/key4"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.5"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#FA7921"
android:visibility="invisible"
android:id="@+id/key5"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.5"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#9BC53D"
android:visibility="invisible"
android:id="@+id/key6"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.5"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#2660A4"
android:visibility="invisible"
android:id="@+id/key7"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.5"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#399E5A"
android:visibility="invisible"
android:id="@+id/key8"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.5"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#5F0F40"
android:visibility="invisible"
android:id="@+id/key9"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.5"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#FA7921"
android:visibility="invisible"
android:id="@+id/key10"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.5"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#9BC53D"
android:visibility="invisible"
android:id="@+id/key11"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.5"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#2660A4"
android:visibility="invisible"
android:id="@+id/key12"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.5"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#399E5A"
android:visibility="invisible"
android:id="@+id/key13"/>
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.5"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#5F0F40"
android:visibility="invisible"
android:id="@+id/key14"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="6"
android:orientation="horizontal"
android:weightSum="10"
android:gravity="center">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:id="@+id/pontos"
android:textSize="15sp"
android:textStyle="normal|bold" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
android:orientation="horizontal"
android:weightSum="8"
android:gravity="center">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
android:orientation="horizontal"
android:gravity="center">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp"
android:background="#2072CA"
android:id="@+id/pref"
android:text="Preferences"
/>
<ToggleButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp"
android:background="#2072CA"
android:id="@+id/solo"
android:textOff="Play Magic Piano!"
android:textOn="Close Piano"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginLeft="2dp"
android:layout_marginRight="2dp"
android:background="#2072CA"
android:id="@+id/learn"
android:text="Learn about piano"
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
</RelativeLayout>
答案 0 :(得分:0)
删除文件扩展名(+&#34; .mp3&#34;)并使用:
getResources().getIdentifier("FILE NAME WITHOUT EXTENSION","raw", getPackageName())
还要确保每个按钮文本都包含原始文件夹中没有扩展名的文件名。例如&#34; c1&#34;。
以下是应该如何查看最终代码:
@Override
public void onClick(View v) {
Button b = (Button)v;
String note = b.getText().toString().toLowerCase();
play(note);
}
public void play(String note){
try {
mp = MediaPlayer.create(this,getResources().getIdentifier(note,"raw", getPackageName()));
mp.start();
} catch (Exception e) {
Log.e("Error", "error playing file with name : " + note + "\n" + e);
}
}
您必须在按钮元素上设置文字。对于每一个,您应该显示一个文件名。例如,添加android:text"c1"
:
<Button
android:text="c1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.5"
android:layout_marginLeft="3dp"
android:layout_marginRight="3dp"
android:background="#2660A4"
android:visibility="visible"
android:id="@+id/key1"/>
为了澄清一点,代码检索按钮上的文本。例如&#39; c1&#39;。然后,您的应用将尝试在原始文件夹中找到名称为c1的文件。如果您没有在按钮上设置任何文字...当然,您的应用程序找不到任何名称为&#39;&#39;&#39;&#39; !希望你明白我的意思。