资源简介

实现了公告栏 文字 3D 翻转动画效果,无限循环播放。具有向上 或者向下翻转特效。可自定义文字大小;

资源截图

代码片段和文件信息

package com.ss.autotextview;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Camera;
import android.graphics.Matrix;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.View;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.Animation;
import android.view.animation.Transformation;
import android.widget.TextSwitcher;
import android.widget.TextView;
import android.widget.ViewSwitcher.ViewFactory;

public class AutoTextView extends TextSwitcher implements ViewFactory {

    private float mHeight;
    private Context mContext;
    //mInUpmOutUp分别构成向上翻页的进出动画
    private Rotate3dAnimation mInUp;
    private Rotate3dAnimation mOutUp;

    //mInDownmOutDown分别构成向下翻页的进出动画
    private Rotate3dAnimation mInDown;
    private Rotate3dAnimation mOutDown;

    public AutoTextView(Context context) {
        this(context null);
    }

    public AutoTextView(Context context AttributeSet attrs) {
        super(context attrs);
        TypedArray a = context.obtainstyledAttributes(attrs R.styleable.auto3d);
        mHeight = a.getDimension(R.styleable.auto3d_textSize 36);
        a.recycle();
        mContext = context;
        init();
    }

    private void init() {
        setFactory(this);
        //向上翻页的进出动画
        mInUp = createAnim(-90 0 true true);//进动画
        mOutUp = createAnim(0 90 false true);//出动画
        //向下翻页的进出动画
        mInDown = createAnim(90 0 true false);
        mOutDown = createAnim(0 -90 false false);
        //继承TextSwitcher主要用于文件切换,比如 从文字A 切换到 文字 B,
        //setInAnimation()后,A将执行inAnimation,
        //setOutAnimation()后,B将执行OutAnimation
        setInAnimation(mInUp);
        setOutAnimation(mOutUp);
    }

    //动画
    private Rotate3dAnimation createAnim(float start float end boolean turnIn boolean turnUp) {
        final Rotate3dAnimation rotation = new Rotate3dAnimation(start end turnIn turnUp);
        //设置动画持续时间
        rotation.setDuration(300);
        //fillAfter设为true,则动画执行后,控件将停留在动画结束的状态false 则不停留
        rotation.setFillAfter(false);
        //设置动画的变化速度  加速
        rotation.setInterpolator(new AccelerateInterpolator());
        return rotation;
    }

    //这里返回的TextView,就是我们看到的View
    @Override
    public View makeView() {
        TextView t = new TextView(mContext);
        t.setGravity(Gravity.CENTER);
        t.setTextSize(mHeight);
        t.setSingleLine(true);
        return t;
    }

    //定义动作,向下滚动翻页
    public void previous() {
        if (getInAnimation() != mInDown) {
            setInAnimation(mInDown);
        }
        if (getOutAnimation() != mOutDown) {
            setOutAnimation(mOutDown);
        }
    }

    //定义动作,向上滚动翻页
    public void next() {
        if (getInAnimation() != mInUp) {
            setInAnimation(mInUp);
        }
        if (getOutAnimation() != mOutUp) {
   

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-03-29 14:57  MyApplication\
     文件         127  2017-12-29 13:48  MyApplication\.gitignore
     目录           0  2018-03-29 14:57  MyApplication\autotextview\
     文件           8  2018-03-29 11:27  MyApplication\autotextview\.gitignore
     文件       10459  2018-03-29 14:51  MyApplication\autotextview\autotextview.iml
     文件         614  2018-03-29 13:47  MyApplication\autotextview\build.gradle
     文件         684  2018-03-29 11:27  MyApplication\autotextview\proguard-rules.pro
     目录           0  2018-03-29 14:57  MyApplication\autotextview\src\
     目录           0  2018-03-29 14:57  MyApplication\autotextview\src\main\
     文件         637  2018-03-29 11:27  MyApplication\autotextview\src\main\AndroidManifest.xml
     目录           0  2018-03-29 14:57  MyApplication\autotextview\src\main\java\
     目录           0  2018-03-29 14:57  MyApplication\autotextview\src\main\java\com\
     目录           0  2018-03-29 14:57  MyApplication\autotextview\src\main\java\com\ss\
     目录           0  2018-03-29 14:57  MyApplication\autotextview\src\main\java\com\ss\autotextview\
     文件        5672  2018-03-29 14:44  MyApplication\autotextview\src\main\java\com\ss\autotextview\AutoTextView.java
     文件        3479  2018-03-29 14:14  MyApplication\autotextview\src\main\java\com\ss\autotextview\MainActivity.java
     目录           0  2018-03-29 14:57  MyApplication\autotextview\src\main\res\
     目录           0  2018-03-29 11:27  MyApplication\autotextview\src\main\res\drawable\
     目录           0  2018-03-29 14:57  MyApplication\autotextview\src\main\res\layout\
     文件        1038  2018-03-29 14:56  MyApplication\autotextview\src\main\res\layout\activity_main.xml
     目录           0  2018-03-29 14:57  MyApplication\autotextview\src\main\res\mipmap-xxxhdpi\
     文件       10486  2018-03-29 11:27  MyApplication\autotextview\src\main\res\mipmap-xxxhdpi\ic_launcher.png
     目录           0  2018-03-29 14:57  MyApplication\autotextview\src\main\res\values\
     文件         192  2018-03-29 11:19  MyApplication\autotextview\src\main\res\values\attrs.xml
     文件         214  2018-03-29 11:27  MyApplication\autotextview\src\main\res\values\colors.xml
     文件          78  2018-03-29 11:27  MyApplication\autotextview\src\main\res\values\strings.xml
     文件         394  2018-03-29 11:27  MyApplication\autotextview\src\main\res\values\styles.xml
     文件         521  2017-12-29 13:48  MyApplication\build.gradle
     目录           0  2018-03-29 14:57  MyApplication\gradle\
     目录           0  2018-03-29 14:57  MyApplication\gradle\wrapper\
     文件       53636  2017-12-29 13:48  MyApplication\gradle\wrapper\gradle-wrapper.jar
............此处省略8个文件信息

评论

共有 条评论