第一步:布局xml
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content"
android:background="@drawable/redball_ground">
<GridView
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:padding="10dip" android:verticalSpacing="10dip"
android:horizontalSpacing="10dip" android:numColumns="auto_fit"
android:columnWidth="60dip" android:stretchMode="columnWidth"
android:gravity="center" android:id="@+id/grid"/>
</LinearLayout>
第二步:定义图片的个数以及其他
// --点击次数 集合
private ArrayList<String> redBallList = new ArrayList<String>();
private GridView gv_red_ball;
private String FirstGV = "REDBALL";
// --红色球
int RED_BALL_COUNT = 33;// 球的个数
int RED_LINE_COUNT = 0;
private Drawable tv_gray_draw;
private Drawable tv_red_draw;
private Bitmap orgimg;
private int width;// 获取原始图片宽度
第三步:创建Activity
①:设置获取屏幕宽度
// 屏幕宽度
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenwidth = dm.widthPixels;
②:加载原始图片,获取尺寸
// 加载原始图片
orgimg = BitmapFactory.decodeResource(getResources(),
R.drawable.red_ball);// 将图片解析成二进制,getResources()是加载资源文件
width = orgimg.getWidth();
③:设置每行图片个数
RED_LINE_COUNT = screenwidth / width;
④:设置列数
gv_red_ball.setNumColumns(RED_LINE_COUNT);
gv_red_ball.setOnItemClickListener(new GridItemClickListener(FirstGV,
RED_BALL_COUNT));
gv_red_ball.setAdapter(new BallAdapter(this, tv_gray_draw));
第四:创建所需类OnItemClickListener
class GridItemClickListener implements OnItemClickListener {
String ballColor;
int ballCount;
public GridItemClickListener(String ballColor, int ballCount) {
super();
this.ballColor = ballColor;
this.ballCount = ballCount;
}
public void onItemClick(AdapterView<?> arg0, View view, int position,
long arg3) {
TextView tv_ball = (TextView) view;
Drawable current_draw = tv_ball.getBackground();
String ball_num = tv_ball.getText().toString();
if (ballColor.equals(FirstGV)) {
ballCount = RED_BALL_COUNT;
if (current_draw == tv_gray_draw) {
tv_ball.setBackgroundDrawable(tv_red_draw);
tv_ball.setTextColor(Color.WHITE);
} else {
tv_ball.setBackgroundDrawable(tv_gray_draw);
tv_ball.setTextColor(Color.BLACK);
}
if (redBallList.contains(ball_num)) {
redBallList.remove(ball_num);
} else {
redBallList.add(ball_num);
}
}
}
}
第五步:创建构造函数,来继承Baseadapter
public int getRED_BALL_COUNT() {
return RED_BALL_COUNT;
}
public void setRED_BALL_COUNT(int rED_BALL_COUNT) {
RED_BALL_COUNT = rED_BALL_COUNT;
}
// 自定义适配器
class BallAdapter extends BaseAdapter {
// 上下文环境
Context context;
Drawable drawable;
// 构造方法
public BallAdapter(Context context, Drawable drawable) {
super();
this.context = context;
this.drawable = drawable;
}
// 获得数量
public int getCount() {
// TODO Auto-generated method stub
if (drawable == tv_gray_draw) {
return getRED_BALL_COUNT();
} else {
return 0;
}
}
// 获得当前选项
public Object getItem(int item) {
return item;
}
// 获得当前选项ID
public long getItemId(int id) {
return id;
}
public View getView(int position, View convertView, ViewGroup parent) {
TextView tv_ball;
if (convertView == null) {
// 实例化ImageView对象
tv_ball = new TextView(context);
tv_ball.setLayoutParams(new GridView.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
} else {
tv_ball = (TextView) convertView;
}
tv_ball.setGravity(Gravity.CENTER);
tv_ball.setTextColor(Color.BLACK);
TextPaint tp = tv_ball.getPaint();
tp.setFakeBoldText(true);
tv_ball.setBackgroundDrawable(drawable);
tv_ball.setText((position + 1) + "");
return tv_ball;
}
}
- 大小: 31.1 KB
分享到:
相关推荐
在本示例中,我们将深入探讨GridView的基本用法、适配器的原理以及如何自定义GridView的行为。 首先, GridView的使用通常伴随着Adapter的使用。Adapter是连接数据源和UI组件的关键,它负责将数据转化为可以在...
GridView是Android开发中常见的一种控件,主要用于展示数据集,通常以网格的形式排列。...本教程将深入探讨GridView的使用方法,以及如何...实践是最好的老师,动手尝试创建一个自己的GridView示例,相信你会收获更多。
在本示例中,我们将深入探讨如何在Android Studio环境下创建并使用GridView。 首先,让我们了解GridView的基本概念。GridView继承自AbsListView,它会将数据项按照行列的形式进行排列,用户可以通过横向或纵向滑动...
C# GridView自动列宽 C# GridView自动列宽 C# GridView自动列宽
"GridView高效分页示例"就是一种优化策略,它避免了使用存储过程,而是采用更直接和高效的方法。 首先,我们要理解传统分页的问题。在默认情况下,GridView会一次性获取所有记录,然后在客户端进行分页,这显然对...
在这个示例中,我们将探讨如何利用Grid和ScrollViewer控件来实现一个自定义的GridView,以展示大量的数据。 首先,Grid是WPF和Silverlight中最基本的布局控件之一,它允许开发者通过行和列来组织元素。在自定义...
在这个"Android GridView使用示例"中,我们将深入探讨如何在Android应用程序中有效地使用GridView。 首先,我们需要在XML布局文件中声明GridView。一个基本的GridView声明可能如下所示: ```xml <GridView ...
GridView的`AutoGenerateColumns`属性可能被设置为`true`,以自动生成列,或者开发者可能会手动定义每列的数据字段,以实现更精细的控制。 接着,`Register.aspx`页面可能是用户注册页面,它允许新用户创建账户。...
1. **设置GridView布局**:在XML布局文件中,我们需要定义一个GridView标签,并为其指定id和属性,如列宽(android:numColumns)以及是否自动调整大小(android:stretchColumns)等。 ```xml <GridView android:id...
在本篇文章中,我们将深入探讨如何在APS.NET项目中利用ASPxGridView控件自动生成序号列,并通过具体的代码示例来实现这一功能。对于熟悉ASP.NET开发的开发者来说,ASPxGridView是一个非常实用且强大的数据展示控件,...
在很多情况下,我们可能希望在GridView显示的数据行前添加一个自动编号,以便用户更容易理解和跟踪数据。本篇文章将详细讲解如何在GridView控件中实现自动编号。 首先,我们需要创建一个ASP.NET Web Forms项目,并...
2. **编写`GridView1_RowDataBound`方法**:在此方法中,我们需要检查行的类型是否为`DataControlRowType.DataRow`,即是否为数据行。如果是数据行,我们可以进行编号设置。 ```csharp protected void GridView1_...
在探讨“GridView自动序号”的实现方式时,我们首先需要理解GridView控件的基本功能与应用场景。GridView是ASP.NET中一个非常强大的数据绑定控件,它能够以表格的形式展示数据源中的数据,支持分页、排序、编辑等...
根据提供的信息,本文将详细介绍如何在ASP.NET的GridView控件中为第一列设置自增序号(例如:1、2、3等)。这个问题是许多Web开发者在使用GridView时经常遇到的,尤其是在需要显示数据行的索引或者进行简单排序的...
总结来说,这个示例展示了如何在ASP.NET 2.0中使用GridView控件进行数据的自动编号和更新操作。通过RowDataBound事件添加自动编号,通过CommandField和相关事件处理程序实现编辑和更新功能。同时,这一切都是基于SQL...
在这个项目中,我们讨论的是如何结合使用ScrollView和GridView实现左右滑动,并在启动时或点击按钮时自动定位到指定项。 首先,让我们深入理解ScrollView。ScrollView是Android中的一个可滚动视图,它可以包裹任何...
自动刷新通常指的是当数据源有新的内容添加或改变时,GridView能自动更新显示。这可以通过监听数据源的变化,然后调用Adapter的notifyDataSetChanged()方法来实现。 4. medio信息主题: "medio信息"可能是指特定...
在这个"三层Gridview分页示例源码20130227"中,我们可以深入学习如何在Web应用中有效地实现分页功能。 首先,三层架构包括表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。表现层主要负责与用户交互,业务...
在`GridViewDemo2`这个示例项目中,你将看到以上功能的完整实现。通过运行项目,可以直观地了解这些功能如何在实际应用中工作。同时,通过查看源代码,你可以学习到如何在C#后台代码和ASP.NET的前端标记中配合使用...