欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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程序设计有所帮助。

上一篇:

下一篇: