(三)android布局基础及范例:人人android九宫格布局(转载http://blog.csdn.net/jiabinjlu/article/details/6921008)

摘要:
˃---------------引入一些属性:android:numColumns=”auto_fit“,将GridView中的列数设置为自动android:clumnWidth=”90dp”,并设置每个列的宽度,即项目android:surchMode=“columnWidth”的宽度,以放大和缩小次要同步中要关注的属性是columnWidth,其中指定了列宽。列对象对应于“可重复子项”,这是我们的图片项和图片下面的文本部分。

人人android是人人网推出的一款优秀的手机应用软件,我们在使用的时候发现他的首页布局是九宫格模式的,让人觉得很别致,因为现在很多的android软件很少使用这种布局模式,人人android使用的很成功,使人觉得简洁大方美观,下面我们来看看人人android的布局

(三)android布局基础及范例:人人android九宫格布局(转载http://blog.csdn.net/jiabinjlu/article/details/6921008)第1张

其实这种布局是使用了一种叫“GridView”的表格布局,下面我来给大家讲一下:

首先,请大家理解一下“迭代显示”这个概念,这个好比布局嵌套,我们在一个大布局里面重复的放入一些布局相同的小布局,

那些重复的部分是由图片和文字组成的小控件,图片在上方,文字在下方,之后我们只需要把这些小控件迭代进入主容器里即可。

我们来看看实际做出来的效果图:

(三)android布局基础及范例:人人android九宫格布局(转载http://blog.csdn.net/jiabinjlu/article/details/6921008)第2张

我们来看看主容器的布局(GridView)

————————————————————main.xml————————————————————————

[html] view plaincopy
 
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <GridView xmlns:android="http://schemas.android.com/apk/res/android"  
  3.       android:id="@+id/GridView"  
  4.       android:layout_width="fill_parent"  
  5.       android:layout_height="fill_parent"  
  6.       android:numColumns="auto_fit"  
  7.       android:columnWidth="90dp"  
  8.       android:stretchMode="columnWidth"  
  9.       android:gravity="center">  
  10. </GridView>  


——————————————————————————————————————————————————

介绍一下里面的某些属性:

android:numColumns=”auto_fit” ,GridView的列数设置为自动
android:columnWidth=”90dp”,每列的宽度,也就是Item的宽度
android:stretchMode=”columnWidth”,缩放与列宽大小同步

在这里需要关注的属性是columnWidth,这里指定了列的宽度,一个列对象,对应一个 “可重复的子项”,这个子项就是我们 的图片项和图片下方文字显示的部分。如果不指定这个宽度的话,默认是每行(展示的行,界面)仅仅只显示一个 “可重复的子项”,而当指定了宽度时,本文指定为90dp,如果每行实际行尺寸大于90,他就会继续将下一个的“可重复的子项”,放置在本行。于是就呈现一种 一行显示多个子项的情况。numColumns属性,指定一个自动填充的值,指示了自动填充行。

接下来我们需要再创建一个XML布局文件,这里我们写需要“被迭代”的子项(RelativeLayout)

不熟悉RelativeLayout布局的请看我写的上一篇博客:android布局基础及范例(一)


————————————————————item.xml————————————————————————

[html] view plaincopy
 
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3. android:layout_width="fill_parent"  
  4. android:layout_height="wrap_content"  
  5. >  
  6. <ImageView  
  7.     android:layout_width="wrap_content"  
  8.     android:id="@+id/ItemImage"  
  9.     android:layout_height="wrap_content"  
  10.     android:layout_centerHorizontal="true"/>  
  11. <TextView  
  12.     android:layout_width="wrap_content"  
  13.     android:layout_height="wrap_content"  
  14.     android:layout_below="@+id/ItemImage"  
  15.     android:id="@+id/ItemText"  
  16.     android:layout_centerHorizontal="true"  
  17. />  
  18. </RelativeLayout>  

——————————————————————————————————————————————————

这里使用了一个相对布局,在TextView 里使用属性android:layout_below=”@+id/ItemImage”指示了文本在图片的下方。

最后一步,我们需要把这些东西拼在一起,并且实现

这里我们采用了java中的数据结构:HashMap,用法这里不多说了,可以自行百度。

然后构建ArrayList作为数据源,再构建SimpleAdapter 作为数据适配器,为gridView指定适配器对象。

以下是java代码:

—————————————————layout_gridview.java————————————————————

[java] view plaincopy
 
  1. package jiabin.activity;  
  2.    
  3. import java.util.ArrayList;  
  4. import java.util.HashMap;  
  5.    
  6. import android.app.Activity;  
  7. import android.os.Bundle;  
  8. import android.view.View;  
  9. import android.widget.AdapterView;  
  10. import android.widget.AdapterView.OnItemClickListener;  
  11. import android.widget.GridView;  
  12. import android.widget.SimpleAdapter;  
  13. import android.widget.Toast;  
  14.    
  15. public class layout_gridview extends Activity {  
  16.     /** Called when the activity is first created. */  
  17.     @Override  
  18.     public void onCreate(Bundle savedInstanceState) {  
  19.         super.onCreate(savedInstanceState);  
  20.         setContentView(R.layout.main);  
  21.         GridView gridview = (GridView) findViewById(R.id.GridView);  
  22.         ArrayList<HashMap<String, Object>> meumList = new ArrayList<HashMap<String, Object>>();  
  23.         for(int i = 1;i < 10;i++)  
  24.         {  
  25.             HashMap<String, Object> map = new HashMap<String, Object>();  
  26.             map.put("ItemImage", R.drawable.i1);  
  27.             map.put("ItemText", ""+i);  
  28.             meumList.add(map);  
  29.         }  
  30.         SimpleAdapter saItem = new SimpleAdapter(this,  
  31.                   meumList, //数据源  
  32.                   R.layout.item, //xml实现  
  33.                   new String[]{"ItemImage","ItemText"}, //对应map的Key  
  34.                   new int[]{R.id.ItemImage,R.id.ItemText});  //对应R的Id  
  35.    
  36.                 //添加Item到网格中  
  37.                 gridview.setAdapter(saItem);  
  38.                 //添加点击事件  
  39.                 gridview.setOnItemClickListener(  
  40.                     new OnItemClickListener()  
  41.                     {  
  42.                         public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3)  
  43.                         {  
  44.                             int index=arg2+1;//id是从0开始的,所以需要+1  
  45.                             Toast.makeText(getApplicationContext(), "你按下了选项:"+index, 0).show();  
  46.                             //Toast用于向用户显示一些帮助/提示  
  47.                         }  
  48.                     }  
  49.                 );  
  50.     }  
  51. }  

——————————————————————————————————————————————————————————————

点击事件响应使用Toast,我们可以用此方法显示用户点击的效果和触发动作,上面代码使用了Toast默认效果,

我们来看看效果图:

(三)android布局基础及范例:人人android九宫格布局(转载http://blog.csdn.net/jiabinjlu/article/details/6921008)第3张

这种布局是不是很拉风呢,哈哈,为了更好学习代码,我会把源码下载链接放在下面,供大家下载学习

免责声明:文章转载自《(三)android布局基础及范例:人人android九宫格布局(转载http://blog.csdn.net/jiabinjlu/article/details/6921008)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Win7 64位系统上配置使用32位的Eclipse(转)问题解决——ShowWindow不显示窗口下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

查看Android应用包名、Activity的几个方法

转载自:http://blog.csdn.net/jlminghui/article/details/40622103 一、有源码情况 直接打开AndroidManifest.xml文件,找到包含android.intent.action.MAIN和android.intent.category.LAUNCHER对应的activity。 如下图中第三行pac...

谈java之GUI与安卓

首先说说swing的特点: 1.拥有一个丰富,快捷的用户界面元素集合。 2.与运行平台的依赖性很小,因此bug很少。 3.对于不同的运行平台,可以给用户一致的感觉。但是所制作的用户界面与本地运行平台有很大的差别。 java的图像用户界面并不是他的强项,不管是最初的awt,还是后来的swing都是同样的,不过对于目前我个人安卓的学习来说,尽管是用了xml去写...

Android保持屏幕常亮的方法

以前一直使用newWakeLock方法: this.powerManager = (PowerManager) this.getSystemService(Context.POWER_SERVICE); this.wakeLock = this.powerManager.newWakeLock(...

Android Studio 3.0.1 版本包下载

Android Studio 3.0.1 发布了,这是对 Android Studio 3.0 的一个小的更新,包括一般错误修复和性能改进 下载地址: Windows 64 位:https://dl.google.com/dl/android/studio/ide-zips/3.0.1.0/android-studio-ide-171.4443003-w...

android layout 按比例布局

为了创建比例大小的子View,可以将LinearLayout的宽度和高度设为fill_parent, 而将子View的宽度或是高度设为0,然后为子View设置不同权重(weight) ,这样子View的大小就会权值成比例。 本例使用横向LinearLayout,LinearLayout的android:layout_width=”match_paren...

android Studio 二维码扫一扫 使用精简过的zxing

今天学习做个扫一扫  于是就上百度找找前人的作品,终于找到了,于是就开始搞 我使用的是 最新的android Studio Android Studio 3.1.2Build #AI-173.4720617, built on April 14, 2018JRE: 1.8.0_152-release-1024-b02 amd64JVM: OpenJDK 6...