博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ObjectAnimator动画
阅读量:6913 次
发布时间:2019-06-27

本文共 6849 字,大约阅读时间需要 22 分钟。

两个文本动画:

public class TwoTextActivity extends Activity {        private ObjectAnimator mPeekAnimator;        private MoveRunner mPeekRunner = null;        private Handler mHandler = new Handler();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.two_text_activity_main);                startAnimation();    }    private void startAnimation() {       TextView view = (TextView) findViewById(R.id.text);       TextView view2 = (TextView) findViewById(R.id.text2);                mPeekRunner =                new MoveRunner(view, view2,                        36, false);        this.mHandler.postDelayed(this.mPeekRunner, 1000L);    }            class MoveRunner implements Runnable {        private final View mCurrent;        private final View mNext;        private final boolean mWillBeHidden;        private final float mXBy;        MoveRunner(View currentView, View nextView, float xBy, boolean willBeHiden) {            this.mCurrent = currentView;            this.mNext = nextView;            this.mXBy = xBy;            this.mWillBeHidden = willBeHiden;        }        public void run() {            runPeekAnimator(this.mCurrent, this.mNext, this.mXBy, this.mWillBeHidden);        }    }        private void runPeekAnimator(View view, View paramView2, float paramFloat, boolean paramBoolean) {        if (shouldRunPeekAnimator()) {            float f = view.getX();            float[] arrayOfFloat = new float[2];            arrayOfFloat[0] = f;            arrayOfFloat[1] = (f + paramFloat);            mPeekAnimator = ObjectAnimator.ofFloat(view, "x", arrayOfFloat);            mPeekAnimator.setDuration(200L);            mPeekAnimator.addListener(new PeekAnimatorListener(view, paramView2, paramFloat, this.mHandler,                    paramBoolean));            mPeekAnimator.start();        //    this.mFragment.vibrate(200L);        } else {        //    this.mFragment.stopVibrating();        }    }        class PeekAnimatorListener extends SimpleAnimatorListener {        private final View mCurrent;        private final Handler mHandler;        private final View mNext;        private final boolean mWillEndHidden;        private final float mXBy;        public PeekAnimatorListener(View currentView, View nextView, float xBy, Handler handler,                boolean hiden) {            this.mCurrent = currentView;            this.mNext = nextView;            this.mXBy = xBy;            this.mHandler = handler;            this.mWillEndHidden = hiden;        }        public void onAnimationEnd(Animator animator) {            int delay = 0;            if (shouldRunPeekAnimator()) {                Log.d("TwoTextActivity", "mWillEndHidden:" + mWillEndHidden);                if (!this.mWillEndHidden) {                    delay = 100;                    this.mHandler.postDelayed(new MoveRunner(this.mCurrent, this.mNext, -this.mXBy,                            true), delay);                } else {                    delay = 400;                    this.mHandler.postDelayed(new MoveRunner(this.mNext, this.mCurrent, this.mXBy,                            false), delay);                }            }        }    }        private boolean shouldRunPeekAnimator() {        return true;    }}

一个文本动画:

public class OneTextActivity extends Activity {        private ObjectAnimator mPeekAnimator;        private MoveRunner mPeekRunner = null;        private Handler mHandler = new Handler();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.one_text_activity_main);                startAnimation();    }    private void startAnimation() {       TextView view = (TextView) findViewById(R.id.text);//       TextView view2 = (TextView) findViewById(R.id.text2);                mPeekRunner =                new MoveRunner(view, /*view2,*/                        36, false);        this.mHandler.postDelayed(this.mPeekRunner, 1000L);    }            class MoveRunner implements Runnable {        private final View mCurrent;   //     private final View mNext;        private final boolean mWillBeHidden;        private final float mXBy;        MoveRunner(View currentView, /*View nextView,*/ float xBy, boolean willBeHiden) {            this.mCurrent = currentView;    //        this.mNext = nextView;            this.mXBy = xBy;            this.mWillBeHidden = willBeHiden;        }        public void run() {            runPeekAnimator(this.mCurrent, /*this.mNext,*/ this.mXBy, this.mWillBeHidden);        }    }        private void runPeekAnimator(View view, /*View paramView2,*/ float paramFloat, boolean paramBoolean) {        if (shouldRunPeekAnimator()) {            float f = view.getX();            float[] arrayOfFloat = new float[2];            arrayOfFloat[0] = f;            arrayOfFloat[1] = (f + paramFloat);            mPeekAnimator = ObjectAnimator.ofFloat(view, "x", arrayOfFloat);            mPeekAnimator.setDuration(200L);            mPeekAnimator.addListener(new PeekAnimatorListener(view, /*paramView2,*/ paramFloat, this.mHandler,                    paramBoolean));            mPeekAnimator.start();        //    this.mFragment.vibrate(200L);        } else {        //    this.mFragment.stopVibrating();        }    }        class PeekAnimatorListener extends SimpleAnimatorListener {        private final View mCurrent;        private final Handler mHandler;//        private final View mNext;        private boolean mWillEndHidden;        private final float mXBy;        public PeekAnimatorListener(View currentView, /*View nextView,*/ float xBy, Handler handler,                boolean hiden) {            this.mCurrent = currentView;//            this.mNext = nextView;            this.mXBy = xBy;            this.mHandler = handler;            this.mWillEndHidden = hiden;        }        public void onAnimationEnd(Animator animator) {            int delay = 0;            if (shouldRunPeekAnimator()) {                Log.d("OneTextActivity", "mWillEndHidden:" + mWillEndHidden);                if (!this.mWillEndHidden) {                    delay = 100;                    this.mHandler.postDelayed(new MoveRunner(this.mCurrent, /*this.mNext,*/ -this.mXBy,                            true), delay);                } else {                    delay = 400;               //     this.mHandler.postDelayed(new MoveRunner(/*this.mNext,*/ this.mCurrent, this.mXBy,               //             false), delay);                    this.mHandler.postDelayed(new MoveRunner(this.mCurrent, /*this.mNext,*/ -this.mXBy,                            false), delay);                }            }        }    }        private boolean shouldRunPeekAnimator() {        return true;    }}

转载于:https://my.oschina.net/tingzi/blog/530969

你可能感兴趣的文章
winform 计算器二
查看>>
快速开发基于 HTML5 网络拓扑图应用1
查看>>
LUA 表结构的使用
查看>>
动态规划
查看>>
威佐夫博弈
查看>>
前端工程师知识图
查看>>
李俊君保研个人陈述
查看>>
Bash 实例,第 3 部分
查看>>
支持向量机
查看>>
高斯消去、三角分解、追赶法
查看>>
JQuery学习入门之AJAX
查看>>
linux下禁止root远程登陆
查看>>
使用Ninject+Moq在单元测试中抽象数据访问层
查看>>
搭建阿里云博客
查看>>
Xcode证书路径和缓存清理路径
查看>>
在oracle数据库里创建自增ID字段的步骤
查看>>
LC.81. Search in Rotated Sorted Array II
查看>>
使用Jacob操作Wrod文档的工具类代码
查看>>
JavaScript-严格模式
查看>>
将博客搬至CSDN
查看>>