Android九宫格

来源:互联网 发布:贵州藏字石事件 知乎 编辑:程序博客网 时间:2024/05/06 13:24

显示九宫格需要用GridView , 要显示每个格子中的视图有两种方式,第一种方式是做成xml文件,再将xml文件做成视图。第二种方式就是在代码中构建出这样一种布局,这里采用第一种方式来实现:

GridView:

[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="fill_parent"  
  5.     >  
  6.  <!-- id gv_all  
  7.     宽高都是填充父窗体  
  8.     numcolums 为3  
  9.     水平控件的距离 10px  
  10.     垂直距离是10px  
  11.     gridview 离底部58px  
  12.     离顶部28px  
  13.     离左边5px  
  14.     离右边5px    
  15.   -->  
  16. <GridView   
  17.     android:id="@+id/gv_all"  
  18.     android:layout_height="fill_parent"  
  19.     android:layout_width="fill_parent"  
  20.     android:numColumns="3"  
  21.     android:horizontalSpacing="10px"  
  22.     android:verticalSpacing="10px"  
  23.     android:layout_marginBottom="58px"  
  24.     android:layout_marginTop="28px"  
  25.     android:layout_marginLeft="5px"  
  26.     android:layout_marginRight="5px"  
  27. ></GridView>  
  28.   
  29. </RelativeLayout>  

视图:

[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout  
  3.   xmlns:android="http://schemas.android.com/apk/res/android"  
  4.   android:orientation="vertical"  
  5.   android:layout_width="90px"  
  6.   android:layout_height="90px">  
  7.    <ImageView   
  8.      android:layout_width="64px"  
  9.      android:layout_height="64px"  
  10.      android:layout_gravity="center_horizontal"  
  11.      android:id="@+id/main_gv_iv"  
  12.    />  
  13.    <TextView   
  14.     android:layout_width="wrap_content"  
  15.      android:layout_height="wrap_content"  
  16.      android:layout_gravity="center_horizontal"  
  17.      android:textSize="16px"  
  18.      android:textColor="#FFF"  
  19.      android:id="@+id/main_gv_tv"  
  20.    />  
  21. </LinearLayout>  

初始化:

[java] view plaincopy
  1. public class MainActivity extends Activity {  
  2.     public static final String TAG = "MainActivity";  
  3.     GridView maingv;  
  4.     @Override  
  5.     protected void onCreate(Bundle savedInstanceState) {  
  6.         super.onCreate(savedInstanceState);  
  7.         //全屏  
  8.         getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);  
  9.         setContentView(R.layout.mainactivity);  
  10.         //获取到GridView  
  11.         maingv = (GridView) this.findViewById(R.id.gv_all);  
  12.         //给gridview设置数据适配器   
  13.         maingv.setAdapter(new MainGridViewAdapter(this));  
  14.         //点击事件  
  15.         maingv.setOnItemClickListener(new MainItemClickListener());   
  16.     }  
  17.     private class MainItemClickListener implements OnItemClickListener{  
  18.         /** 
  19.          * @param parent 代表当前的gridview  
  20.          * @param view 代表点击的item 
  21.          * @param position 当前点击的item在适配中的位置  
  22.          * @param id 当前点击的item在哪一行 
  23.          */  
  24.         public void onItemClick(AdapterView<?> parent, View view, int position,  
  25.                 long id) {  
  26.             switch (position) {  
  27.             case 0:  
  28.                 Intent intent = new Intent(MainActivity.this,LostProtectedActivity.class);  
  29.                 startActivity(intent);  
  30.                 break;  
  31.             }  
  32.         }  
  33.     }  
  34. }  
设置数据适配器 :

[java] view plaincopy
  1. // 完成gridview 数据到界面的适配   
  2. public class MainGridViewAdapter extends BaseAdapter {  
  3.     private static final String TAG = "MainGridViewAdapter";  
  4.     private String[] names = {"手机防盗","通讯卫士","软件管理","任务管理","上网管理","手机杀毒","系统优化","高级工具","设置中心"};  
  5.     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};  
  6.     private Context context;  
  7.     LayoutInflater infalter;  
  8.       
  9.     public MainGridViewAdapter(Context context) {  
  10.         this.context = context;  
  11.         //方法1 通过系统的service 获取到 试图填充器   
  12.         //infalter = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);  
  13.         //方法2 通过layoutinflater的静态方法获取到 视图填充器  
  14.         infalter = LayoutInflater.from(context);  
  15.     }  
  16.     // 返回gridview里面有多少个条目   
  17.     public int getCount() {  
  18.         return names.length;  
  19.     }  
  20.     //返回某个position对应的条目   
  21.     public Object getItem(int position) {  
  22.         return position;  
  23.     }  
  24.     //返回某个position对应的id  
  25.     public long getItemId(int position) {  
  26.         return position;  
  27.     }  
  28.     //返回某个位置对应的视图   
  29.     public View getView(int position, View convertView, ViewGroup parent) {  
  30.         Log.i(TAG,"GETVIEW "+ position);  
  31.         //把一个布局文件转换成视图  
  32.         View view = infalter.inflate(R.layout.mainactivity_item, null);  
  33.         ImageView iv =  (ImageView) view.findViewById(R.id.main_gv_iv);  
  34.         TextView  tv = (TextView) view.findViewById(R.id.main_gv_tv);  
  35.         //设置每一个item的名字和图标   
  36.         iv.setImageResource(icons[position]);  
  37.         tv.setText(names[position]);  
  38.         return view;  
  39.     }  
  40. }  
0 0
原创粉丝点击