[文章]#HarmonyOS征文#HarmonyOS实战—实现跑马灯效果

阅读量0
1
2
1. Text文本框展示大段内容文字
  • 文本中展示大段文字,除了这种方式之外,还有其他方式
  • 可以使用跑马灯的形式展示,但需要两个前提条件,如下:下面两个都是默认属性,也可以省略不写
  • ohos:truncation_mode="ellipsis_at_start",表示前面的内容省略掉,以“...”的形式,如:
  1. <Text
  2.         ohos:id="$+id:text1"
  3.         ohos:height="100vp"
  4.         ohos:width="100vp"
  5.         ohos:background_element="#55121212"
  6.         ohos:text="小明:你说我这穷日子过到啥时侯是个头啊?小红:那得看你能活多久了"
  7.         ohos:text_size="40vp"
  8.         ohos:truncation_mode="ellipsis_at_start"
  9.    />
复制代码


  • 把宽度改为 300vp
  • 如果想显示前面的内容,省略后面的内容,只要把 ohos:truncation_mode="ellipsis_at_end"
  • ohos:truncation_mode="auto_scrolling"表示滚动效果
  • ohos:auto_scrolling_count="10"表示跑马灯滚动的次数,10表示滚动十次,unlimited表示无限次数
  • ohos:auto_scrolling_duration="2000"表示跑的速度,2000是时间单位,毫秒,多少时间跑完,表示2秒跑完这段内容
2. 实现案例
  • 新建项目:TextLargeApplication
ability_main
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <DirectionalLayout
  3.     xmlns:ohos="http://schemas.huawei.com/res/ohos"
  4.     ohos:height="match_parent"
  5.     ohos:width="match_parent"
  6.     ohos:alignment="center"
  7.     ohos:orientation="vertical">

  8.     <Text
  9.         ohos:id="$+id:text1"
  10.         ohos:height="100vp"
  11.         ohos:width="300vp"
  12.         ohos:background_element="#55121212"
  13.         ohos:text="小明:你说我这穷日子过到啥时侯是个头啊?小红:那得看你能活多久了"
  14.         ohos:text_size="40vp"
  15.         ohos:truncation_mode="auto_scrolling"
  16.         ohos:auto_scrolling_count="unlimited"
  17.         ohos:auto_scrolling_duration="2000"
  18.         />

  19. </DirectionalLayout>
复制代码

MainAbilitySlice
  1. package com.xdr630.textlargeapplication.slice;

  2. import com.xdr630.textlargeapplication.ResourceTable;
  3. import ohos.aafwk.ability.AbilitySlice;
  4. import ohos.aafwk.content.Intent;
  5. import ohos.agp.components.Component;
  6. import ohos.agp.components.Text;

  7. public class MainAbilitySlice extends AbilitySlice implements Component.ClickedListener {
  8.     @Override
  9.     public void onStart(Intent intent) {
  10.         super.onStart(intent);
  11.         super.setUIContent(ResourceTable.Layout_ability_main);

  12.         //1.获取Text
  13.         Text text1 = (Text) findComponentById(ResourceTable.Id_text1);

  14.         //2.给Text文本添加单击事件
  15.         //表示当单击一下的时候,开启跑马灯效果
  16.         text1.setClickedListener(this);
  17.     }

  18.     @Override
  19.     public void onActive() {
  20.         super.onActive();
  21.     }

  22.     @Override
  23.     public void onForeground(Intent intent) {
  24.         super.onForeground(intent);
  25.     }

  26.     @Override
  27.     public void onClick(Component component) {
  28.         //开启跑马灯效果
  29.         //两种方式获取文本的对象
  30.         //1.方法的参数,参数表示被点击组件的对象
  31.         //2.可以把 onStart 方法中的Text对象,挪到成员位置

  32.         //使用第一种方法实现:
  33.         //先强转,因为开启跑马灯的方法不是父类component里的方法,而是Text文本里的方法
  34.         //所以,把component强转为Text
  35.         Text t = (Text) component;
  36.         t.startAutoScrolling();
  37.     }
  38. }
复制代码

  • 运行:
  • 因为设置了auto_scrolling_count="unlimited属性,所以会无限次的滚动。当然也可以设置滚动多少次,以及滚动的时间。
  • 【本文正在参与“有奖征文 | HarmonyOS征文大赛”活动】 https://bbs.elecfans.com/jishu_2098584_1_1.html

回帖

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
链接复制成功,分享给好友