Android實現文字滾動效果_Android

來源:互聯網
上載者:User

Android 實現文字滾動效果,自己寫了個timer小計時器,textview文字上下翻動效果:

public class AutoTextView extends TextSwitcher implements  ViewSwitcher.ViewFactory { private float mHeight; private Context mContext; //mInUp,mOutUp分別構成向下翻頁的進齣動畫 private Rotate3dAnimation mInUp; private Rotate3dAnimation mOutUp;  //mInDown,mOutDown分別構成向下翻頁的進齣動畫 private Rotate3dAnimation mInDown; private Rotate3dAnimation mOutDown;  public AutoTextView(Context context) {  this(context, null);  // TODO Auto-generated constructor stub } public AutoTextView(Context context, AttributeSet attrs) {  super(context, attrs);  // TODO Auto-generated constructor stub  TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.auto3d);  mHeight = a.getDimension(R.styleable.auto3d_textSize, 16);  a.recycle();  mContext = context;  init(); } private void init() {  // TODO Auto-generated method stub  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(800);  rotation.setFillAfter(false);  rotation.setInterpolator(new AccelerateInterpolator());  return rotation; } //這裡返回的TextView,就是我們看到的View @Override public View makeView() {  // TODO Auto-generated method stub  TextView t = new TextView(mContext);  t.setGravity(Gravity.CENTER);  t.setTextSize(16);  t.setMaxLines(1);  t.setTextColor(mContext.getResources().getColor(R.color.textColor));  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){   setOutAnimation(mOutUp);  } }  class Rotate3dAnimation extends Animation {   private final float mFromDegrees;   private final float mToDegrees;   private float mCenterX;   private float mCenterY;   private final boolean mTurnIn;   private final boolean mTurnUp;   private Camera mCamera;   public Rotate3dAnimation(float fromDegrees, float toDegrees, boolean turnIn, boolean turnUp) {    mFromDegrees = fromDegrees;    mToDegrees = toDegrees;    mTurnIn = turnIn;    mTurnUp = turnUp;   }   @Override   public void initialize(int width, int height, int parentWidth, int parentHeight) {    super.initialize(width, height, parentWidth, parentHeight);    mCamera = new Camera();    mCenterY = getHeight() / 2;    mCenterX = getWidth() / 2;   }      @Override   protected void applyTransformation(float interpolatedTime, Transformation t) {    final float fromDegrees = mFromDegrees;    float degrees = fromDegrees + ((mToDegrees - fromDegrees) * interpolatedTime);    final float centerX = mCenterX ;    final float centerY = mCenterY ;    final Camera camera = mCamera;    final int derection = mTurnUp ? 1: -1;    final Matrix matrix = t.getMatrix();    camera.save();    if (mTurnIn) {     camera.translate(0.0f, derection *mCenterY * (interpolatedTime - 1.0f), 0.0f);    } else {     camera.translate(0.0f, derection *mCenterY * (interpolatedTime), 0.0f);    }    camera.rotateX(degrees);    camera.getMatrix(matrix);    camera.restore();    matrix.preTranslate(-centerX, -centerY);    matrix.postTranslate(centerX, centerY);   } }

demo下載連結:http://xiazai.jb51.net/201611/yuanma/AndroidTextView(jb51.net).rar

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援雲棲社區。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.