我想随机显示5个xml布局,并且还可以在适当的按钮上点击每个出现的xml文件来随机播放它们。高兴地说,下面的代码工作真棒.---- ** 我已经把每个shuffle的xml文件延迟0.75秒。在这个延迟我有一个声音play.I没有真正的想法如何实现这一点。在下面的代码中我使用了Switch-Case,但它不工作。我的要求是,如果我点击xml文件1上的按钮,我想播放Sound1,如果Button是来自Xml文件5,我想要播放相应的Sound5等等......就这样,持续0.75秒,然后移动到下一个XML文件并重复循环。 * ----在按钮上显示图像(或媒体)单击随机更改布局
public class ReceivingActivity extends Activity{
Random random = new Random();
Handler handler = new Handler();
private int mPosition = 0;
private Handler mHandler = new Handler();
private List<Integer> mLayouts;
private Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
mLayouts = new ArrayList<Integer>();
mLayouts.add(R.layout.first);
mLayouts.add(R.layout.second);
mLayouts.add(R.layout.third);
mLayouts.add(R.layout.fourth);
mLayouts.add(R.layout.fifth);
Collections.shuffle(mLayouts);
setContentView(mLayouts.get(mPosition));
mButton = (Button)findViewById(R.id.btnid);
mButton.setOnClickListener(mListener);
mPosition++;
}
private OnClickListener mListener = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(), "WTH is happening", Toast.LENGTH_SHORT).show();
// TODO Auto-generated method stub
if(mPosition >= mLayouts.size()){
int lastId = mLayouts.get(mLayouts.size() - 1);
Collections.shuffle(mLayouts);
while (lastId == mLayouts.get(0)) {
Collections.shuffle(mLayouts);
}
mPosition = 0;
}
setContentView(mLayouts.get(mPosition));
switch (mLayouts.get(mPosition)) {
case R.layout.first:
Toast.makeText(getApplicationContext(), "First", Toast.LENGTH_SHORT).show();
iv1.setBackgroundResource(R.drawable.ic_launcher);
break;
case R.layout.second:
Toast.makeText(getApplicationContext(), "second", Toast.LENGTH_SHORT).show();
//Some sound
iv2.setBackgroundResource(R.drawable.ic_launcher);
break;
case R.layout.third:
Toast.makeText(getApplicationContext(), "third", Toast.LENGTH_SHORT).show();
//Some media , Different for each Layout..
iv3.setBackgroundResource(R.drawable.ic_launcher);
break;
case R.layout.fourth:
Toast.makeText(getApplicationContext(), "fourth", Toast.LENGTH_SHORT).show();
iv4.setBackgroundResource(R.drawable.ic_launcher);
break;
case R.layout.fifth:
Toast.makeText(getApplicationContext(), "fifth", Toast.LENGTH_SHORT).show();
iv5.setBackgroundResource(R.drawable.ic_launcher);
break;
default:
break;
}
mPosition++;
mButton = (Button)findViewById(R.id.btnid);
mButton.setOnClickListener(mListener);
}
}, 2050);
}
};
mPosition++;
mButton = (Button)findViewById(R.id.btnid);
mButton.setOnClickListener(mListener);
}
}, 750);
}
};
}
任何种类的帮助是非常有帮助的。
不要切换对'mPosition'如果你要测试其对布局的ID。如果你想测试布局ID,使用'switch(mLayouts.get(mPosition))'。 – Luksprog 2013-03-14 12:44:48
嗨,在上面编辑,切换与“开关(mlayouts.get(mPosition))”工作正常*仅用于吐司消息,如果我把上述Imageresources,空指针异常即将到来。 * --->切换从第二个混洗版面开始。第一个是简单的和剩下的所有作品完美地显示敬酒。任何帮助? – sai 2013-03-15 09:37:30