`
abc20899
  • 浏览: 929283 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

TextView刷入与刷出的效果

阅读更多
//// 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秒后从右边出现,动画结束后隐藏,不断循
分享到:
评论

相关推荐

    TextView的点击效果

    1. 提供清晰的视觉反馈:点击时颜色变化、阴影效果等,让用户知道他们已与TextView交互。 2. 保持一致性:全应用内的点击效果应保持一致,以便用户形成预期。 3. 避免过度动画:过多的动画可能会分散用户的注意力,...

    Android TextView文字飞入效果

    在默认情况下,`TextView`只是简单地显示文本,但通过自定义动画,我们可以让其展示出丰富的动态效果。 "飞入"效果通常涉及到`Animation`类或`Animator`类的使用。在Android中,可以使用`AlphaAnimation`、`...

    搜索TextView飞出飞入效果

    在Android开发中,实现搜索TextView的飞出飞入效果是一种增强用户体验、提升界面动态感的常见技巧。这种效果常用于搜索框中输入关键字时,文字的动态显示,使得交互更加生动有趣,类似于网页版Bing搜索中的动画效果...

    Android自定义TextView闪动效果

    大家可以看一下实现方式,重在学习,方式很简单就是继承TextView,最关键的就是使用getPaint()方法获取当前绘制Textview的Paint对象,并给这个Paint对象设置原生TextView没有的LinearGradient属性。最后,在onDraw()...

    实现TextView圆角效果demo

    在Android开发中,UI设计是不可或缺的一部分,而TextView作为显示文本的基本组件,有时我们需要对其进行定制以达到特定的设计效果,比如让TextView拥有圆角。本文将详细介绍如何在Android中实现TextView的圆角效果,...

    Android中TextView的常用效果实现

    但请注意,这种效果只有在TextView的宽度小于其内容的宽度且焦点在TextView上时才会生效。下面是如何设置的代码: ```xml &lt;TextView android:id="@+id/text_view" android:layout_width="wrap_content" android:...

    android非常炫酷的 TextView 效果

    本篇文章将深入探讨如何在Android中创建非常炫酷的TextView效果,基于提供的"android非常炫酷的 TextView 效果"项目,我们将重点分析`HTextView-master`这个压缩包中的代码。 首先,`HTextView`通常是一个自定义的...

    android 设置textview中划线效果

    #### 一、理解TextView与Paint对象 在深入探讨之前,我们先来了解一下TextView的基本概念以及它与Paint对象的关系。TextView是Android中最常用的用于显示文本的控件之一。而Paint对象则是用来控制文本绘制方式的...

    广告竖直滑动的单TextView效果

    这个效果使得文字能够在TextView中垂直滚动,模拟出广告滚动条的效果,为用户界面增添动态感。下面我们将详细探讨如何实现这种效果。 首先,我们要知道TextView是Android中最基础的文本显示组件,它主要用于显示...

    Android TextView实现垂直滚动效果的方法

    本篇文章将详细讲解如何在Android中实现TextView的垂直滚动效果。 首先,要开启TextView的滚动功能,我们需要在XML布局文件中设置`android:scrollbars`属性。将其值设为`"vertical"`,即可启用垂直滚动条。例如: ...

    TextView自定义各种效果实现

    默认TextView并不支持下划线和删除线,但可以通过自定义View并重写`onDraw()`,在适当位置画出线条来实现。 5. **文字阴影** 自定义TextView的阴影效果,可以通过设置Paint对象的阴影属性,如`setShadowLayer...

    Android 实现TextView上下滚动效果

    在Android开发中,实现TextView的上下滚动效果可以让信息在有限的空间内持续展示,提升用户体验。以下将详细讲解如何实现这一功能。 首先,我们要明白TextView是Android SDK中的一个基础组件,用于显示单行或多行...

    使用TextView实现跑马灯效果

    本教程主要围绕如何在Android中使用`TextView` 实现跑马灯效果展开。首先,我们需要了解`TextView` 的基本属性和设置方法。在XML布局文件中,我们可以这样创建一个`TextView`: ```xml &lt;TextView android:id="@+id...

    TextView上下滚动效果

    这个项目就是针对这样的需求,提供了一个在`Eclipse`环境下开发的`TextView`上下滚动效果的示例。 要实现`TextView`的上下滚动效果,我们可以利用`TextView`的`marquee`属性和`ellipsize`属性。首先,`marquee`属性...

    textview跑马灯效果

    在Android开发中,TextView是用于显示单行或多行文本的视图组件,而"跑马灯效果"(Marquee)是一种特殊的效果,使得...通过这些知识,你就能创建出具有跑马灯效果的TextView,为你的Android应用增添动态的视觉效果。

    实现textView 跑马灯效果

    要实现TextView的跑马灯效果,通常需要结合Android的属性和自定义布局来完成。以下是详细步骤和相关知识点: 1. **设置Ellipsize属性**: TextView有一个名为`ellipsize`的属性,它允许我们在文本过长时添加省略号...

    android TextView 跑马灯效果

    "跑马灯"效果,又称为滚动文字效果,是指当TextView中的文本长度超过控件宽度时,文本会从右向左自动循环滚动,就像跑马灯一样。这个效果在很多场景下都非常实用,比如通知栏消息、应用标题或者广告横幅等。 实现...

    安卓textView相关-androidtextview点击文字收缩效果.rar

    4. 自定义View:如果需要更个性化的动画效果,开发者可能需要继承TextView并重写onDraw方法,通过控制绘制过程来实现动画效果。这需要对绘图有较深入的理解。 在实际应用中,为了确保代码的可读性和可维护性,...

    TextView设置字体格式以及滚动显示效果

    本教程将深入讲解如何设置`TextView`的字体格式以及实现滚动显示效果,让你的应用界面更加丰富和动态。 一、设置字体格式 1. 字体样式:`TextView`默认使用系统字体,但我们可以替换为自定义字体。首先,将字体...

    TextView 实现文字滚动播放效果效果(跑马灯)

    - 为了提升用户体验,可以考虑添加动画效果,比如渐入渐出,使得滚动更自然。 - 长文本的处理,如果文本过长,可能会影响滚动速度,可以考虑截取部分重要信息进行展示。 - 对于复杂的跑马灯需求,可以使用自定义...

Global site tag (gtag.js) - Google Analytics