//// attrs.xml 自定义属性
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="SlidingText">
<attr name="animationDuration" format="integer" />
</declare-styleable>
</resources>
///// main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
xmlns:slidingtext="http://schemas.android.com/apk/res/com.testSildingTextView"
android:layout_height="fill_parent">
<com.testSildingTextView.SlidingTextView
android:id="@+id/sliding_textview" android:layout_width="fill_parent"
android:layout_height="wrap_content"
slidingtext:animationDuration="500"
android:layout_gravity="center">
<TextView android:layout_width="fill_parent" android:gravity="center_horizontal"
android:layout_height="wrap_content" android:text="sssssss" />
</com.testSildingTextView.SlidingTextView>
</LinearLayout>
首先自定义名称xmlns:slidingtext=http://schemas.android.com/apk/res/com.testSildingTextView
这里使用了自定义的名称
slidingtext:animationDuration="500"
///// SlidingTextView
private String[] showTexts = new String[] { "ssssss", "aaaaaa", "bbbbbb" }; // 用来记录显示哪个字符串 private int count = 0; private int mDuration; private TextView text; private int textWidth = 200;//获取自定义变量public SlidingTextView(Context context, AttributeSet attrs) { super(context, attrs); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SlidingText); mDuration = a .getInteger(R.styleable.SlidingText_animationDuration, 750); }//设置要显示的字符串 public void setShowText(String[] showTexts){ this.showTexts=showTexts; } // 回调函数 界面初始化快结束时调用protected void onFinishInflate() { super.onFinishInflate(); text = (TextView) this.getChildAt(0); mHandler.postDelayed(appear, 1000); }private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { // 1为出现,2为隐藏 switch (msg.arg1) { case 1: doAnimationOpen(); break; case 2: doAnimationClose(); break; } } };public void doAnimationOpen() { post(appear); } // 出现的效果 Runnable appear = new Runnable() { public void run() { TranslateAnimation animation; int fromXDelta = 0, toXDelta = 0, fromYDelta = 0, toYDelta = 0; int calculatedDuration = 0; fromXDelta = textWidth; toXDelta = 0; calculatedDuration = mDuration * Math.abs(toXDelta - fromXDelta) / textWidth; animation = new TranslateAnimation(fromXDelta, toXDelta, fromYDelta, toYDelta); animation.setDuration(calculatedDuration); animation.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { if(showTexts.length!=0){ count = (count + 1) % showTexts.length; text.setText(showTexts[count]); } text.setVisibility(VISIBLE); } @Override public void onAnimationRepeat(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { mHandler.postDelayed(hide, 2500); } }); startAnimation(animation); } }; public void doAnimationClose() { post(hide); } // 隐藏的效果 Runnable hide = new Runnable() { public void run() { TranslateAnimation animation; int fromXDelta = 0, toXDelta = 0, fromYDelta = 0, toYDelta = 0; int calculatedDuration = 0; toXDelta = -1 * textWidth; calculatedDuration = mDuration * Math.abs(toXDelta - fromXDelta) / textWidth; animation = new TranslateAnimation(fromXDelta, toXDelta, fromYDelta, toYDelta); animation.setDuration(calculatedDuration); animation.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationRepeat(Animation animation) { } //动画结束时 设置textview的状态 @Override public void onAnimationEnd(Animation animation) { mHandler.postDelayed(appear, 500); text.setVisibility(INVISIBLE); } }); startAnimation(animation); } };
这个动画效果主要是每次开出一条线程来运行的,首次运行后等2点5秒,就将textview以动画效果向左运行,等0.5秒后从右边出现,动画结束后隐藏,不断循
分享到:
相关推荐
1. 提供清晰的视觉反馈:点击时颜色变化、阴影效果等,让用户知道他们已与TextView交互。 2. 保持一致性:全应用内的点击效果应保持一致,以便用户形成预期。 3. 避免过度动画:过多的动画可能会分散用户的注意力,...
在默认情况下,`TextView`只是简单地显示文本,但通过自定义动画,我们可以让其展示出丰富的动态效果。 "飞入"效果通常涉及到`Animation`类或`Animator`类的使用。在Android中,可以使用`AlphaAnimation`、`...
在Android开发中,实现搜索TextView的飞出飞入效果是一种增强用户体验、提升界面动态感的常见技巧。这种效果常用于搜索框中输入关键字时,文字的动态显示,使得交互更加生动有趣,类似于网页版Bing搜索中的动画效果...
大家可以看一下实现方式,重在学习,方式很简单就是继承TextView,最关键的就是使用getPaint()方法获取当前绘制Textview的Paint对象,并给这个Paint对象设置原生TextView没有的LinearGradient属性。最后,在onDraw()...
在Android开发中,UI设计是不可或缺的一部分,而TextView作为显示文本的基本组件,有时我们需要对其进行定制以达到特定的设计效果,比如让TextView拥有圆角。本文将详细介绍如何在Android中实现TextView的圆角效果,...
但请注意,这种效果只有在TextView的宽度小于其内容的宽度且焦点在TextView上时才会生效。下面是如何设置的代码: ```xml <TextView android:id="@+id/text_view" android:layout_width="wrap_content" android:...
本篇文章将深入探讨如何在Android中创建非常炫酷的TextView效果,基于提供的"android非常炫酷的 TextView 效果"项目,我们将重点分析`HTextView-master`这个压缩包中的代码。 首先,`HTextView`通常是一个自定义的...
#### 一、理解TextView与Paint对象 在深入探讨之前,我们先来了解一下TextView的基本概念以及它与Paint对象的关系。TextView是Android中最常用的用于显示文本的控件之一。而Paint对象则是用来控制文本绘制方式的...
这个效果使得文字能够在TextView中垂直滚动,模拟出广告滚动条的效果,为用户界面增添动态感。下面我们将详细探讨如何实现这种效果。 首先,我们要知道TextView是Android中最基础的文本显示组件,它主要用于显示...
本篇文章将详细讲解如何在Android中实现TextView的垂直滚动效果。 首先,要开启TextView的滚动功能,我们需要在XML布局文件中设置`android:scrollbars`属性。将其值设为`"vertical"`,即可启用垂直滚动条。例如: ...
默认TextView并不支持下划线和删除线,但可以通过自定义View并重写`onDraw()`,在适当位置画出线条来实现。 5. **文字阴影** 自定义TextView的阴影效果,可以通过设置Paint对象的阴影属性,如`setShadowLayer...
在Android开发中,实现TextView的上下滚动效果可以让信息在有限的空间内持续展示,提升用户体验。以下将详细讲解如何实现这一功能。 首先,我们要明白TextView是Android SDK中的一个基础组件,用于显示单行或多行...
本教程主要围绕如何在Android中使用`TextView` 实现跑马灯效果展开。首先,我们需要了解`TextView` 的基本属性和设置方法。在XML布局文件中,我们可以这样创建一个`TextView`: ```xml <TextView android:id="@+id...
这个项目就是针对这样的需求,提供了一个在`Eclipse`环境下开发的`TextView`上下滚动效果的示例。 要实现`TextView`的上下滚动效果,我们可以利用`TextView`的`marquee`属性和`ellipsize`属性。首先,`marquee`属性...
在Android开发中,TextView是用于显示单行或多行文本的视图组件,而"跑马灯效果"(Marquee)是一种特殊的效果,使得...通过这些知识,你就能创建出具有跑马灯效果的TextView,为你的Android应用增添动态的视觉效果。
要实现TextView的跑马灯效果,通常需要结合Android的属性和自定义布局来完成。以下是详细步骤和相关知识点: 1. **设置Ellipsize属性**: TextView有一个名为`ellipsize`的属性,它允许我们在文本过长时添加省略号...
"跑马灯"效果,又称为滚动文字效果,是指当TextView中的文本长度超过控件宽度时,文本会从右向左自动循环滚动,就像跑马灯一样。这个效果在很多场景下都非常实用,比如通知栏消息、应用标题或者广告横幅等。 实现...
4. 自定义View:如果需要更个性化的动画效果,开发者可能需要继承TextView并重写onDraw方法,通过控制绘制过程来实现动画效果。这需要对绘图有较深入的理解。 在实际应用中,为了确保代码的可读性和可维护性,...
本教程将深入讲解如何设置`TextView`的字体格式以及实现滚动显示效果,让你的应用界面更加丰富和动态。 一、设置字体格式 1. 字体样式:`TextView`默认使用系统字体,但我们可以替换为自定义字体。首先,将字体...
- 为了提升用户体验,可以考虑添加动画效果,比如渐入渐出,使得滚动更自然。 - 长文本的处理,如果文本过长,可能会影响滚动速度,可以考虑截取部分重要信息进行展示。 - 对于复杂的跑马灯需求,可以使用自定义...