Android高级界面组件的学习(一)

简介: 学习过基础的较常用的组件,现在我们要向更多更高的知识出发,所以下面来讲讲Android中的高级界面组件。 (1)前面我们学习过TextView和EditText,关于文本不只是有那些基础组件,也有高级组件AutoCompleteTextView(自动完成文本框),他是从EditText下面派生出来的,但是呢?他比普通的编辑框多了个功能,就是当用户输入一定的字符之后,它会出现一个下拉菜单让用户选择,当用户选择其中的某个菜单项就回按用户选择的自动填写该文本框。

学习过基础的较常用的组件,现在我们要向更多更高的知识出发,所以下面来讲讲Android中的高级界面组件。

(1)前面我们学习过TextView和EditText,关于文本不只是有那些基础组件,也有高级组件AutoCompleteTextView(自动完成文本框),他是从EditText下面派生出来的,但是呢?他比普通的编辑框多了个功能,就是当用户输入一定的字符之后,它会出现一个下拉菜单让用户选择,当用户选择其中的某个菜单项就回按用户选择的自动填写该文本框。这些我们在各大搜索框时会看到,最常见的当然就是百度一下,你就知道。那么他是怎么实现的呢?

首先,我们当然是要写一个它的布局文件,例如:

<!--
    自动完成文本框,其中completionHint属性是指下拉菜单中的提示标题
    completionThreshold属性是指用户至少输入几个字符才显示,这里设置为1个,
    dropDownVertical(Horizontal)代表下拉菜单与文本框之间的垂直(水平)偏移,因为默认是紧跟(左对齐),
    dropDownWidth(Height)则是下拉菜单的宽(高)
    -->
    <AutoCompleteTextView
        android:id="@+id/actv_test"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginRight="50dp"
        android:completionHint="@string/auto_text"
        android:completionThreshold="1"
        android:dropDownHorizontalOffset="5dp"
        android:dropDownVerticalOffset="2dp"
        android:dropDownWidth="200dp"
        android:dropDownHeight="300dp" />
然后在Activity里面为他定义一个字符串数组作为提示文本,并且创建一个适配器封装该数组,主要代码如下:

        String[] starNames = new String[] {
			"邓紫棋",
			"邓丽君",
			"邓超"
	};
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.search_layout);
		
		ArrayAdapter<String> auto = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, starNames);
		AutoCompleteTextView actv = (AutoCompleteTextView) findViewById(R.id.actv_test);
		actv.setAdapter(auto);
	}
然后我们运行手机会得到下面这个界面:


 (2)同样的,在前面我们学习了时间的基础组件包括AnalogClock赫尔DigitalClock,可是我们发现这两个基础组件通常是和时间选择器在一块的,也就是Android里面的DatePicker(日期选择器)和TimePicker(时间选择器),那么这两个选择器是怎样实现选择的呢?这就要说到DatePicker的OnDateChangeListener和TimePicker的OnTimeChangeListener这两个监听器。

<TimePicker
        android:id="@+id/tp_test"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal" />

<TextView 
        android:id="@+id/tv_time_show"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"/>
上面就是时间选择器的布局文件,TextView是用来显示我们选择的时间信息的,主要代码如下:
                TimePicker tpPicker = (TimePicker) findViewById(R.id.tp_test);
		tvTimeShow = (TextView) findViewById(R.id.tv_time_show);

		Calendar c = Calendar.getInstance();
		hour = c.get(Calendar.HOUR);
		minute = c.get(Calendar.MINUTE);

		tpPicker.setOnTimeChangedListener(new OnTimeChangedListener() {

			@Override
			public void onTimeChanged(TimePicker arg0, int hour, int minute) {
				TimeActivity.this.hour = hour;
				TimeActivity.this.minute = minute;

				tvTimeShow.setText("选择的时间是" + hour+ "时" + minute + "分");
			}
		});
同样地,日期选择器的布局文件和主要代码如下:

<DatePicker
        android:id="@+id/dp_test"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"/>
    
    <TextView 
        android:id="@+id/tv_date_show"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"/>
                DatePicker dpPicker = (DatePicker) findViewById(R.id.dp_test);
		tvDateShow = (TextView) findViewById(R.id.tv_date_show);
		
		Calendar c = Calendar.getInstance();
		year = c.get(Calendar.YEAR);
		month = c.get(Calendar.MONTH);
		day = c.get(Calendar.DAY_OF_MONTH);
		
		dpPicker.init(year, month, day, new OnDateChangedListener() {

			@Override
			public void onDateChanged(DatePicker arg0, int year, int month,
					int day) {
				DateActivity.this.year = year;
				DateActivity.this.month = month;
				DateActivity.this.day = day;

				tvDateShow.setText("选择的日期是" + year + "年" + month + "月" + day
						+ "日");
			}
		});
具体的页面显示如下:


如上图所示,我们使用这两个选择器时就会显示我们选择后的日期和时间信息。再进一步学习的话,我们也可以结合之前的时钟做一个类手机自带的时间显示App了。

目录
相关文章
|
9月前
|
Android开发 数据安全/隐私保护 开发者
Android自定义view之模仿登录界面文本输入框(华为云APP)
本文介绍了一款自定义输入框的实现,包含静态效果、hint值浮动动画及功能扩展。通过组合多个控件完成界面布局,使用TranslateAnimation与AlphaAnimation实现hint文字上下浮动效果,支持密码加密解密显示、去除键盘回车空格输入、光标定位等功能。代码基于Android平台,提供完整源码与attrs配置,方便复用与定制。希望对开发者有所帮助。
182 0
|
9月前
|
XML Java Android开发
Android自定义view之网易云推荐歌单界面
本文详细介绍了如何通过自定义View实现网易云音乐推荐歌单界面的效果。首先,作者自定义了一个圆角图片控件`MellowImageView`,用于绘制圆角矩形图片。接着,通过将布局放入`HorizontalScrollView`中,实现了左右滑动功能,并使用`ViewFlipper`添加图片切换动画效果。文章提供了完整的代码示例,包括XML布局、动画文件和Java代码,最终展示了实现效果。此教程适合想了解自定义View和动画效果的开发者。
427 65
Android自定义view之网易云推荐歌单界面
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
9月前
|
Android开发 开发者
Android企业级实战-界面篇-3
本文是《Android企业级实战-界面篇》系列的第三篇,主要介绍分割线和条形跳转框的实现方法,二者常用于设置和个人中心界面。文章通过具体代码示例展示了如何实现这两种UI组件,并提供了效果图。实现前需准备`dimens.xml`、`ids.xml`、`colors.xml`等文件,部分资源可参考系列第一、二篇文章。代码中详细说明了布局文件的配置,如分割线的样式定义和条形跳转框的组件组合,帮助开发者快速上手并应用于实际项目中。
120 1
|
存储 Android开发 开发者
深入理解安卓应用开发的核心组件
【10月更文挑战第8天】探索Android应用开发的精髓,本文带你了解安卓核心组件的奥秘,包括Activity、Service、BroadcastReceiver和ContentProvider。我们将通过代码示例,揭示这些组件如何协同工作,构建出功能强大且响应迅速的应用程序。无论你是初学者还是资深开发者,这篇文章都将为你提供新的视角和深度知识。
|
数据可视化 Android开发 开发者
安卓应用开发中的自定义View组件
【10月更文挑战第5天】在安卓应用开发中,自定义View组件是提升用户交互体验的利器。本篇将深入探讨如何从零开始创建自定义View,包括设计理念、实现步骤以及性能优化技巧,帮助开发者打造流畅且富有创意的用户界面。
406 0
|
9月前
|
XML Android开发 数据格式
Android企业级实战-界面篇-2
本文为《Android企业级实战-界面篇》系列第二篇,主要介绍三个UI模块的实现:用户资料模块、关注与粉丝统计模块以及喜欢和收藏功能模块。通过详细的XML代码展示布局设计,包括dimens、ids、colors配置文件的使用,帮助开发者快速构建美观且功能齐全的界面。文章结合实际效果图,便于理解和应用。建议配合第一篇文章内容学习,以获取完整工具类支持。
151 0
|
9月前
|
算法 Java Android开发
Android企业级实战-界面篇-1
本文详细介绍了Android企业级开发中界面实现的过程,涵盖效果展示、实现前准备及代码实现。作者通过自身经历分享了Android开发经验,并提供了`dimens.xml`、`ids.xml`、`colors.xml`和`strings.xml`等配置文件内容,帮助开发者快速构建规范化的UI布局。文章以一个具体的用户消息界面为例,展示了如何使用线性布局(LinearLayout)和相对布局(RelativeLayout)实现功能模块排列,并附带注意事项及使用方法,适合初学者和进阶开发者参考学习。
218 0
|
XML 搜索推荐 前端开发
安卓开发中的自定义视图:打造个性化UI组件
在安卓应用开发中,自定义视图是一种强大的工具,它允许开发者创造独一无二的用户界面元素,从而提升应用的外观和用户体验。本文将通过一个简单的自定义视图示例,引导你了解如何在安卓项目中实现自定义组件,并探讨其背后的技术原理。我们将从基础的View类讲起,逐步深入到绘图、事件处理以及性能优化等方面。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧。
|
测试技术 数据库 Android开发
深入解析Android架构组件——Jetpack的使用与实践
本文旨在探讨谷歌推出的Android架构组件——Jetpack,在现代Android开发中的应用。Jetpack作为一系列库和工具的集合,旨在帮助开发者更轻松地编写出健壮、可维护且性能优异的应用。通过详细解析各个组件如Lifecycle、ViewModel、LiveData等,我们将了解其原理和使用场景,并结合实例展示如何在实际项目中应用这些组件,提升开发效率和应用质量。
460 6

热门文章

最新文章