Android 在按钮上显示图像(或媒体)单击随机更改的布局

Android 在按钮上显示图像(或媒体)单击随机更改的布局,android,android-layout,random,Android,Android Layout,Random,我想随机显示5个xml布局,并且我会在单击每个xml文件的相应按钮时对它们进行洗牌。到目前为止,下面的代码运行得非常好。---**我对xml文件的每次洗牌都设置了0.75秒的延迟。在这个延迟中,我可以播放声音。我真的不知道如何实现这一点。在下面的代码中,我使用了Switch Case,但它不起作用。我的要求是,如果我单击xml文件1上的按钮,我想播放声音1,如果按钮来自Xml文件5,我想播放相应的声音5,以此类推……这样持续0.75秒,然后移动到下一个Xml文件,循环重复。*---- 公共类接收

我想随机显示5个xml布局,并且我会在单击每个xml文件的相应按钮时对它们进行洗牌。到目前为止,下面的代码运行得非常好。---**我对xml文件的每次洗牌都设置了0.75秒的延迟。在这个延迟中,我可以播放声音。我真的不知道如何实现这一点。在下面的代码中,我使用了Switch Case,但它不起作用。我的要求是,如果我单击xml文件1上的按钮,我想播放声音1,如果按钮来自Xml文件5,我想播放相应的声音5,以此类推……这样持续0.75秒,然后移动到下一个Xml文件,循环重复。*----

公共类接收活动扩展活动{
随机=新随机();
Handler=newhandler();
私有积分=0;
私有处理程序mHandler=新处理程序();
私人名单;
私人按钮;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
mLayouts=新的ArrayList();
M布局。添加(R布局。第一);
M布局。添加(右布局。第二);
M布局。添加(右布局。第三);
M布局。添加(右布局。第四);
M布局。添加(右布局。第五);
收藏。洗牌(mLayouts);
setContentView(mlayout.get(mPosition));
mButton=(按钮)findviewbyd(R.id.btnid);
mButton.setOnClickListener(mListener);
mPosition++;
}
private OnClickListener mListener=new OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
mHandler.postDelayed(新的Runnable(){
@凌驾
公开募捐{
Toast.makeText(getApplicationContext(),“正在发生什么”,Toast.LENGTH\u SHORT.show();
//TODO自动生成的方法存根
如果(mPosition>=mlayout.size()){
int lastId=mLayouts.get(mLayouts.size()-1);
收藏。洗牌(mLayouts);
while(lastId==mlayout.get(0)){
收藏。洗牌(mLayouts);
}
mPosition=0;
}
setContentView(mlayout.get(mPosition));
开关(mLayouts.get(mPosition)){
案例R.layout.first:
Toast.makeText(getApplicationContext(),“First”,Toast.LENGTH\u SHORT.show();
iv1.后退地面资源(R.drawable.ic_发射器);
打破
案例R.layout.second:
Toast.makeText(getApplicationContext(),“second”,Toast.LENGTH_SHORT.show();
//一些声音
iv2.后退地面资源(R.drawable.ic_发射器);
打破
案例R.布局第三:
Toast.makeText(getApplicationContext(),“third”,Toast.LENGTH_SHORT).show();
//一些媒体,每种布局不同。。
iv3.后退地面资源(R.drawable.ic_发射器);
打破
案例R.layout.fourth:
Toast.makeText(getApplicationContext(),“第四”,Toast.LENGTH\u SHORT.show();
iv4.后退地面资源(R.drawable.ic_发射器);
打破
案例R.layout.fifth:
Toast.makeText(getApplicationContext(),“fifth”,Toast.LENGTH_SHORT).show();
iv5.后退地面资源(R.drawable.ic_发射器);
打破
违约:
打破
}
mPosition++;
mButton=(按钮)findviewbyd(R.id.btnid);
mButton.setOnClickListener(mListener);
}
}, 2050);
}
};
mPosition++;
mButton=(按钮)findviewbyd(R.id.btnid);
mButton.setOnClickListener(mListener);
}
}, 750);
}
};
}

任何类型的帮助都非常有用。

您可以使用android:tag来区分按钮

<Button
    ...
    android:tag="1"/>

如果要根据布局ID对其进行测试,请不要切换到
mPosition
。如果要针对布局ID进行测试,请使用
switch(mLayouts.get(mPosition))
.Hi,在上面编辑的中,使用“switch(mLayouts.get(mPosition))”进行切换工作正常*仅适用于toast消息,如果我将Imageresources放在上面,空指针异常即将出现。*--->这种切换是从第二个洗牌布局开始的,第一个是普通布局,剩下的所有布局都完美地展示了祝酒词。有什么帮助吗?
<Button
    ...
    android:tag="1"/>
mButton = (Button)findViewById(R.id.btnid);
int id = Integer.parseInt(mButton.getTag());

switch(id) {
    ...
}