android TV实现textview跑马灯效果
来源:互联网 发布:榕基软件千股千评 编辑:程序博客网 时间:2024/06/01 08:51
一、跑马灯实现方式:
1.常用方式:
我们直接Google “跑马灯实现方式”可找到许多许多,但是实现的大多数都是直接获取textview,在属性中设置如下参数:
android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:singleLine="true"参数讲解:
ellipsize:表示textview以一行内容显示的时候,以何种方式显示,总共有五种方式:
start:将文字开头省略,用符号"..."代替。
middle:将文字中间部分省略,用符号"..."代替。
end:将文字结尾部分省略,用符号"..."代替。
marquee:表示当前内容一行显示不下的时候,用跑马灯形式展示。
none:默认,没有任何效果。
marqueeRepeatLimit:表示回滚的次数,一般设置为marquee_forever,表示永久滚动。
singleLine:设置为true,表示当前textview显示内容只能为一行。
2.自定义View实现方式:
代码如下:
public class ScrollTextView extends AppCompatTextView { private boolean canFocused = false ; public ScrollTextView(Context context) { super(context); } public ScrollTextView(Context context, AttributeSet attrs) { super(context, attrs); } public ScrollTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override protected void onFocusChanged(boolean arg0, int arg1, Rect arg2) { // TODO Auto-generated method stub super.onFocusChanged(arg0, arg1, arg2); } @Override public boolean isFocused() { return isCanFocused(); } @Override public boolean hasFocus() { return isCanFocused(); } public boolean isCanFocused() { return canFocused; } public void setCanFocused(boolean canFocused) { this.canFocused = canFocused; }}
setCanFocused是我们自己设置的方法,用来给textview付焦点。
同时,我们在xml文件中还要设置当前TextView为ScrollTextView,并给它设置跑马灯的属性即可。
但是,当前的设置都仅仅只为TextView为直接选中效果,如果作为子控件使用,则会存在无法获取焦点的情况。
二、TextView作为子控件如何实现选中滚动:
当我们的TextView作为布局中的一个子控件的时候,选中父控件的时候,textview如何实现跑马灯效果。其实方法很简单,主要是局部刷新一下TextView控件,我们这里使用的方式为重新填写TextView的name值,达到选中子控件TextView实现跑马灯效果。
代码如下:
class HomeFocusListener implements View.OnFocusChangeListener { private ScrollTextView mTextView; private String mName; public HomeFocusListener(ScrollTextView view, String name) { mTextView = view; mName = name; } @Override public void onFocusChange(View view, boolean b) { if (b) { mTextView.setText(mName); mTextView.setCanFocused(true); zoomOutWindow(view); } else { mTextView.setText(mName); mTextView.setCanFocused(false); zoomInWindow(view); } } }
这里new一个onFocusChangeListener监听,父控件实现该监听事件,并传入子控件的TextView值和name值,根据是否获得焦点b的不同设置TextView来是否获得焦点。
补(20171206):
testview重新写入一遍的目的是为了获得焦点,我们也可以选择直接实现选中效果来实现获取焦点:
使用属性:setSelected.
我们查看源码就会明白的:
- android TV实现textview跑马灯效果
- Android TextView跑马灯效果实现
- android textview跑马灯效果实现
- Android TextView实现跑马灯效果
- android TextView实现跑马灯效果
- android TextView实现跑马灯效果
- Android开发 TextView实现跑马灯效果
- android用TextView实现跑马灯效果
- Android TextView实现跑马灯效果
- Android TextView 跑马灯效果的实现
- android TextView实现跑马灯效果
- Android TextView实现跑马灯效果
- Android--TextView实现跑马灯效果
- Android开发:TextView实现跑马灯效果
- Android---14---TextView实现跑马灯效果
- Android TextView实现跑马灯效果。
- android textview 实现跑马灯效果
- Android下TextView实现跑马灯效果
- 窗口
- angularjs的简易购物代码
- Linux部署tomcat+apache+java环境
- scikit-learn 中文文档-内核岭回归-监督学习|ApacheCN
- BZOJ 4510: [Usaco2016 Jan]Radio Contact dp
- android TV实现textview跑马灯效果
- web.xml 配置中classpath: 与classpath*:的区别
- let the bollom rise
- Fastjson
- 编写一个JFrame窗口,要求如下: 1. 在窗口的NORTH区放置一个JPanel面板。 2. JPanel面板放置如下组件: (1) JLable标签,标签文本为“兴趣”,右边接着是三个JChec
- Glide-4.3.0 中没有GlideApp的如何操作
- 1025
- React渲染组件
- ZooKeeper的安装与部署 zk遍历所有子节点树