standupTimer项目中的布局容器

本文介绍了一个名为standupTimer的Android开源项目中的布局容器使用方法。项目通过LinearLayout动态加载View对象,根据用户设置选择显示Text或Spinner组件。此外,文章还提到了项目的其他关键特性,如PowerManager和Handler机制。
standupTimer是一个开源项目,这个项目涉及的Android知识点并不是太多也不复杂,所以对于初学者来说,读起来并不困难。
关于这个项目有个系列博客,系统地介绍了standupTimer是项目所涉及的知识点,其中包括常用的知识点PowerManager和PowerManager.WakeLock还有android的Handler机制,不仅仅是这些知识点,博客还从更高的单件模式和MVC设计框架的视角来解析该项目,不过美中不足的是,standupTimer项目有一套完整的测试方案,在该博客中有提到,但是没有具体解析,希望有兴趣的博友能总结下并贴出来。
博客的地址是:http://www.cnblogs.com/keyindex/archive/2010/08/31/1809943.html
对于初学者来说,这个项目中有很多的知识点需要学习总结消化,而这些知识点见仁见智,不同的读者或者对不同的知识点感兴趣,我就我个人而言做些小知识点的总结,这篇博客总结的是standupTimer项目中的布局容器,这个知识点之前没有碰到过,所以总结在此。
standupTimer项目的主布局文件main.xml比较简单明了,包括七个组件,其中三个TextView分别用来显示与会人数(Number of participants),会议时长(Length of meeting)和与会小组名称(Team),一个EditText用来让用户输入与会人数,一个Spinner组件用来下拉显示小组名字,一个Button组件用来开始计时,这些都是比较常用的组件,还有一个是一个布局LinearLayout,这个布局组件就是用来动态加载View对象的,这是在xml文件中声明下,然后在代码中实例化,并根据用户设置情况进行动态加载View对象。

main.ml文件中的布局组件定义如下:

<LinearLayout
	android:id="@+id/meeting_length_container"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	android:layout_marginLeft="100dp"
	android:layout_marginRight="100dp"
	android:layout_marginTop="5dp"
	android:gravity="center" />
在类ConfigureStandupTimer中对UI进行初始化的时候实例化容器,并根据用户设置填充对象:
private void initializeMeetingLength() {
	/*实例化容器,并删除容器中的所有View对象,以便重新加载*/
	ViewGroup meetingLengthContainer = (ViewGroup) findViewById(R.id.meeting_length_container);
	meetingLengthContainer.removeAllViews();

	View meetingLengthView = null;
	if (Prefs.allowVariableMeetingLength(this)) {/*读取用户设置,根据设置初始化View*/
               /*创建Text类型View组件*/
		meetingLengthView = createMeetingLengthTextBox();
	} else {
		/*创建Spinner类型View组件*/
		meetingLengthView = createMeetingLengthSpinner();
	}

	/*填充View对象到布局容器中*/
	meetingLengthContainer.addView(meetingLengthView);
}

/*创建Text组件的具体实现函数,注意要把Spinner类型组件赋值为null */
private View createMeetingLengthTextBox() {
	meetingLengthEditText = new EditText(this);
	meetingLengthEditText.setGravity(Gravity.CENTER);
	meetingLengthEditText.setKeyListener(new DigitsKeyListener());
	meetingLengthEditText.setRawInputType(InputType.TYPE_CLASS_PHONE);
	meetingLengthEditText.setLayoutParams(new LayoutParams(dipsToPixels(60), LayoutParams.WRAP_CONTENT));
	meetingLengthEditText.setText(Integer.toString(meetingLength));
	meetingLengthEditText.setLines(1);

	meetingLengthSpinner = null;
	return meetingLengthEditText;
}

/*创建Spinner组件的具体实现函数,注意要把Text类型组件赋值为null*/
private View createMeetingLengthSpinner() {
	meetingLengthSpinner = new Spinner(this);
	meetingLengthSpinner.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
	meetingLengthSpinner.setPrompt(this.getString(R.string.length_of_meeting));

	ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(this,R.array.meeting_lengths, android.R.layout.simple_spinner_item);
	adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
	
	meetingLengthSpinner.setAdapter(adapter);
	meetingLengthSpinner.setSelection(getSpinnerPositionFromMeetingLength(meetingLength));

	meetingLengthEditText = null;
	return meetingLengthSpinner;
}
标题基于Spring Boot的音乐播放网站设计与实现研究AI更换标题第1章引言介绍音乐播放网站的研究背景、意义、国内外现状及论文方法与创新点。1.1研究背景与意义阐述音乐播放网站在当今数字化时代的重要性与市场需求。1.2国内外研究现状分析国内外音乐播放网站的发展现状及技术特点。1.3研究方法以及创新点概述论文采用的研究方法及在设计与实现上的创新点。第2章相关理论与技术基础总结音乐播放网站设计与实现所需的相关理论和技术。2.1Spring Boot框架介绍介绍Spring Boot框架的基本原理、特点及其在Web开发中的应用。2.2音乐播放技术概述概述音乐播放的基本原理、流媒体技术及音频处理技术。2.3数据库技术选型分析适合音乐播放网站的数据库技术,如MySQL、MongoDB等。第3章系统设计详细介绍音乐播放网站的整体设计方案。3.1系统架构设计阐述系统的层次结构、模块划分及各模块的功能。3.2数据库设计介绍数据库表结构、关系及数据存储方式。3.3界面设计用户界面的设计原则、布局及交互方式。第4章系统实现详细介绍音乐播放网站的具体实现过程。4.1开发环境与工具介绍开发所需的软件、硬件环境及开发工具。4.2核心功能实现阐述音乐播放、搜索、推荐等核心功能的实现细节。4.3系统测试与优化介绍系统测试的方法、过程及性能优化策略。第5章研究结果与分析呈现音乐播放网站设计与实现的研究结果。5.1系统功能测试结果展示系统各项功能的测试结果,包括功能完整性、稳定性等。5.2用户反馈与评价收集并分析用户对音乐播放网站的使用反馈与评价。5.3对比方法分析将本设计与实现与其他类似系统进行对比分析,突出优势与不足。第6章结论与展望总结音乐播放网站设计与实现的研究成果,并展望未来发展方向。6.1研究结论概括音乐播放网站设计与实现的主要成果及创新点。6.2展望指出当前研究的不足,提出未来改进方向及可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值