一分钟实现 Android textview 跑马灯文字滚动效果
2015-06-01 13:54
1071 查看
*文字水平跑马灯效果:
设置如下TextView控件文件的XML:
有其它布局如ScrollView等抢占焦点,需要自定义控件获取焦点:
*文字切换动画效果:
设置如下TextView控件文件的XML:
<com.example.Mytext android:id="@+id/textview" android:layout_width="match_parent" android:layout_height="20dp" android:gravity="center" android:singleLine="true"//限制行数为1行 android:ellipsize="marquee"//marquee 文字滚动 android:marqueeRepeatLimit="marquee_forever"//文字滚动次数:marquee_forever 无限次 android:focusable="true"//获取焦点 android:focusableInTouchMode="true"//获取触摸焦点 android:textColor="@color/red" android:text="@string/text" />
有其它布局如ScrollView等抢占焦点,需要自定义控件获取焦点:
public class Mytext extends TextView { public Mytext(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { if(focused){ super.onFocusChanged(focused, direction, previouslyFocusedRect); } } @Override public void onWindowFocusChanged(boolean hasWindowFocus) { if(hasWindowFocus){ super.onWindowFocusChanged(hasWindowFocus); } } @Override public boolean isFocused() { return true; } }
*文字切换动画效果:
1 public class MainActivity extends Activity { 2 private static final String[] TEXTS = { "First", "Second", "Third" }; 3 private int mTextsPosition = 0; 4 private TextSwitcher mTextSwitcher; 5 @Override 6 public void onCreate(Bundle savedInstanceState) { 7 super.onCreate(savedInstanceState); 8 setContentView(R.layout.main); 9 mTextSwitcher = (TextSwitcher) findViewById(R.id.your_textview); 10 mTextSwitcher.setFactory(new ViewFactory() { 11 @Override 12 public View makeView() { 13 System.out.println("makeView"); 14 TextView t = new TextView(MainActivity.this); 15 t.setGravity(Gravity.CENTER);//t.setTextColor(Color.BLACK); 16 return t; 17 } 18 }); 19 mTextSwitcher.setInAnimation(this, android.R.anim.fade_in); 20 mTextSwitcher.setOutAnimation(this, android.R.anim.fade_out); 21 onSwitchText(null); 22 } 23 public void onSwitchText(View v) { 24 mTextSwitcher.setText(TEXTS[mTextsPosition]); 25 setNextPosition(); 26 } 27 private void setNextPosition() { 28 mTextsPosition = (mTextsPosition + 1) % TEXTS.length; 29 } 30 }
相关文章推荐
- Android中layout过程详解
- Android开发中常用的跳转系统自带界面方法(ACTION)
- Android jni开发问题总结
- Android系统广播大全
- android5.0(Lollipop)编译脚本envsetup解析
- Android开发环境部署
- Android 轻松实现仿QQ消息下拉刷新
- Android 轻松实现仿QQ消息下拉刷新
- android apk反编译
- Android事件分发机制
- 2015推荐的Android框架
- Android获取本地IP地址-WIFI or 3G
- Android数据库工具ORM-greenDAO学习
- Android NDK的调试经验
- Android实习周记:第四周,Geek,就要做“有技术含量”的活!
- Android:长按连续响应的Button
- 菜鸟学Android笔记(十四):web的应用目录及如何配置主页?
- 关于android的ActionBarActivity过期的问题
- android 屏幕适配
- 源码阅读 3 Hummingbird-for-Android