Android 九宫格的实现方法

 更新时间:2013年05月10日 11:03:21   作者:  
今天在浏览网页的时候看到了一篇有关九宫格实现的博文,感觉挺有意思。所以自己模仿做了一个,先贴出代码如下:

1、xml代码:

复制代码 代码如下:

<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="vertical"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:layout_weight="1.0"
      android:background="@drawable/yellow"
      >
 <ImageView android:id="@+id/ImageView01"
            android:layout_width="100sp"
            android:layout_height="100sp"
            android:layout_gravity="center_vertical"
            android:background="@drawable/a"></ImageView>  
 <GridView
     android:id="@+id/gridview" 
     android:layout_width="wrap_content"   
     android:layout_height="wrap_content" 
     android:numColumns="3" 
     android:verticalSpacing="30dip" 
     android:horizontalSpacing="10dip" 
     android:columnWidth="90dip"
     android:stretchMode="columnWidth"
     android:gravity="center"
     android:listSelector="@drawable/c"
     >
 </GridView>
 </LinearLayout>

   其中android:numColumns="3"  代表九宫格的列数  auto_fit时为自动

2、实现代码

复制代码 代码如下:

public class MainActivity extends Activity {

     /** Called when the activity is first created. */

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         // TODO Auto-generated method stub
         super.onCreate(savedInstanceState);
         // 设置屏幕没有标题
         this.requestWindowFeature(Window.FEATURE_NO_TITLE);
         // 去掉标题栏
         this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                 WindowManager.LayoutParams.FLAG_FULLSCREEN);
         setContentView(R.layout.activity_main);

         GridView gridview = (GridView) findViewById(R.id.gridview);
         // 创建一个数组列表对象
         ArrayList<HashMap<String, Object>> lstImageItem = new ArrayList<HashMap<String, Object>>();

         /**
          * 为每个格子添加内容
          */
         for (int i = 1; i < 10; i++) {
             HashMap<String, Object> map = new HashMap<String, Object>();// 建立hashmap对象

             if (i == 1) {
                 map.put("ItemImage", R.drawable.g11);
                 map.put("ItemText", getResources()
                         .getString(R.string.gridview1));
             }

             if (i == 2) {
                 map.put("ItemImage", R.drawable.g12);
                 map.put("ItemText", getResources()
                         .getString(R.string.gridview2));
             }

             if (i == 3) {
                 map.put("ItemImage", R.drawable.g13);
                 map.put("ItemText", getResources()
                         .getString(R.string.gridview3));
             }

             if (i == 4) {
                 map.put("ItemImage", R.drawable.g14);
                 map.put("ItemText", getResources()
                         .getString(R.string.gridview4));
             }

             if (i == 5) {
                 map.put("ItemImage", R.drawable.g15);
                 map.put("ItemText", getResources()
                         .getString(R.string.gridview5));
             }

             if (i == 6) {
                 map.put("ItemImage", R.drawable.g16);
                 map.put("ItemText", getResources()
                         .getString(R.string.gridview6));
             }

             if (i == 7) {
                 map.put("ItemImage", R.drawable.g17);
                 map.put("ItemText", getResources()
                         .getString(R.string.gridview7));
             }

             if (i == 8) {
                 map.put("ItemImage", R.drawable.g18);
                 map.put("ItemText", getResources()
                         .getString(R.string.gridview8));
             }

             if (i == 9) {
                 map.put("ItemImage", R.drawable.g19);
                 map.put("ItemText", getResources()
                         .getString(R.string.gridview9));
             }

             lstImageItem.add(map);
         }

         /**
          * 为GridView建立SimpleAdapter适配器
          */
         // SimpleAdapter()中的五个参数分别是:第一个context,第二个数据资源,第三个每一个子项的布局文件,第四个每一个子项中的Key数组
         // 第五个每一个子项中的Value数组
         SimpleAdapter saImageItems = new SimpleAdapter(this, lstImageItem,
                 R.layout.grid_item, new String[] { "ItemImage", "ItemText" },
                 new int[] { R.id.ItemImage, R.id.ItemText });
         gridview.setAdapter(saImageItems);// 添加适配器
         gridview.setOnItemClickListener(new ItemClickListener());// 为每一个子项设置监听
     }

     class ItemClickListener implements OnItemClickListener {
         @SuppressWarnings("unchecked")
         public void onItemClick(AdapterView<?> arg0,// The AdapterView where the
                                                     // click happened
                 View arg1,// The view within the AdapterView that was clicked
                 int arg2,// The position of the view in the adapter
                 long arg3// The row id of the item that was clicked
         ) {
             HashMap<String, Object> item = (HashMap<String, Object>) arg0
                     .getItemAtPosition(arg2);
             if (item.get("ItemText").equals(
                     getResources().getString(R.string.gridview1))) {
                 Toast.makeText(MainActivity.this, R.string.gridview1,
                         Toast.LENGTH_LONG).show();
             }

             if (item.get("ItemText").equals(
                     getResources().getString(R.string.gridview2))) {
                 Toast.makeText(MainActivity.this, R.string.gridview2,
                         Toast.LENGTH_LONG).show();
             }

             if (item.get("ItemText").equals(
                     getResources().getString(R.string.gridview3))) {
                 Toast.makeText(MainActivity.this, R.string.gridview3,
                         Toast.LENGTH_LONG).show();
             }

             if (item.get("ItemText").equals(
                     getResources().getString(R.string.gridview4))) {
                 Toast.makeText(MainActivity.this, R.string.gridview4,
                         Toast.LENGTH_LONG).show();
             }

             if (item.get("ItemText").equals(
                     getResources().getString(R.string.gridview5))) {
                 Toast.makeText(MainActivity.this, R.string.gridview5,
                         Toast.LENGTH_LONG).show();
             }

             if (item.get("ItemText").equals(
                     getResources().getString(R.string.gridview6))) {
                 Toast.makeText(MainActivity.this, R.string.gridview6,
                         Toast.LENGTH_LONG).show();
             }

             if (item.get("ItemText").equals(
                     getResources().getString(R.string.gridview7))) {
                 Toast.makeText(MainActivity.this, R.string.gridview7,
                         Toast.LENGTH_LONG).show();
             }

             if (item.get("ItemText").equals(
                     getResources().getString(R.string.gridview8))) {
                 Toast.makeText(MainActivity.this, R.string.gridview8,
                         Toast.LENGTH_LONG).show();
             }

             if (item.get("ItemText").equals(
                     getResources().getString(R.string.gridview9))) {
                 Toast.makeText(MainActivity.this, R.string.gridview9,
                         Toast.LENGTH_LONG).show();
             }
         }
     }

 }

3、实现效果如图所示

相关文章

  • Flutter网络请求库DIO的基本使用

    Flutter网络请求库DIO的基本使用

    这篇文章主要介绍了Flutter网络请求库DIO的基本使用,帮助大家更好的理解和学习使用Flutter,感兴趣的朋友可以了解下
    2021-04-04
  • Android 使用【AIDL】调用外部服务的解决方法

    Android 使用【AIDL】调用外部服务的解决方法

    本篇文章是对Android中使用AIDL调用外部服务的方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • Android贝塞尔曲线初步学习第三课 Android实现添加至购物车的运动轨迹

    Android贝塞尔曲线初步学习第三课 Android实现添加至购物车的运动轨迹

    这篇文章主要为大家详细介绍了Android贝塞尔曲线初步学习第三课,Android实现添加至购物车的运动轨迹,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • Android自定义View之渐变色折线图的实现

    Android自定义View之渐变色折线图的实现

    折线图的实现方法在github上有很多开源的程序,但是对于初学者来讲,简单一点的教程可能更容易入门,下面这篇文章主要给大家介绍了关于Android自定义View之渐变色折线图的相关资料,需要的朋友可以参考下
    2022-04-04
  • Android实现疯狂连连看游戏之游戏效果预览(一)

    Android实现疯狂连连看游戏之游戏效果预览(一)

    这篇文章主要为大家详细介绍了Android实现疯狂连连看游戏之游戏的效果预览,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • Android实现折线图小工具

    Android实现折线图小工具

    这篇文章主要为大家详细介绍了Android实现折线图小工具,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • Android基于Service的音乐播放器

    Android基于Service的音乐播放器

    这篇文章主要为大家详细介绍了Android基于Service的音乐播放器,本文开发一个基于Service的音乐播放器,音乐由后台运行的Service负责播放,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Android ViewModel的使用总结

    Android ViewModel的使用总结

    ViewModel 是 Jetpack 的一部分。 ViewModel 类旨在以注重生命周期的方式存储和管理界面相关的数据。ViewModel 类让数据可在发生屏幕旋转等配置更改后继续留存。本文简单讲解ViewModel的使用
    2021-06-06
  • Android系统添加自己写的工具

    Android系统添加自己写的工具

    今天小编就为大家分享一篇关于Android系统添加自己写的工具的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • Android实现原生侧滑菜单的超简单方式

    Android实现原生侧滑菜单的超简单方式

    网上关于Android实现侧滑菜单的文章有很多,可是我们这篇文章是给大家分享一种超简单的方式,对大家开发Android具有一定的参考借鉴价值,有需要的朋友们可以一起来看看。
    2016-09-09

最新评论