TextView 文本显示控件
- android:id指定唯一标识符
- android:layout_width/height指定控件的宽高,其中常用两个值wrap_content(由控件内容决定控件大小)和match_parent(与父副局保持一致)
- android:text指定显示的内容
- android:gravity指定文字的对齐方式
Button 按钮
- android:textAllCaps="true/false"用于指定是否对Button中的所有英文字符进行大小写转换
EditText 可交互文本显示控件,用户可编辑
- android:hint="String value"在EditText上显示提示性的文字
- android:maxLines="2"指定EditText的最大行数为2行
ImageView 图片显示控件
- android:src=""用于指定图片资源
ProgressBar 进度条
- 可以设置进度条的可见性
- 可以通过style属性给ProgressBar指定不同的样式
- 通过ProgressBar的getProgress()、setProgress()获取和设置进度条的进度。
AlertDialog 警示信息框,该对话框置顶于所有界面元素之上,能够屏蔽掉其他空间的交互能力。
- 首先调用AlertDialog.Builder创建一个AlertDialog实例
- 设置AlertDialog实例的标题setTitle()、内容setMessage()、可否取消setCancelable()等属性。
- 调用AlertDialog实例的setPositiveButton(Stirng str, new DialogInterface.onClickListener())为对话框设置确定按钮的点击事件
- 调用AlertDialog实例的setNegativeButton(Stirng str, new DialogInterface.onClickListener())为对话框设置取消按钮的点击事件
- 最后调用AlertDialog.show()方法将对话框显示出来
============================================Android控件的可见性====================================
Android控件都具有可见性,可以用android:visibility进行指定,可选值有visible(可见)、invisible(不可见,但仍占据原来位置,可以理解为透明的)和gone(控件不可见,并且不占据任何屏幕空间);还可以通过setViaibility()方法设置空间的可见性,传入的值为VIEW.VISIBLE、VIEW.INVISIBLE、VIEW.GONE
================================================================================================
ProgressDialog 与AlertDialog类型,可以屏蔽掉其他控件的交互能力,会在对话框中显示一个进度条,一般用于当前操作比较费时的情况。用法也与AlertDialog相类似
- 首先调用AlertDialog.Builder创建一个AlertDialog实例
- 设置AlertDialog实例的标题setTitle()、内容setMessage()、可否取消setCancelable()等属性。注意:如果在setCancelable()传入了false,表示ProgressDialog不能通过Back键取消掉,这时一定要在数据加载完成后必须调用ProgressDialog的dismiss()方法来关闭对话框
- 调用AlertDialog实例的setPositiveButton(Stirng str, new DialogInterface.onClickListener())为对话框设置确定按钮的点击事件
- 调用AlertDialog实例的setNegativeButton(Stirng str, new DialogInterface.onClickListener())为对话框设置取消按钮的点击事件
- 最后调用AlertDialog.show()方法将对话框显示出来
4中基本布局:
- LinearLayout 线性布局
-
android:layout_gravity=“”top/center_vertical/center_horizontal/bottom/left/right”布局对齐方式
-
要注意android:orientation与android:layout_gravity之间的配合,避免冲突
-
android:layout_weight:该属性允许使用比例的方式来指定控件的大小。
2.RelativeLayout 相对布局
- android:layout_alignParentLeft="true" 相对左对齐
- android:layout_alignParentright="true"相对右对齐
- android:layout_alignParentTop="true"相对上对齐
- android:layout_alignParentBottom="true"相对下对齐
- android:layout_alignParentcenterInParent="true"相对中心对齐
以上均是对父布局进行定位,也可以相对于控件进行定位:android:layout_above/bottom/toLeftOf/toRightOf="控件id";还有相对于控件边缘进行对齐的方式:android:layout_alignLeft/Right/Top/Bottom
3 FrameLayout帧布局,应用较少
4 百分比布局PercentFramelayout和PercentRelativeLayout
自定义布局,在写好布局文件后,直接在主布局中加<include layout = "layout.xml" />
然后再在MainActivity中将系统自带的标题栏隐藏掉,方法为:调用getSupportActionBar()获取ActionBar.实例,再调用ActionBar的hide()方法将系统自带的标题栏隐藏起来。
自定义控件:(目的:减少重复代码)
- 新建一个类继承自一种布局方式(例LinearLayout);在该类中需要重写LinearLayout中的带有两个参数的构造函数
- 加载动态布局:借助LayoutInflater实现,通过LayoutInflater.from(Context context)方法构建一个LayoutInflater对象,调用LayoutInflater对象的inflate(加载布局文件的ID;父布局)方法
- 在布局文件中加载该自定义控件,需要指明控件的完整路径
- 可以在自定义控件中加载各种事件
ListView控件:(主要用于展示大量数据)
- 简单使用
将ListView当成普通控件使用,在主程序中调用ListView与其他普通控件一致。数组中的数据是无法直接传递给ListView的,需要借助适配器来完成(Android提供了很多适配器的实现类)。
适配器的构建:例如ArrayAdapter,其构造函数需要依次传入当前上下文、ListView子项布局的ID、以及需要适配的数据
调用ListView的setAdapter()方法,将构建好的适配器对象传递进去,这样就建立了ListView与数据之间的关联
注:每个要传递进去的内容就是一个子项布局,子项布局在进入屏幕时,会调用getVIew()方法
- 定制ListView的界面
可以创建自定义的适配器,创建的自定义适配器继承自ArrayAdapter,可以指定泛型类型,自定义的适配器必要操作如下:1 重写父类的构造方法,需要传递三个参数:上下文、ListView子项布局的ID、数据。2 重写getView()方法
getView(int position, View convertView, ViewGroup parent)方法:该方法在每个子项被滚动到屏幕内的时候会被调用,getView()共有三个参数,
- 第一个参数是当前子项;
- 第二个参数是用于将之前加载好的布局进行缓存,以便之后可以进行使用,避免每次都将布局加载一遍,造成运行效率低下。使用方法为:在动态加载布局文件之前,首先判断convertView是否为空值,如果不为空,则返回该View,如果为空,则进行动态创建布局文件;
- 第三个参数是控件组。用来存放显示内容的信息的,因为是显示多个同类型的数据,所以放在一个group中。
View对象的setTag()、getTag()方法:setTag()为存储内容在View中,getTag()为从View中获取存储内容。--------关于应用情景网上较多的说法:1 用于区分非常多类似的VIew;2 用于优化ListView的运行效率
提升ListView的运行效率:
- 使用getView()方法中的第二个参数convertView,缓存创建布局文件
- 将内容进行封装在一个内部类中,如果有已加载的内容,就不再重新获取相关控件的实例,而是对控件的实例进行缓存
RecyclerView:滚动控件
使用RecyclerView控件(属于新增的控件),需要在app下的bulid.gradle中添加相应的依赖库,具体地址为:compile 'com.android.support.recyclerview-v7:25.3.1'。在activity_main.xml中增加RecyclerView控件,需要键入完全地址。
1 RecyclerView基本用法:
- 新建适配器,一般新建的适配器(FruitAdapter)都继承自RecyclerView.Adapter,并且可以指定泛型类型(FruitAdapter.ViewHolder),其中ViewHolder是在FruitAdapter中定义的内部类,该内部类ViewHolder继承自RecyclerView.ViewHolder,内部类ViewHolder中定义一个构造方法,传入VIew参数(该参数通常就是RecyclerView子项的最外层布局,可以通过findViewId()方法来获取布局中的控件)。
- 新建适配器FruitAdapter的构造方法,传入要展示的数据源。
- 重写继承自父类的onCreateViewHolder()、onBindViewHolder()、getItemCount()方法。onCreateViewHolder()是用于创建ViewHolder实例的,通过载入布局获取VIew对象,将View对象传入ViewHolder的构造方法返回ViewHolder实例;onBindViewHolder()方法会在每个子项被滚动到屏幕内的时候执行,用于对RecyclerView子项的数据进行赋值;getItemCount()方法用于获取RecyclerView的子项数量。
- 修改MainActivity活动中对RecyclerView的使用:
1 获取RecyclerView的实例
2 创建一个LinearLayoutManager对象,并将LinearLayoutManager对象通过RecyclerView对象的setLayoutManager()方法将该对象设置到RecyclerView当中。创建的LinearLayoutManager对象的默认排列是纵向排列的,可以通过LinearLayoutManager对象的setOrientation()方法来指定排列方向。
3 创建适配器,调用RecyclerView的setAdapter()方法来完成适配器设置
注:RecyclerView提供了LinearLayoutManager、GridLayoutManager和StaggeredGridLayoutManager三种内置的布局排列方式。
- RecyclerView的点击事件:RecyclerView并没有提供类似于setOnItemClickListener()的注册监听方法。需要给子项具体的View设置注册点击事件。
getItem(int position):获取当前项的实例
LayoutInflater加载布局文件
LayoutInflater.from(Context context)创建LayoutInflater对象
LayoutInflater.from(Context context).inflate(1,2,3)动态加载一个布局文件。参数1是要加载的布局文件的id;参数2是给加载好的布局添加一个父布局;参数3指定为false,表示只让我们在父布局中声明的layout属性生效,但不会为这个View添加父布局,因为一旦View有父布局,就不能再添加到ListView中了。
按键触发监听事件:
- 按钮Button的触发监听事件是调用setOnClickListener(new View.OnClickListener(){});
- ListView控件的触发监听事件是调用的setOnItemClickListener(new AdapterView.OnItemClickListener(){});
----《第一行代码 Android》