Android编程之九宫格实现方法实例分析

 更新时间:2016年01月04日 09:00:53   作者:傅荣康  
这篇文章主要介绍了Android编程之九宫格实现方法,结合实例形式分析了Android九宫格的实现方法与具体步骤,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了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.trojan,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程序设计有所帮助。

相关文章

  • android开发教程之开机启动服务service示例

    android开发教程之开机启动服务service示例

    如果开机启动一个Activity,开机首先看的界面,是你的程序界面,如果为了,开机后也启动你的程序,但是不显示自己程序的界面,就要用Service服务,下面是开机启动服务service示例
    2014-03-03
  • Android自定义底部弹出框ButtomDialog

    Android自定义底部弹出框ButtomDialog

    这篇文章主要为大家详细介绍了Android自定义底部弹出框ButtomDialog,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • Android 快速绘制一个圆角矩形的实例

    Android 快速绘制一个圆角矩形的实例

    下面小编就为大家分享一篇Android 快速绘制一个圆角矩形的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • Android实现图片叠加功能

    Android实现图片叠加功能

    本篇文章主要介绍了Android实现图片叠加功能的代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Android底部菜单栏实现的实例代码

    Android底部菜单栏实现的实例代码

    这篇文章主要介绍了Android底部菜单栏实现的实例代码,本文通过使用RadioGroup来实现底部导航菜单栏。现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • Android实现图片缓存与异步加载

    Android实现图片缓存与异步加载

    这篇文章主要为大家详细介绍了Android实现图片缓存与异步加载的相关资料,需要的朋友可以参考下
    2016-02-02
  • Android入门教程之Vibrator(振动器)

    Android入门教程之Vibrator(振动器)

    本节我们介绍的是Vibrator(振动器),是手机自带的振动器,其实就是Android给我们提供的用于机身震动的一个服务!当收到推送消息的时候我们可以设置震动提醒。
    2016-07-07
  • Android自定义View圆形和拖动圆跟随手指拖动

    Android自定义View圆形和拖动圆跟随手指拖动

    这篇文章主要介绍了Android自定义View圆形和拖动圆跟随手指拖动,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Android Service服务详细介绍及使用总结

    Android Service服务详细介绍及使用总结

    这篇文章主要介绍了Android Service 服务的详细资料,网上关于Android Service 服务的文章比较多,但是不是很全面,不够细致,毕竟是Android 四大组件之一,重要性不用说,这里总结下,需要的朋友可以参考下
    2016-12-12
  • Android自定义相机界面的实现代码

    Android自定义相机界面的实现代码

    这篇文章主要为大家详细介绍了Android自定义相机界面的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11

最新评论