版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章 Android UI 基础知识3.1 编写程序界面3.5 ListView控件详解3.3 四种基本布局3.6 强大的滚动控件RecylerView控件3.2 常用控件3.4 约束布局3.7 小结3.1 编写程序界面Android中有多种编写程序界面的方式可供选择,比如Android Stuido和Eclipse中都提供了相对应的可视化编辑器,允许使用拖拽控件的方式来编写布局,并可以在视图上直接修改控件的属性。通常Android开发者不使用上述方式去编写界面,因为可视化编辑工具并不能帮助开发者去真正了解界面底层的实现原理;而且通过这种方式制作出的界面通常不具有良好的屏幕适配性,当需要编写
2、较为复杂的界面时,可视化编辑工具就很难胜任。因此建议所有的界面都通过最基本的方式去实现,也就是编写XML代码,熟悉并掌握了XML代码编写界面之后,不仅可以实现复杂的界面,还可以分析和修改当前现有界面。3.2 常用控件控件作为界面组成的主要元素。Android系统提供了大量的UI控件,这些界面可以与用户直接进行交互,例如TextView(文本框)、EditText(编辑框)、Button(按钮)等,合理地使用这些控件就可以非常轻松地编写出美观的界面。本节将学习Android中常用控件的使用方法。 3.2 常用控件3.2.1 TextView控件TextView作为Android中最简单最常用的一
3、个控件,用来在界面显示文本信息,TextView控件属性较多,开发者可以通过设置属性值来修改文本的字体大小、颜色、样式等。3.2 常用控件3.2.2 EditText控件EditText控件是程序用于和用户进行交互的一个重要控件,用户经常会向程序中输入数据,此时就需使用文本编辑控件EditText,它允许用户在控件里输入和编辑内容,并且可以在程序中对这些内容进行处理。设置文本颜色、大小、样式设置文本颜色、大小、样式 继承自继承自TextView的属性的属性3.2 常用控件3.2.3 Button控件Button是程序和用户进行交互时必不可少的控件,它的作用是用于响应用户的一系列点击事件。3.2
4、 常用控件点击事件实现方式独立类方式- 指定Button的onClick属性方式-在Activity中实现这个click方法android:onClick=click public void click(View view) btn1.setText(按钮1已经被点击!); 3.2 常用控件点击事件实现方式匿名内部类方式- 在Activity中添加匿名内部类btn2.setOnClickListener(new View.OnClickListener() Override public void onClick(View v) btn2.setText(按钮2已经被点击!); );3.2 常
5、用控件点击事件实现方式接口方式- 在当前Activity中实现OnClickListener接口-实现接口方法-绑定到Button按钮上public class MainActivity extends AppCompatActivity implements View.OnClickListener Override public void onClick(View v) btn1.setOnClickListener(this); 3.2 常用控件3.2.4 ImageView控件ImageView控件用于在界面上展示图片,可以让程序界面变得更加丰富多彩。3.2 常用控件3.2.5 Rad
6、ioButton控件RadioButton是单选按钮,必须与RadioGroup配合使用,提供两个或者多个互斥的选项及。而RadioGroup是单选组合框,可以容纳多个RadioButton,实现单选状态。 3.2 常用控件3.2.5 RadioButton控件3.2 常用控件3.2.5 RadioButton控件为RadioGruop设置监听事件的方法是setOnCheckedChangeListener( ),要与Button中的setOnClickListener( )区分开。 rdg.setOnCheckedChangeListener(new RadioGroup.OnChecked
7、ChangeListener() Override public void onCheckedChanged(RadioGroup group, int checkedId) if (checkedId=R.id.rdb) tv_content.setText(您选择的性别是:男性); else tv_content.setText(您选择的性别是:女性); );3.2 常用控件3.2.6 Toast控件Toast也称为消息对话框,它是Android系统提供的一种非常友好的轻量级信息提醒机制,在程序中可以使用它将一些短小的信息通知给用户,Toast对话框显示在应用程序界面的最上层,显示一段时间
8、后自动消失,不会打断当前操作。由于Toast只起到提示作用,因此多用于触发事件的监听中。创建消息对话框创建消息对话框上下文对象上下文对象提示信息提示信息显示时间长短显示时间长短显示消息显示消息3.2 常用控件3.2.7 AlertDialog控件AlertDialog可以在当前的界面弹出一个对话框,并且这个对话框是位于应用程序界面的最上层,具有确定和取消按钮3.2 常用控件3.2.8 ProgressDialog控件ProgressDialog会在对话框中显示一个进度条,在应用程序实现耗时操作时(如下载资源、获取网络图片,加载视频等)可以让用户耐心地等待。3.2 常用控件3.2.9 Progr
9、essBar控件ProgressBar是在Android UI界面中显示一个进度条,是一个非常实用的组件,通常用于向用户显示某个耗时操作完成的百分比。3.3 四种常用布局3.3.1 线性布局线性布局(LinearLayout)在实际开发中使用最多,也相对简单,它会将控件在线性方向上依次排列,排列方式主要有水平和垂直两种方式。3.3 四种常用布局通过android:orientation属性控制控件的排列方向,android:orientation属性有两个值,分别是vertical和horizontal,其中vertical表示线性布局垂直显示,horizontal表示线性布局水平显示,而且h
10、orizontal是线性布局默认的排列方向。如果控件是水平排列,那么控件的android:layout_width属性就只能设置为wrap_content如果控件是垂直排列,那么控件的android:layout_height属性就不能设置为match_parent当控件水平排列时,如果控件未占满一行,会留有空白区域,这样既不美观又浪费空间。此时,可以利用layout_weight属性解决这个问题,该属性被称为权重,通过比例调整布局中所有控件的大小。3.3 四种常用布局3.3.2 相对布局相对布局(RelativeLayout)在程序开发中也很常见,相较于线性布局按照线性方向排列控件,相对布局
11、就显得随意一些,通过相对定位的方式指定控件位置,控件可以出现在布局中的任何地方,但是必须以其他控件或者父容器为参照物。3.3 四种常用布局3.3.2 相对布局属性属性作用作用paddingTop指定布局顶部内边距的距离paddingBottom指定布局底部内边距的距离paddingLeft指定布局左侧内边距的距离paddingRight指定布局右侧内边距的距离padding指定布局四周内边距的距离layout_marginTop指定当前控件上边界与某控件的距离layout_marginBottom指定当前控件下边界与某控件的距离layout_marginLeft指定当前控件左边界与某控件的距离
12、layout_marginRight指定当前控件右边界与某控件的距离layout_centerInParent指定当前控件位于父布局的中心位置layout_centerVertical指定当前控件位于父布局的垂直居中位置layout_centerHorizontal指定当前控件位于父布局的水平居中位置layout_above指定当前控件位于某控件的上方layout_below指定当前控件位于某控件的下方layout_toLeftOf指定当前控件位于某控件的左侧layout_toRightOf指定当前控件位于某控件的右侧layout_alignTop指定当前控件的上边界与某控件的上边界对齐lay
13、out_alignBottom指定当前控件的下边界与某控件的下边界对齐layout_alignLeft指定当前控件的左边界与某控件的左边界对齐layout_alignRight指定当前控件的右边界与某控件的右边界对齐3.3 四种常用布局3.3.3 帧布局帧布局(FrameLayout)就非常简单了。它有时也被称为层布局,该布局为每个添加的控件创建一个空白区域(称为一帧),从屏幕左上角按照层次堆叠方式摆放控件,后面的控件覆盖前面的控件,先放入的控件显示在最底层。帧布局中有两个特殊属性,一个是android:foregroud,用于设置帧布局容器的前景图像,这个图像始终在所有子控件之上;另外一个是
14、android:foregroundGravity,用于设置前景图像显示位置。3.3 四种常用布局3.3.4 表格布局表格布局(TableLayout)通过行和列将界面分为多个单元格,以行列的形式管理子控件,并且需要配合TableRow使用。每一行为一个TableRow的对象,因此TableRow的数量决定了表格的行数。TableRow中可以添加子控件,每添加一个为一列,因此表格的列数是由包含最多控件的TableRow决定的。3.3 四种常用布局3.3.4 表格布局 3.4 约束布局 约束布局(ConstraintLayout)是Android Studio 2.2中主要的新增功能之一,它和传
15、统编写界面的方式恰恰相反,ConstraintLayout非常适合使用可视化的方式来编写界面,它的用法很多都是对控件进行拖拽,但并不太适合使用XML的方式来进行编写。从Android Studio 2.3 版本开始新建的Module中默认的布局就是 ConstraintLayout,本书使用的是更高版本的Android Studio3.2,所以在初次创建Moudle时需要将布局文件中的ConstraintLayout修改成自己所需要的布局即可。3.5 ListView控件详解虽然现在手机屏幕变得越来越大,但是毕竟屏幕空间还是有限的,能够一次性在屏幕上显示的内容并不多。日常使用微信、微博、淘宝等
16、程序时,这些程序通常会在一个页面显示很多个条目,并且每个条目的布局风格都一样,这是通过Android中最常用的空间之一ListView实现的。3.5 ListView控件详解3.5.1 ListView基础用法在布局中添加ListView控件 3.5 ListView控件详解在Activity中使用自定义数据适配器类对ListView进行数据适配 private class MyBaseAdapter extends BaseAdapter Override public int getCount() return data.length; Override public Object get
17、Item(int position) return dataposition; Override public long getItemId(int position) return position; Override public View getView(int position, View convertView, ViewGroup parent) TextView tv = tv = new TextView(MainActivity.this); tv.setText(dataposition); tv.setTextSize(40); return tv; 3.5 ListVi
18、ew控件详解在Activity的onCreate()方法中进行数据适配Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ListView listView =findViewById(R.id.list_view); MyBaseAdapter adapter = new MyBaseAdapter(); listView.setAdapter(adapter); 3.5 L
19、istView控件详解3.5.2 ListView的定制界面ListView界面内容要丰富的多,可以对Item条目进行定制。创建ListView对应的Item布局,显示每个Item信息,Item中左侧放置一个ImageView用于显示图标,右侧放置一个TextView用于显示文本信息3.5 ListView控件详解3.5.3 ListView的优化有多少个条目就会执行多少次MyBaseAdapter类中的getView( )方法。这样的话如果展示的数据有成千上万条,getView( )方法也会被执行成千上万次,相应的也会创建成千上万个条目对象,这样不仅会增加内存的消耗,而且当ListView快
20、速滚动时,很容易造成内存溢出而导致程序崩溃。为了防止数据量过大造成内存溢出,在使用ListView时通常会进行优化,其中一种是复用convertView。3.5 ListView控件详解Item 5Item 4Item 3ListView控件Item 2Item 5Item 4Item 3ListView控件Item 2滑出屏幕的滑出屏幕的Item 1滑出屏幕的滑出屏幕的Item 1复用复用Item 1加载新加载新内容内容Item 3Item 4Item 5复用的复用的Item 1滑出屏幕的滑出屏幕的Item 23.5 ListView控件详解3.5.3 ListView的优化在加载Item布
21、局时,会使用findViewById()方法找到Item布局中的各个控件,在每一次加载新的Item数据时都会进行控件寻找,这样也会产生耗时操作。为了进一步的优化ListView减少耗时操作,可以将要加载的子View放在ViewHolder类中,当第一次创建convertView时将这些控件找出,在第二次重用convertView时就可直接通过convertView中的getTag()方法获得这些控件。3.5 ListView控件详解3.5.4 ListView的点击事件ListView也是有点击事件的listView.setOnItemClickListener(new AdapterView
22、.OnItemClickListener() Override public void onItemClick(AdapterView parent, View view, int position, long id) Toast.makeText(MainActivity.this,您点击了:+dataposition,Toast.LENGTH_SHORT).show(); );3.6强大的滚动控件RecylerView 从Android 5.0开始,谷歌公司推出了一个增强版的ListView新控件RecylerView,它不仅拥有与ListView相同的效果,而且对ListView中的不足
23、之处进行了优化。3.6.1 如何添加RecylerView控件打开app/bulid.gradle文件,在dependencies闭包中添加dependencies implementation fileTree(dir: libs, include: *.jar) implementation com.android.support:appcompat-v7:28.0.0 implementation com.android.support:recyclerview-v7:28.0.0 implementation com.android.support.constraint:constra
24、int-layout:1.1.3 testImplementation junit:junit:4.12 androidTestImplementation com.android.support.test:runner:1.0.2 androidTestImplementation com.android.support.test.espresso:espresso-core:3.0.23.6强大的滚动控件RecylerView在activity_main.xml中添加recyclerview控件 3.6强大的滚动控件RecylerView3.6.2 RecyclerView的基础用法在Activity中进行编写/用于指定recyclerView的布局方式,可以实现和ListView类似的效果 LinearLayoutManager linearLayoutManager = new LinearLayoutManager(LinearLayou
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年产品研发监理框架协议
- 2024年企业环境整治修复协议
- 2024年全新版物流合作协议
- 2024年专属:兼职工作薪酬保密协议
- 2024国有企业技术开发协议
- 2024年全球物流合作协议
- 2024年专业版:金蝶财务软件授权使用协议
- 2024年全新版物业租赁协议
- 2024年1103项目经理临时雇佣协议
- 2024年冷库安全监管协议
- 液化气站气质分析报告管理制度
- 砍伐工程方案35963
- 《大医精诚》说课(新)
- 牛羊屠宰管理办法
- 《微观经济学》课程思政教学案例(一等奖)
- DBJ50T-232-2016 建设工程监理工作规程
- 国际人力资源管理课程教学大纲
- 深信服园区级双活数据中心
- T-CSCS 016-2021 钢结构制造技术标准
- 回弹强度对应表
- DB32T 3713-2020 高速公路建设工程施工班组管理规范
评论
0/150
提交评论