Android GridLayout或GridView更适合引用静态项?
我正在构建一个简单的打掉一只鼹鼠克隆体,我很难弄清楚如何进行布局。自从<代码>姜饼<代码>是新游戏以来,我就没有玩过Android GridLayout或GridView更适合引用静态项?,android,xml,gridview,layout,Android,Xml,Gridview,Layout,我正在构建一个简单的打掉一只鼹鼠克隆体,我很难弄清楚如何进行布局。自从姜饼是新游戏以来,我就没有玩过Androiddev,而且我以前从未尝试过编写游戏,所以如果这些都是新问题,请原谅我,但我已经被困在谷歌上好几个小时了,我没有得到答案 我基本上得到了一个3x4GridLayout,在layout.xml文件中声明了12ImageView,我很难弄清楚如何从XML中创建的对象引用在代码中创建对象引用,从而使它们随机出现和消失,并处理用户触摸事件 我看到了很多关于gridview和Adapter对象
Android
dev,而且我以前从未尝试过编写游戏,所以如果这些都是新问题,请原谅我,但我已经被困在谷歌上好几个小时了,我没有得到答案
我基本上得到了一个3x4
GridLayout
,在layout.xml
文件中声明了12
ImageView,我很难弄清楚如何从XML中创建的对象引用在代码中创建对象引用,从而使它们随机出现和消失,并处理用户触摸事件
我看到了很多关于gridview
和Adapter
对象的信息,这些对象被用来从xml创建引用和处理触摸事件,但我不知道如何使用GridLayout
实现这一点。我应该在线性布局
中切换到使用网格视图
,还是缺少一些非常简单的东西
另外,在myActivity
子类或myView
子类中实现onItemClickedListener()
是否是更好的做法?我对我的视图
子类与XML
布局的关系有点困惑。也许我把事情复杂化了
谢谢你们的帮助,伙计们。这是我的layout.xml,如果有帮助的话
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="3"
android:rowCount="4"
android:useDefaultMargins="true"
android:background="@drawable/grass_bg"
android:id="@+id/wam_view_layout">
<ImageView
android:id="@+id/mole1"
android:visibility="invisible"
android:layout_width="120dip"
android:layout_height="140dip"
android:contentDescription="@string/mole_description"
android:layout_gravity="center"
android:scaleType="fitCenter"
android:src="@drawable/mole" />
<ImageView
android:id="@+id/mole2"
android:visibility="invisible"
android:layout_width="120dip"
android:layout_height="140dip"
android:contentDescription="@string/mole_description"
android:layout_gravity="center"
android:scaleType="fitCenter"
android:src="@drawable/mole" />
<!--pattern continues until mole12-->
</GridLayout>
在活动中执行类似操作:
private ImageView imageMole1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);
imageMole1 = (ImageView) findViewById(R.id.mole1);
imageMole1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// handle click here e.g. call a method
// void onMoleClicked(int moleId)
}
});
}
要更改显示的图像,请使用,例如:
imageMole1.setImageResource(R.drawable.mole_gone);
添加布局XML。您已经使用了一些代码,例如使用
GridView
谢谢!所以我甚至不需要创建适配器子类?您可以使用它,但我想在您的情况下,它并不是真正必要的。GridView对于大量项目具有更好的性能。此外,网格视图只需单击一次侦听器。此外,如果您有一个合适的模型,那么网格视图适配器就可以很容易地保持视图的更新。所以取决于你和你的编程技巧。。。