网站/小程序/APP个性化定制开发,二开,改版等服务,加扣:8582-36016

    这篇文章主要给大家介绍了关于Android实现跑马灯的两种简单方式,文中介绍了两种方法,分别说了每个方法的优缺点,需要的朋友可以选择性使用,下面来一起看看吧

    第一种:较简单,但是局限性强,貌似只能从右至左跑,且有一个要求:字体的长度需大于控件的长度, 不然没有效果,重要的代码为深色部分,具体代码在文章最后。

    重要代码的介绍

    1. android:ellipsize=“marquee” 设置为跑马灯的显示方式

    2. android:focusable=“true” 获得焦点

    3. android:focusableInTouchMode=“true” 可以通过触动来获取焦点

    4. android:marqueeRepeatLimit=“marquee_forever” 设置重复的次数

    5. android:singleLine=“true” 单行显示

    第二种:利用定时器改变 padding 的值来起到跑马灯的效果,各个方向都可以,无第一种的要求,主要起到作用的为 setPadding 方法,在最后记得要关闭定时器!

    1. 布局文件

    2. 实现功能的代码

    再次强调记得关掉定时器!

    具体代码如下:

    第一种方法:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    <TextView

        android:text="班里发生什么了?不知道,先起哄再说。"

        android:ellipsize="marquee"

        android:focusable="true"

        android:focusableInTouchMode="true"

        android:marqueeRepeatLimit="marquee_forever"

        android:singleLine="true"

        android:layout_width="200dp"

        android:layout_height="wrap_content" />

    第二种方法:

    布局文件:

    1

    2

    3

    4

    5

    6

    <TextView

            android:id="@+id/mytext"

            android:gravity="center_vertical"

            android:text="班里发生什么了?不知道,先起哄再说。"

            android:layout_width="match_parent"

            android:layout_height="40dp" />

    Java 文件:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    public class<360> MainActivity extends Activity {



        private TextView mytext;

        private Handler handler;

        private Runnable runnable;

        private int theroll=0;


        @Override

        protected void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);

            setContentView(R.layout.activity_main);

            initView();

            marquee();//记得调用方法


        }



        private void initView() {

            //实例化

            mytext = (TextView) findViewById(R.id.mytext);

        }

        //滚动的具体代码

        private void marquee(){

          handler=new Handler();

          runnable=new Runnable() {

              @Override

              public void run() {

              if (theroll>80){

                  theroll=-80;

              }

              theroll=theroll+2;

              //通过设置下面的四个参数可以起到控制滚动方向的作用

              mytext.setPadding(theroll,0,0,0);

              handler.postDelayed(this,100);//可调整速度

              }

          };

          handler.postDelayed(runnable,0);

        }


        @Override

        protected void onDestroy() {

            super.onDestroy();

            //在最后记得要关掉定时器

            handler.removeCallbacks(runnable);

        }

    }


    评论 0

    暂无评论
    0
    0
    0
    立即
    投稿
    发表
    评论
    返回
    顶部