目录
一, TextView组件概述
之前我们将Android的集成开发环境下载安装好了,也稍微小试牛刀运行了一下项目,现在我们来认识第一个小伙伴--TextView组件,没错,顾名思义,人家就是与文本有关的组件。TextView组件的文本可以放入我们的页面中并可以通过设置里面的组件属性以此来显示出多样的的文本效果。当然了它最最特别的就是跑马灯效果。相信大家在去银行取钱或者是去商店购物时,它们的门口上面会横着一个显示屏,上面会滚动着一些形如:“感恩回馈:老用户可........”诸如此类的字样。我们将要做的代码就是实现这样的效果。
相信学习过Android studio的都知道,在Android系统中,每一个组件在窗体中都有具体的位置和大小,因此在窗体中摆放各种组件时很难进行判断。不过,使用Android布局管理器可以很方便地控制各组件的位置和大小。Android系统提供了六种布局管理器(均直接或间接的继承自ViewGroup类):
- 相对布局管理器(RelativeLayout):通过相对定位的方式来控制组件的摆放位置
- 线性布局管理器(LinearLayout):在垂直或水平方向上一次摆放组件
- 帧布局管理器(FrameLayout):没有任何定位方式,默认情况下,所有的组件都会摆放在容器的左上角,逐个覆盖。
- 表格布局管理器(TableLayout):使用表格的方式按行和列来摆放组件
- 绝对布局管理器(AbsoluteLayout):通过绝对坐标(x,y)的方式来控制组件的摆放位置(在 Android 2.0版本中被标记为已过期)
- 网络布局管理器(GridLayout):通过它可以实现跨行或跨列摆放组件
在我们这个跑马灯的案例里面用到的就是线性布局管理器,其他的布局管理器我们就先做个了解,知道有这几个布局管理器即可,往后我们在实现其他的效果时会用到的。
我们的Android集成开发环境里面的活动xml默认的是相对布局管理器,就需要我们将其删除,并添加我们的线性布局管理器上去。如下添加:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</LinearLayout>
接下来我们来看一下这些属性及属性值的作用: 1,xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android:包含命名空间的声明,其属性值"http://schemas.android.com/apk/res/android"表示Android系统中的各种标准属性能够在该xml文件中使用,提供了大部分元素中的数据,该属性不能忽略 2,android:layout_width="match_parent" android:layout_width:指定当前的视图在屏幕上显示的高度,其属性值match_parent表示当前屏幕有多大视图就有多大。还有其他的属性值,如:wrap_content视图里面的内容有多宽,视图的宽就有多宽。还可以指定尺寸值,单位为dp即可。下面的高度也差不多。 3,android:layout_height="match_parent"
二,TextView组件基本属性
有了这个线性布局管理器后,现在将我们的TextView组件添加进去,这个时候就需要注意了,我们在添加任何组件时都需要指定它的宽和高,不然就会报错。我们可以将组件看成一个人,是个人肯定有身高,站在地面上有宽度。不然没法将一个没有高,宽的事物视为存在的。
添加进去组件的宽和高(wrap_content:组件有多少内容,宽高就有多少)后,就不会有报错了:
上面我们也提到了,可以将组件当成人来看待,那么,它就会有名字,要穿衣服,衣服有大小,颜色和风格。并且我们可以用id表示组件的名字,text(文本)表示有衣服,textSize(文本大小)表示衣服的大小,textColor(文本颜色)表示衣服的颜色,textType(文本的风格)表示衣服的样式(风格)。当一个人处在任一空间时,所有的一切都可以是它的背景,并且这个人还可以与所处的空间之间呈现不同的位置,比方说爬山的人可以是在山脚,山之间,山顶,也可以是刚刚好和山呈现水平居中的位置,或者是垂直居中的位置。背景可以用background(组件的背景)来表示,位置可以用gravity(文本位置)来表示。将这些属性应用到我们的组件上后如下所示:
上面我们并没有给id,text,color,background一个确切的内容,而是用@来进行指向。那么这个指向又是怎么实现的呢?首先到app→res→values→strings.xml文件里面设置tex的t属性值
如上设置的是我们的text属性的属性值的内容。id组件名可以直接书写,颜色可以到app→res→values→colors.xml文件里面进行设置
如上,在文件中已经为我们生成了几种不同的用RGB表示的颜色。如果觉得上面的颜色不够好看,想要其他的颜色的话,可以访问下面的网址进行在线颜色选取
三,TextView组件跑马灯关键属性
在上面我们已经熟系且掌握了TextView控件的基本属性,接下来我们再去学习实现跑马灯效果的关键属性
- singleLine:让文本内容只能在一行显示(如果一开始的文本内容没有换行显示的话是没有必要进行跑马灯的,因为跑马灯主要是为了让超出屏幕宽度的文字能够显示出来,被顾客看到)
- focusable:设置是否可以获取焦点(为了能够让文字可以滚动,我们一般就是将其属性值设为true)
- focusableInTouchMode:用于控制视图在触摸模式下是否可以聚焦(一般属性值为true)
- ellipsize:在哪里可以省略文字,一般属性值为marquee(marquee有大帐篷的,网络跑马灯效果意思)
- marqueeRepeatLimit:字母动画重复次数(一般设置为无限次流动,即属性值为marquee_forever)
在添加了上述的属性后我们还不能实现跑马灯的效果,因为没有一个触发焦点的动作。这里我们就使用最简单方便的解决方法,在TextView组件后面添加<requestFocus/>来请求到焦点,让我们的文字流动起来。如下图所示,在组件后面添加了<requestFocus/>来请求到焦点后,文本的后面就不是省略号了,而是逗号,表示我们可以进行跑马灯了。
我们的效果如下:
TextView组件跑马灯效果
各文件代码如下:
strings.xml文件:
<resources> <string name="app_name">FirstActivity</string> <string name="forMarquee_sTV1">作业要求:以特定项目为背景,做数据的集成、汇总、分析、可视化要求应用:maxcompute,quickBI</string> </resources>
colors.xml文件:
<resources> <color name="purple_200">#FFBB86FC</color> <color name="purple_500">#FF6200EE</color> <color name="purple_700">#FF3700B3</color> <color name="teal_200">#FF03DAC5</color> <color name="teal_700">#FF018786</color> <color name="black">#FF000000</color> <color name="white">#FFFFFFFF</color> <color name="deepRed">#ff0000</color> </resources>
activity_main.xml文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/marquee_tv" android:text="@string/forMarquee_sTV1" android:textColor="@color/deepRed" android:textSize="30dp" android:textStyle="bold" android:background="@color/cardview_dark_background" android:gravity="center" android:singleLine="true" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:focusable="true" android:focusableInTouchMode="true" /> <requestFocus/> </LinearLayout>