我想在我的ObjectsClass中获取我在image1.xml中的图像视图的ID,并且我在GamePlayActivity中夸大了这个布局...我的ObjectClass不是活动,那么如何在该类中获取id的数组...这是我的level.xml说有15个我刚刚展示的ImageView ....
<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"/>
这是我的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);
** getRandom(); // here I want to call that random because this should be done before my level is added on the view**
// 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;
}
}
和ObjectClass
public class Objects {
int ObectId[];
Objects(Context context)
{
super();
for(int i=0;i<15;++i)
{
**ObectId[i]=R.id.;** // what to get it over here ? ? ?
}
}
public void randomize() {
Random generator = new Random();
for(int i = 0; i<8 ; i++) {
while(true) {
**View v = findViewById(generator.nextInt(Objectid.length));**
if(!v.isClickable()) {
v.setClickable(false);
break;
}
}
}
}
}
最后我希望随机数量的对象无法点击,即15个对象中的每一个用户只能在屏幕上点击8个对象,所以在我的等级开始之前,即在我在我的游戏玩法中充气之前,我想得到随机8可点击,反之亦然...
除此之外它应该适用于所有级别...现在我有一个level1.xml如何实现所有级别...我需要在所有布局中给出相同的图像视图ID吗?
答案 0 :(得分:1)
当然可以,您需要做的就是使ImageView具有相同的id名称,然后您始终可以使用相同的int id访问它们。
加载新布局后,不要忘记重新启动它们。
答案 1 :(得分:1)
尝试这样的事情
int resA = getResources().getIdentifier("your image view", "your layout", getPackageName());
希望这有帮助..
答案 2 :(得分:1)
除了您感兴趣的每个RelativeLayout
之外,ImageView
内是否有任何观点?如果没有,只需使用布局上的getChildCount()
和getChildAt()
方法来获取所需的视图。任何ViewGroup
已将其子项存储在数组中,因此如果这些是包含在其中的唯一视图,则没有理由复制该行为:
//Somewhere in your code get a reference to the layout
RelativeLayout layout = (RelativeLayout)findViewById(R.id.relativeLayout1);
//Then, update your view selection line like so
**View v = layout.getChildAt(generator.nextInt(layout.getChildCount()));**
HTH