Ken*_*alH 4 java performance android if-statement button
假设我说我使用一个if语句来解释向事件监听器发送事件值的十个不同的可能按钮:
public boolean onTouch(int v) { //this is my only listener for all ten buttons
if(event.getAction() == MotionEvent.ACTION_DOWN){
if(v==button_one){pool.play(bass1, 1f,1f, 1, 0, 1f);}
if(v==button_two){pool.play(bass2, 1f,1f, 1, 0, 1f);}
if(v==button_three){pool.play(bass3, 1f,1f, 1, 0, 1f);}
if(v==button_four){pool.play(snare1, 1f,1f, 1, 0, 1f);}
if(v==button_five){pool.play(snare2, 1f,1f, 1, 0, 1f);}
if(v==button_six){pool.play(snare3, 1f,1f, 1, 0, 1f);}
if(v==button_seven){pool.play(hh1, 1f,1f, 1, 0, 1f);}
if(v==button_eight){pool.play(hh2, 1f,1f, 1, 0, 1f);}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
将这些分类更有效率吗?说...一个用于陷阱的onClick事件和一个用于低音的onClick和一个用于嗨帽子的事件,这样当按下一个按钮时,程序不必计算每个if语句,只有一个是在被调用者的监听器内事件?
这样的事情怎么样?
HashMap<int,int> soundMap = new HashMap<int,int>();
soundMap.put(button_one, bass1);
soundMap.put(button_two, bass2);
soundMap.put(button_three, bass3);
soundMap.put(button_four, snare1);
soundMap.put(button_five, snare2);
soundMap.put(button_six, snare3);
soundMap.put(button_seven, hh1);
soundMap.put(button_eight, hh2);
Run Code Online (Sandbox Code Playgroud)
将HashMap作为类变量,并在onCreate或其他东西中初始化映射.然后你可以将它用于你的听众:
public boolean onTouch(int v) {
if(event.getAction() == MotionEvent.ACTION_DOWN) {
pool.play(soundMap.get(v), 1f, 1f, 1, 0, 1f);
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
这样做的好处是,如果将来必须添加更多按钮,则只需使用新的声音映射修改地图初始化方法; 听众不需要任何改变.
| 归档时间: |
|
| 查看次数: |
278 次 |
| 最近记录: |