[开发笔记-2013/01/31] Android频繁更新TextView内容的困惑
来源:互联网 发布:手机信号探测软件 编辑:程序博客网 时间:2024/05/27 06:53
今天在做类似播放器的东西,期间遇到了界面更新小问题,纠结了1个多钟才最终想通了,所以在这里写点东西纪录一下,希望以后遇到类似问题,
我一分钟就可以解决。
我的界面中,里面包含了一个具有“跑马灯“效果的TextView(简称MarqueeTextView)。MarqueeTextView的前面是个也是一个显示音乐播放
时间的TextView(简称TimeView)。MarqueeTextView在音乐播放时匀速的移动,而TimeView每隔1秒都会被调用一次setText()来更新音乐
播放的时间进度。
程序在实际运行过程中,MarqueeTextView的移动时出现了"突然移动一大截又马上恢复正常”的现象。于是乎,我的纠结开始了。
纠结1:是不是UI线程做了太多耗时操作。
查UI线程耗时操作,我是通过“代码翻阅”和“输出代码执行时间”来完成的(不知道CSDN的大神们是否更牛B的想法);最终发现怀疑代码都
在合理范围内,差一点我就想写一个SurfaceView来试试了。
纠结2:是不是Layout文件没写好。
这正是问题所在了,TimeView是WRAP_CONTENT的,而MarqueeTextView是FILL_PARENT的。android.view.TextView在被调用setText这个函数的时候,
应该是先触发setText(""),然后setText("实际内容")。这样TimeView有小段时间width是为0的。所MarqueeTextView根据FILL_PARENT的特性会
在TimeView为0的时候撑开,然后又马上缩小了。所以这样就产生了以上现象。
以下是问题布局:
<TextView android:id="@+id/text_view_time" android:layout_width="wrap_content" // 问题所在。最终改为固定宽度。 android:layout_height="32dp" android:layout_centerVertical="true" android:layout_marginLeft="48dp" android:gravity="center" android:text="00:00/00:00" android:textColor="@color/white" android:textSize="20dp" /> <RelativeLayout android:layout_width="fill_parent" android:layout_height="32dp" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="32dp" android:layout_toRightOf="@+id/text_view_time" android:paddingLeft="16dp" > <com.itap.voiceemoticon.widget.MarqueeTextView android:id="@+id/text_view_music_title_slide" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centerInParent="true" android:ellipsize="none" android:focusable="true" android:focusableInTouchMode="true" android:gravity="center_vertical" android:marqueeRepeatLimit="marquee_forever" android:scrollHorizontally="true" android:singleLine="true" android:text="" android:textColor="@color/white" android:textSize="18dp" /> </RelativeLayout>
- [开发笔记-2013/01/31] Android频繁更新TextView内容的困惑
- Android之TextView频繁调用setText的困惑
- 一个频繁刷新内容的textview
- android开发--TextView持续更新
- android开发webview的困惑
- Android中ScrollView+TextView,更新内容后无作用的问题
- Android开发学习笔记:TextView的属性详解
- Android开发学习笔记:TextView的属性详解
- android自定义带清空内容的TextView
- Android:可复制内容的TextView、EditText
- Android 应用开发笔记 - 文本框(TextView)
- Android开发中TextView内容过多而设置滚动条
- android开发 textview内容过多实现上下滑动
- 开发的困惑~~~!
- 开发的困惑
- Android开发系列之动态添加dex(解决app频繁更新问题)
- 自适应内容的TextView
- Android开发学习笔记:TextView的属性详解 | android:duplicateParentState属性解释
- win8安装MS Sql Server 2005 服务无法启动解决方案
- 百度的搜索输入提示
- linux内核添加系统调用
- java中的静态类初始化器与终结器
- SSH的JAR所需的全部jar包
- [开发笔记-2013/01/31] Android频繁更新TextView内容的困惑
- 一起学java 1
- Windows 下基于 Eclipse 的可视化远程 Linux C/C++ 开发环境搭建
- TCP通信
- PostgreSQL学习笔记2之模式
- How to Shrink the Datafile of Temporary Tablespace
- 基于遍历的几种二叉树运算的实现和应用举例
- 【android】binder机制-servicemanager
- win7下mysql 不是内部或外部命令解决办法