Android编程之九宫格实现方法实例分析
程序员文章站
2023-12-20 17:33:16
本文实例讲述了android编程之九宫格实现方法。分享给大家供大家参考,具体如下:
显示九宫格需要用gridview , 要显示每个格子中的视图有两种方式,第一种方式是做...
本文实例讲述了android编程之九宫格实现方法。分享给大家供大家参考,具体如下:
显示九宫格需要用gridview , 要显示每个格子中的视图有两种方式,第一种方式是做成xml文件,再将xml文件做成视图。第二种方式就是在代码中构建出这样一种布局,这里采用第一种方式来实现:
gridview:
<?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <!-- id gv_all 宽高都是填充父窗体 numcolums 为3 水平控件的距离 10px 垂直距离是10px gridview 离底部58px 离顶部28px 离左边5px 离右边5px --> <gridview android:id="@+id/gv_all" android:layout_height="fill_parent" android:layout_width="fill_parent" android:numcolumns="3" android:horizontalspacing="10px" android:verticalspacing="10px" android:layout_marginbottom="58px" android:layout_margintop="28px" android:layout_marginleft="5px" android:layout_marginright="5px" ></gridview> </relativelayout>
视图:
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="90px" android:layout_height="90px"> <imageview android:layout_width="64px" android:layout_height="64px" android:layout_gravity="center_horizontal" android:id="@+id/main_gv_iv" /> <textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:textsize="16px" android:textcolor="#fff" android:id="@+id/main_gv_tv" /> </linearlayout>
初始化:
public class mainactivity extends activity { public static final string tag = "mainactivity"; gridview maingv; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); //全屏 getwindow().setflags(windowmanager.layoutparams.flag_fullscreen, windowmanager.layoutparams.flag_fullscreen); setcontentview(r.layout.mainactivity); //获取到gridview maingv = (gridview) this.findviewbyid(r.id.gv_all); //给gridview设置数据适配器 maingv.setadapter(new maingridviewadapter(this)); //点击事件 maingv.setonitemclicklistener(new mainitemclicklistener()); } private class mainitemclicklistener implements onitemclicklistener{ /** * @param parent 代表当前的gridview * @param view 代表点击的item * @param position 当前点击的item在适配中的位置 * @param id 当前点击的item在哪一行 */ public void onitemclick(adapterview<?> parent, view view, int position, long id) { switch (position) { case 0: intent intent = new intent(mainactivity.this,lostprotectedactivity.class); startactivity(intent); break; } } } }
设置数据适配器 :
// 完成gridview 数据到界面的适配 public class maingridviewadapter extends baseadapter { private static final string tag = "maingridviewadapter"; private string[] names = {"手机防盗","通讯卫士","软件管理","任务管理","上网管理","手机杀毒","系统优化","高级工具","设置中心"}; private int[] icons = {r.drawable.safe,r.drawable.callmsgsafe,r.drawable.app,r.drawable.taskmanager,r.drawable.netmanager,r.drawable.*,r.drawable.sysoptimize,r.drawable.atools,r.drawable.settings}; private context context; layoutinflater infalter; public maingridviewadapter(context context) { this.context = context; //方法1 通过系统的service 获取到 试图填充器 //infalter = (layoutinflater) context.getsystemservice(context.layout_inflater_service); //方法2 通过layoutinflater的静态方法获取到 视图填充器 infalter = layoutinflater.from(context); } // 返回gridview里面有多少个条目 public int getcount() { return names.length; } //返回某个position对应的条目 public object getitem(int position) { return position; } //返回某个position对应的id public long getitemid(int position) { return position; } //返回某个位置对应的视图 public view getview(int position, view convertview, viewgroup parent) { log.i(tag,"getview "+ position); //把一个布局文件转换成视图 view view = infalter.inflate(r.layout.mainactivity_item, null); imageview iv = (imageview) view.findviewbyid(r.id.main_gv_iv); textview tv = (textview) view.findviewbyid(r.id.main_gv_tv); //设置每一个item的名字和图标 iv.setimageresource(icons[position]); tv.settext(names[position]); return view; } }
希望本文所述对大家android程序设计有所帮助。