好多日子没有写安卓了,今天继续我未完成的安卓项目。今天主要实现星座展示的12宫格效果。
1、星座图片
找好12星座的图片,参见工程代码下面的res/drawable目录
2、星座枚举类
建立这个枚举类是很有必要的,可以使我们 的代码更加清晰,同时避免了魔法数字的情况。
枚举类的代码如下:
package com.liuc.constatntEnum; import com.liuc.R; /** * 星座枚举 * * @author Administrator * */ public enum ConstellationEnum { // 星座编号(参数说明 // 0:白羊座、1:金牛座、2:双子座、3:巨蟹座、4:狮子座、 // 5:处女座、6:天秤座、7:天蝎座、8:射手座、9:魔羯座、 // 10:水瓶座、11:双鱼座) Aries(0, "白羊座",R.drawable.aries), Taurus(1, "金牛座",R.drawable.taurus), Gemini(2, "双子座",R.drawable.gemini), Cancer(3, "巨蟹座",R.drawable.cancer), Leo(4, " 狮子座",R.drawable.leo), Virgo(5, "处女座",R.drawable.virgo), Libra(6, "天秤座",R.drawable.libra), Scorpio(7, "天蝎座",R.drawable.scorpio), Sagittarius(8, "射手座",R.drawable.sagittarius), Capricorn(9, "摩羯座",R.drawable.capricorn), Aquarius(10, "水瓶座",R.drawable.aquarius), Pisces(11,"双鱼座",R.drawable.pisces); private ConstellationEnum(int constellationID, String name,int imageID) { this.constellationID = constellationID; this.name = name; this.imageID=imageID; } private int constellationID;//星座ID private String name;//星座名称 private int imageID;//星座图像资源的ID public int getImageID() { return imageID; } public int getConstellationID() { return constellationID; } public String getName() { return name; } }
3、主界面12宫格布局
采用GridView作为容器,每个格子中采用ImageView+TextView的显示方式进行展现
主界面布局:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <GridView android:id="@+id/constellation_gridView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:numColumns="3" android:columnWidth="90dp" android:stretchMode="columnWidth" android:gravity="center"> </GridView> </RelativeLayout>
每个格子的布局XML:
<?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="wrap_content" > <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" /> <TextView android:id="@+id/item_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_below="@+id/imageView" /> </RelativeLayout>
4、MainActivity初始化布局效果
/** * 加载主页面12星座布局 */ private void loadTwelveConstellation() { GridView gridview = (GridView)this.findViewById(R.id.constellation_gridView); List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); for(ConstellationEnum constellation:ConstellationEnum.values()){ Map<String, Object> map = new HashMap<String, Object>(); map.put("itemImage", constellation.getImageID()); map.put("itemText", constellation.getName()); list.add(map); } SimpleAdapter adapter = new SimpleAdapter(this, list, R.layout.itemmenu, new String[] { "itemImage", "itemText" }, new int[] { R.id.imageView, R.id.item_text }); //添加Item到网格中 gridview.setAdapter(adapter); //添加点击事件 gridview.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { } }); }
至此一个12宫格的布局就完成了。
界面效果如下所示:
本人三部手机测试,5.1寸屏幕可以整屏幕显示,两个4.3屏幕的会出现滚动条。。。根据屏幕自适应显示会在最后的代码版本中进行修改
代码地址:http://download.csdn.net/detail/shanhuhau/8065877
时间: 2024-10-15 23:08:40