2021SC@SDUSC移动互联网项目分析——入门Hello World(三)

2021SC@SDUSC

目录

 CheckBox

选项改变监听

提交选项监听

ImageView

fitCenter(fitStart,fitEnd)

matrix

fitXY

centerCrop

centerInside

ScrollView

最上/下方按钮

总结


之前分析了案例app入门Hello World总页面、布局和部分UI控件。这篇博客主要分析app中剩余的UI控件——CheckBox、ImageView、ScrollView

 

 

 CheckBox

复选框是一个 ON/OFF 开关,可以由用户切换。用户可选择的选项不是相互排斥的一组时,应该使用复选框,可多选。

 

 

此页面为线性布局,因此在布局文件activity_check_box.xml中最外层为<LinearLayout></LinearLayout>标签,内层添加了7个CheckBox和一个提交的Button。

选项改变监听

第一组CheckBox选项为"西瓜"、"梨"、"苹果"。当勾选选项时,监听会注意到改变的选项并将选择的选项内容在手机下方显示。

为实现此监听首先需要在CheckBoxActivity.java中通过控件id属性获取到第一组CheckBox

因为类CheckBoxActivity实现了CompoundButton.OnCheckedChangeListener接口

CompoundButton.OnCheckedChangedListener 接口可用于对 CheckBox 的状态进行监听。 当 CheckBox 的状态在未被选中和被选中之间变化时,该接口的 onCheckedChanged () 方法会被系统调用。 CheckBox 通过 setOnCheckedChangeListener () 方法将该接口对象设置为自己的监听器。

所以cbx1、cbx2、cbx3通过调用CheckBox.setOnCheckedChangeListener()方法即可设置事件监听。

不过要记得实现接口中的onCheckedChanged()抽象方法。(此部分只需看划红线部分即可通过)通过Toast.makeText(...).show()显示出发生改变的选项内容。

 

提交选项监听

第二组CheckBox选项为"物理"、"化学"、"生物","全选"。选择"全选"时,会将前面三个选项全选上。点击"确认"按钮提交后,在手机下方会显示选择的内容。

为实现此监听需要在CheckBoxActivity.java中通过控件id属性获取到第二组CheckBox和提交按钮。

首先要完成点击"全选"时,将前三个全选上的功能。需要给cbx7(全选选项)加上改变事件监听,与第一组CheckBox一样,通过调用CheckBox.setOnCheckedChangeListener()方法设置事件监听。

因为此监听不是像第一组CheckBox一样检测到改变只需弹出选项内容,而是需要将前三个都选上,所以对CompoundButton.OnCheckedChangedListener 接口中的onCheckedChanged()方法实现时要添加if...else语句来区分到底是第一组选项还是cbx7发生改变。

如果是cbx7发生改变,首先通过外层的if...else来判断是选择还是取消"全选"按钮

b是true的话,则选择"全选",因此需要调用CheckBox.setChecked(true)将前面三个选项选上。

b是false的话,则是取消"全选",因此需要调用CheckBox.setChecked(false)将前面三个选项全取消。

其次要完成点击"确认"按钮提交选项内容。

类CheckBoxActivity还实现了View.OnClickListener接口,按钮可直接调用setOnClickListener()方法增加点击事件监听。

为了完成点击事件发生时界面弹出选项内容的动作,实现接口中的抽象方法onClick()。

通过if语句,来判断各个选项是否被选上(除了"全选"按钮)。若选上,则String类型的choose就加上选项内容,最后通过Toast.makeText(...).show()展示给用户。

ImageView

图像视图,直接继承自View类,它的主要功能是用于显示图片。ImageView可以适用于任何布局中,并且Android为其提供了缩放和着色的一些操作。

此页面可拉动,因此最外层为<ScrollView></ScrollView> 。内层嵌套一个线性布局的页面,所以第二层是<LinearLayout></LinearLayout>。最里层添加一些TextView、ImageView展示ImageView属性android:scaleType设置不同值表示的不同效果。

其他属性不再赘述,在TextView讲得较为清楚。

fitCenter(fitStart,fitEnd)

fitCenter(fitStart,fitEnd):保持图片的横纵比缩放,直到该图片能够显示在ImageView组件上,并将缩放好的图片显示在imageView的中间(左上,右下)。

matrix

matrix(center):默认值,不改变原图的大小,从ImageView的左上角(中间)开始绘制原图,原图超过ImageView的部分作裁剪处理。

fitXY

fitXY:对图像的横向与纵向进行独立缩放,使得该图片完全适应ImageView,但是图片的横纵比可能会发生改变。

centerCrop

centerCrop:保持横纵比缩放图片,直到完全覆盖ImageView,可能会出现图片的显示不完全。

centerInside

centerInside:保持横纵比缩放图片,直到ImageView能够完全地显示图片。

ScrollView

ScrollView称为滚动视图,它的作用是当一个屏幕的像素显示不下页面的时候,采用滑动的方式将页面显示在UI上。

此页面可滑动,因此最外层为<ScrollView></ScrollView>。详细的页面分析见下图。

 

HorizontalScrollView为水平滚动视图。

最上/下方按钮

点击"最上(下)方"按钮,页面会自动滑到最上(下)方。

首先获取到"最上(下)方"按钮和页面ScrollView。通过findViewById()方法用每个控件唯一的Id找到相应控件。

类ScrollViewActivity还实现了View.OnClickListener接口,按钮可直接调用setOnClickListener()方法增加点击事件监听。

为了完成点击事件发生时界面滑到相应位置,实现接口中的抽象方法onClick()。

通过方法getId()获取到发生点击事件的Id,用case语句来判断是"最上方"按钮还是"最下方"按钮。

若为"最上方"按钮,则调用ScrollView.fullScroll(ScrollView.FOCUS_UP),自动滑到最上方。

若为"最下方"按钮,则调用ScrollView.fullScroll(ScrollView.FOCUS_DOWN),自动滑到最下方。

fullScroll将视图滚动到顶/底部时,同时焦点作出了改变。

总结

"入门Hello World"较为详细地用简单的例子来展示不同控件的属性,让读者可以更快速地上手Android。ChexkBox、ImageView、ScrollView部分介绍较为全面,也用简单的功能展示了各控件如何添加点击事件监听和事件改变监听。初学者比较容易看懂和学会。

不足的是ScrollView水平滑动视图出现了问题,不能水平方向上滑动。还需要对app进行更精密的测试。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值