想要将随机imageview视为无法点击

时间:2012-02-23 15:09:17

标签: android android-layout

我正在制作小泡泡话游戏,屏幕上会有很多泡泡(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个对象我想将它们设置为不可单击? 我希望我已经解释了我太困惑的事情......

1 个答案:

答案 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个随机视图并将它们设置为不可点击。如果我们确定一个已经不可点击的视图(因为我们已经在上一步做到了这一点),我们会重新开始。祝你好运!