前言
在上一节中,我们已经了解了TextView
的基本使用,那么这节让我们来学习下TextView
关于跑马灯的简单实现吧。这里我将TextVew
的跑马灯功能封装成了一个工具类MarqueeHelper
,下面就来简单讲讲它的使用吧
今天涉及内容:
-
MarqueeHelper
方法简介 -
MarqueeHelper
在Activity
中的使用 - 项目结构图和效果图
-
MarqueeHelper
源码
先来波效果图
一. MarqueeHelper 方法简介
MarqueeHelper
主要包含以下几个方法:
/**设置跑马灯信息**/
fun setMessage(message:String?):MarqueeHelper
/**初始化跑马灯**/
fun init(textView: TextView?,context:Context?): MarqueeHelper
/***
* 开始 跑马灯
*
* @param message 为null时,跑马信息为 setMessage(message:String?) 设置的信息
* 设置有信息时,优先以此信息作为跑马信息展示
*/
fun start(message:String?)
/**停止跑马灯**/
fun stop()
下面看看 MarqueeHelper
在 Activity
中的使用。
二. MarqueeHelper 在 Activity 中的使用
2.1 前置设置
由于我实现的是 跑马灯横屏 全屏展示,所以要在Androidmanifast.xml
中做界面横屏处理:
<activity android:name=".ui.MainActivity"
android:screenOrientation="landscape">
//其他代码省略
//......
</activity>
涉及到全屏展示,于是我在MainActivity
对应的布局activity_main.xml
代码如下:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.MainActivity"
android:background="@color/white">
<TextView
android:id="@+id/mTvTest"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintStart_toStartOf="parent"
android:gravity="center"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
2.2 MainActivity 代码
下面贴出 MainActivity
中使用代码:
open class MainActivity : AppCompatActivity(), View.OnClickListener {
private var isRun: Boolean = true
private var marqueeHelper:MarqueeHelper= MarqueeHelper()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
init()
initData()
setListener()
}
private fun init() {
}
private fun initData() {
marqueeHelper.setMessage("关注微信公众号:Android进击,共同学习进步呀")
.init(mTvTest,this@MainActivity)
.start(null) //若想初始化时就显示跑马灯,可以设置start
}
private fun setListener() {
mTvTest.setOnClickListener {
isRun = !isRun
if (isRun) {
marqueeHelper.start(null)
// //若要在start时改变跑马灯信息,可以调用
// marqueeHelper.start("来局王者吗,我孙膑超牛的,带你上王者啊")
} else {
marqueeHelper.stop()
}
}
}
override fun onClick(v: View) {
}
}
这里需要注意的是,弱国你在初始化时就想达到跑马灯效果,你可以在marqueeHelper
初始化时的结尾调用start(null)
,然后当你再次启动时,想重新设置跑马灯内容的话,你可以调用 marqueeHelper.start()
时设置值,如果你 start
时只是想重新让跑马灯效果跑起来,二不是设置值,那么你只要调用 marqueeHelper.start(null)
就行。
三. 项目结构图和效果图
四. MarqueeHelper 源码
MarqueeHelper
源码如下: