我正在制作小泡泡话游戏,屏幕上会有很多泡泡(Imageview)。现在将在levelScreen上放置15个气泡...将有三个级别...在一个布局level.xml中说出第一个级别的bg及其15个对象 这是我的level1
的xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/gmw_01"
android:onClick="onClick"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/relativeLayout1" >
<ImageView
android:onClick="objectClick"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/imageView1"
android:src="@drawable/bb01"
android:layout_marginLeft="998dp"
android:layout_marginTop="593dp"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"/>
<ImageView
android:onClick="objectClick"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/imageView2"
android:src="@drawable/bb02"
android:layout_marginLeft="20dp"
android:layout_marginTop="39dp"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"/>
<ImageView
android:onClick="objectClick"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/imageView3"
android:src="@drawable/bb03"
android:layout_marginLeft="497dp"
android:layout_marginTop="153dp"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"/>
就像那个在上面的布局中包含15个气泡的Imageview ....
现在我有一个屏幕,其中选择了水平,并且我将level1放在gamplayScreen.xml中,即我在gamePlayScreen中对其进行充气,其中左侧是Headup显示,此级别屏幕将继续改变....
在使用gamePlayScreen充气我的等级之前....我想随机拾取8个气泡,这些气泡只能由用户点击。在每个级别都会有15个气泡可见,但我想在每个级别随机选择8个,具体取决于该级别各自的气泡...... 这是gamePlayActivity
public class GamePlayActivity extends Activity {
static int ObjectsFound;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gameplay);
// ViewGroup where n number of view is going to added
ViewGroup layout= (ViewGroup) findViewById(R.id.GamePlayScreen);
// inflating the layout depending on the level
View level = View.inflate(this, LevelSelectionActivity.levelscreen, null);
// adding level bg for the respective selected level
layout.addView(level);
}
public void objectClick(View objectClicked)
{
Toast msg;
int Object = objectClicked.getId();
ImageView img= (ImageView)findViewById(objectClicked.getId());
switch (Object) {
case R.id.imageView1:
img.setVisibility(View.INVISIBLE);
msg = Toast.makeText(GamePlayActivity.this, "Bubble Found", Toast.LENGTH_SHORT);
msg.setGravity(Gravity.CENTER, msg.getXOffset() / 2, msg.getYOffset() / 2);
msg.show();
break;
}
}
现在如何从我在ImageView中的15个对象中执行随机的8个对象我想将它们设置为不可单击? 我希望我已经解释了我太困惑的事情......
答案 0 :(得分:1)
Pseudocode,尚未对此进行测试但应该适合您:
private int[] ids = {
R.id.imageView1,
R.id.imageView2,
R.id.imageView3,
R.id.imageView4,
...
}
public void randomize() {
Random generator = new Random();
for(int i = 0; i<8 ; i++) {
while(true) {
View v = findViewById(generator.nextInt(ids.length));
if(!v.isClickable()) {
v.setClickable(false);
break;
}
}
}
}
基本上我们选择8个随机视图并将它们设置为不可点击。如果我们确定一个已经不可点击的视图(因为我们已经在上一步做到了这一点),我们会重新开始。祝你好运!