安卓项目开发实战(2)--星座展示12宫格

好多日子没有写安卓了,今天继续我未完成的安卓项目。今天主要实现星座展示的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

安卓项目开发实战(2)--星座展示12宫格的相关文章

安卓项目开发实战(1)--首页顶部菜单BAR实现

从今天开始,我将开始自己手写一个星座运势的项目,星座运势的数据来源采用MYAPI的星座数据,客户端完全自己实现. 这个系列主要是讲工程中主要界面的布局展示和一些项目中的难点解析.由于本人刚自学安卓不久,请各位大神拍砖时手下留情. 第一个讲讲首页顶部的BAR的实现 现在的APP据我观察顶部都会涉及一个BAR,主要作用就是提示和导航, 先来看下实际的效果 那么如何实现这样一个效果呢? 具体做法是在页面布局里嵌套一个顶部导航菜单的布局 <?xml version="1.0" encod

安卓项目开发实战(1)续--首页顶部菜单用actionbar实现

经过了两个晚上的研究,终于可以实现简单的actionbar了.在这期间,我发现大部分讲解actionbar的文章都是基于4.0以上版本的,对于低版本使用actionbar没有详细的讲解,经过长时间搜索发现了以下两个比较好的文章: http://www.cnblogs.com/tianzhijiexian/p/3871416.html http://blog.csdn.net/xyz_lmn/article/details/12623609 经过我一番实践发现要在3.0以下版本实现actionba

聚合数据 iOS 项目开发实战:条码查询器

记录下,聚合数据 iOS 项目开发实战:条码查询器:视频地址:http://www.jikexueyuan.com/course/324.html 条码查询API:https://www.juhe.cn/docs/api/id/52 核心内容: 1.条码查询器结构分析.2.如何将聚合数据 SDK 添加到工程中.3.模型以及业务类的封装.4.控制器间的数据传递.5.tableView 以及 webView 的使用. 具体课时 1.条码查询器界面搭建 12:53 本课时通过分析条码查询的UI结构和业

Eclipse rcp 项目开发实战2 : 创建插件开发工程

输入工程名称,其它默认即可 输入创建插件工程相关信息,Rich Client Application 要选择Yes 来创建RCP工程,其它数据一般默认即可. 选择模板,也就是Demo,在这一步选择完成后,其实就可以直接Finish了. 最后一步,输入名字,包名和应用的类的名称 一个简单地插件工程就已经创建完成. 启动工程,第一次启动有三种方法, 6.1 选择工程,右键Run As -- Eclipse Application 即可, 6.2 打开mf文件, 下拉选择,Launch an Ecli

iOS项目开发实战——storyboard设置界面技巧与注意事项

在iOS开发中,使用Main.storyboard来设计界面是每一个iOS开发人员需要面对的问题,使用storyboard相比较Android中使用XML来设置布局,有优点也有缺陷,现在我们来谈谈storyboard的设计技巧. (1)直接使用鼠标右键可以直接缩放storyboard的缩放比例.当然你也可以用触摸板使用2根手指缩放. . (2)拖拽控件绑定到代码中,不一定要从设计界面的控件中进行拖拽,也可以直接从左侧的列表中拖拽,这样会更加清晰方便. . (3)如何添加修改超过一屏的控件.我们把

iOS项目开发实战——获取网页源代码的二进制数据

我在上一篇博客<iOS项目开发实战--iOS网络编程获取网页Html源代码>中讲述了如何获取一个网页的HTML源代码,可以满足一定的需求.但是由于特殊原因,我们想获取的是一个网页的二进制数据,那么应该怎么办呢? 具体实现如下: (1)创建一个iOS项目,Language选择Swift,然后在ViewController.swift 中写入如下代码: override func viewDidLoad() { super.viewDidLoad() var data = NSData(conte

iOS项目开发实战——设置视图的透明度改变动画

在iOS中 ,透明度的改变可以让View视图以一种渐变的效果动态的出现或者消退,非常有意思.这里我们将会对一个View控件的色块执行透明度改变的动画.关于其他的动画效果可以参考我的其他几篇博客<iOS项目开发实战--制作视图的平移动画以及解决移动异常问题>,<iOS项目开发实战--多个视图的平移动画与闭包函数的声明与调用>. (1)在Main.storyboard中拖入一个View,并且绑定到代码中. (2)实现代码如下: import UIKit class OpacityVie

iOS项目开发实战——学会使用TableView列表控件(四)plist读取与Section显示

文本将会实现把数据存储到plist文件里.然后在程序中进行读取.在TableView控件中依据不同的类别显示Section. 有关TableView 的其它实现,请參考<iOS项目开发实战--学会使用TableView列表控件(一)><iOS项目开发实战--学会使用TableView列表控件(二)><iOS项目开发实战--学会使用TableView列表控件(三)了解Section>. (1)新建一个Property List文件,这个也就是plist文件.我取名为dat

iOS项目开发实战——配置自定义动画

动画很多的属性,如位置,透明度等,开发者可以根据这些属性来自定义自己需要的动画.现在我们来简单实现如何自定义动画,以视图的透明度的变化为例.其他的动画效果可以参考我的其他两篇博客<iOS项目开发实战--视图动画效果><iOS项目开发实战--实现视图切换动画>. (1)同样也在Images.xcassets中拖入一张图片,然后在 Main.storyboard中使用一个ImageView控件来包含这张图片.并且绑定控件到代码中. (2)然后在ViewController中实现代码如下