精华内容
下载资源
问答
  • 解压密码:RJ4587 今天要分享一款基于纯CSS3实现的鼠标滑过按钮动画,一共5组动画风格。和之前分享的CSS3按钮发光动画相比,这款按钮动画更为质地,而且也更实用。这5款风格的按钮动画,发光的特效,也3D...
  • 剪纸风格的年年余喜庆flash动画素材 剪纸风格的年年余喜庆flash动画素材
  • 打造极致Material Design动画风格Button

    万次阅读 多人点赞 2015-01-07 09:15:40
    曾经两篇关于Material Design风格的按钮实现。在第一章中只是简单的实现了...在这一章中将带你打造一个极致的Material Design动画风格Button;至少在我看来与官方的相当接近了。而且可以用到任意控件上面,欢迎品尝~~

    ========================================================
    作者:qiujuer
    博客:blog.csdn.net/qiujuer
    网站:www.qiujuer.net
    开源库:Genius-Android
    转载请注明出处:http://blog.csdn.net/qiujuer/article/details/42471119

    ——学之开源,用于开源;初学者的心态,与君共勉!
    ========================================================

    在我的文章中曾经有两篇关于Material Design风格的按钮实现。在第一章中只是简单的实现了动画的波纹效果,而在第二篇中对此进行了一定的扩充与优化,最后实现可以自动移动到中心位置的动画;虽然两者都可用,但是在我的使用中却发现了一定的问题,如有些位置点击会出现波纹速度的运算上的问题。

    在这一章中将带你打造一个极致的Material Design动画风格Button;至少在我看来与官方的相当接近了。

    效果

    个人


    官方


    可以看出其基本上差不多了。

    分析

    首先我们来解析一下官方的:


    在这里我截取了最后一个按钮相应的连续几张图片的情况,从图片我们可以看出以下情况:

    • 官方也是采用圆形水波,非圆角矩形水波(这个与我最开始所想不太一样)
    • 其扩散速度逐渐递减,圆心的时候基本一闪就过
    • 圆形波纹颜色一直没有变化
    • 控件按钮整体背景色逐渐加深
    • 点击位置在右下角,但是从扩散情况来看其水波圆心逐渐向按钮控件中心靠拢
    • 这些也就是我们需要实现的部分。

    实现原理

    我们第二张中的按钮之所以有很大的差距我总结出以下几点:

    1. 中心靠拢的速度控制上不对
    2. 整体的减速 Interpolator 类设置不对,虽然同样是减速,但是可以看出官方的起步很快,而后递减很慢,这个可以通过初始化的时候传入 Interpolator 参数解决
    3. 水波颜色控制不对,颜色应该不变化,变化的是背景色的颜色
    4. 没有背景色变化的过程,这个过程需要添加,同时这里有一个细节,其最后的颜色并没有加到最深,大约相当于波纹颜色的80%左右
    5. 没有考虑圆角情况,在第二章中如果控件是圆角,其波纹将会超出圆角而后消失。

    代码

    不知道你们在做的过程中是否想过,我们的动画是在用户点击 onTouch() 的基础上不断的刷新触发 onDraw() 然后绘制来的,与一个按钮的结合点也就是这么两个地方,最多为了方便我们结合的地方还有一个 onMeasure() .所以我们能得出这样一个类:

    Class

    public class TouchEffectAnimator {
    
    
        public TouchEffectAnimator(View mView) {
    
        }
    
        public void onMeasure() {
    
        }
    
        public void onTouchEvent(final MotionEvent event) {
    
        }
    
        public void onDraw(final Canvas canvas) {
    
        }
    
        private void startAnimation() {
      
        }
    
        private void cancelAnimation() {
    
        }
    
        private void fadeOutEffect() {
        
        }
    }
    一个类,这个类作用于一个控件,所以我们需要传入一个 View.

    然后我们提供一个 onMeasure() 方法用于初始化高度宽度等数据;onTouchEvent() 当然是用来在控件中触发点击事件所用的;onDraw() 这个无需说也是控件中调用,用来绘制所用;一个动画当然需要启动方法和取消方法,当然在波纹动画后我们还需要的是 "淡出" 的动画。

    而后我们想想,其是我们需要的动画类型无非就是那么几种,我们何不合在一起呢?

    枚举

    public enum TouchEffect {
        Move,
        Ease,
        Ripple,
        None
    }
    在这个枚举中分别代表: 一边扩散一边移动到中心,无波纹只有淡入淡出,纯扩散不移动的类型,没有动画的类型

    下面我们来看看主类中的变量情况。

    静态变量

        private static final Interpolator DECELERATE_INTERPOLATOR = new DecelerateInterpolator(2.8f);
        private static final Interpolator ACCELERATE_INTERPOLATOR = new AccelerateInterpolator();
        private static final int EASE_ANIM_DURATION = 200;
        private static final int RIPPLE_ANIM_DURATION = 300;
        private static final int MAX_RIPPLE_ALPHA = (int) (255 * 0.8);
    分别是:动画减速、加速效果;淡入淡出默认时间200毫秒,扩散时间默认300毫秒,最大的透明度为255的80%用于淡入淡出。主色为255 100%。

    在这里,减速效果中之所有一个2.8,其主要作用是使扩散效果在初期尽量的快 (起到隐藏小圆圈),而后期尽量的慢(增强触摸感觉)

    必须变量

        private View mView;
        private int mClipRadius;
        private int mAnimDuration = RIPPLE_ANIM_DURATION;
        private TouchEffect mTouchEffect = TouchEffect.Move;
        private Animation mAnimation = null;
    一个View,一个圆角弧度,一个动画时间,一个动画类型,最后一个动画类(在这里没有使用属性动画,而是准备采用最基本的动画,采用回调来直接设置参数)

    圆形半径变量

        private float mMaxRadius;
        private float mRadius;
    一个最大半径,一个当前半径;之所以有最大半径,在我看来有多种情况:如果是移动模式那么其最大半径扫过地区域能达到最长边的75%就行了;如果是纯扩散,如果用户点击的是最右下角,那么其扫过区域最好能达到其对角的长度;更具勾股定理可以得出其为最长边的1.25倍。

    坐标变量

        private float mDownX, mDownY;
        private float mCenterX, mCenterY;
        private float mPaintX, mPaintY;
    点击坐标,中心坐标,当前圆心坐标

    画笔变量

        private Paint mPaint = new Paint();
        private RectF mRectRectR = new RectF();
        private Path mRectPath = new Path();
        private int mRectAlpha = 0;
    一只画笔,一个区域,一个区域所生成的Path路径,一个区域透明度

    淡出控制变量

        private boolean isTouchReleased = false;
        private boolean isAnimatingFadeIn = false;
    这两个变量主要用于控制淡出动画触发的时机,我们可以这么想:

    在用户一直按着控件的时候就算扩散动画完成了也不进行淡出动画,该动画在用户释放时触发;如果用户点击后立刻抬起那么在抬起时肯定不能触发淡出动画,要等到扩散动画完成后才触发;所以一个变量是是否释放按钮,另外一个是是否动画结束。

    动画监听

        private Animation.AnimationListener mAnimationListener = new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {
                isAnimatingFadeIn = true;
            }
    
            @Override
            public void onAnimationEnd(Animation animation) {
                isAnimatingFadeIn = false;
                // Is un touch auto fadeOutEffect()
                if (isTouchReleased) fadeOutEffect();
            }
    
            @Override
            public void onAnimationRepeat(Animation animation) {
            }
        };
    上面刚刚说了,控制其释放触发淡出动画,那么这里这个监听器就是用来监听其开始动画状态的,结束后调整值,如果此时用户释放了按钮则触发淡出效果。OK,继续!

    初始化

        public TouchEffectAnimator(View mView) {
            this.mView = mView;
            onMeasure();
        }
    
        public void onMeasure() {
            mCenterX = mView.getWidth() / 2;
            mCenterY = mView.getHeight() / 2;
    
            mRectRectR.set(0, 0, mView.getWidth(), mView.getHeight());
    
            mRectPath.reset();
            mRectPath.addRoundRect(mRectRectR, mClipRadius, mClipRadius, Path.Direction.CW);
        }
    在控件触发 onMeasure() 方法的时候回调该类的 onMeasure() 方法,在该方法中我们得出其中心坐标,初始化一个长方形区域,然后根据区域与圆角半径初始化一个Path路径。

    参数设置

        public void setAnimDuration(int animDuration) {
            this.mAnimDuration = animDuration;
        }
    
        public TouchEffect getTouchEffect() {
            return mTouchEffect;
        }
    
        public void setTouchEffect(TouchEffect touchEffect) {
            mTouchEffect = touchEffect;
            if (mTouchEffect == TouchEffect.Ease)
                mAnimDuration = EASE_ANIM_DURATION;
        }
    
        public void setEffectColor(int effectColor) {
            mPaint.setColor(effectColor);
        }
    
        public void setClipRadius(int mClipRadius) {
            this.mClipRadius = mClipRadius;
        }
    既然上面有那么多的变量,那么这里提供了一些方法用于初始化使用,分别是:

    动画时间,获取动画类型,设置动画类型,设置颜色,设置控件的圆角弧度。

    动画部分

        private void startAnimation() {
            Animation animation = new Animation() {
                @Override
                protected void applyTransformation(float interpolatedTime, Transformation t) {
                    if (mTouchEffect == TouchEffect.Move) {
                        mRadius = mMaxRadius * interpolatedTime;
                        mPaintX = mDownX + (mCenterX - mDownX) * interpolatedTime;
                        mPaintY = mDownY + (mCenterY - mDownY) * interpolatedTime;
                    } else if (mTouchEffect == TouchEffect.Ripple) {
                        mRadius = mMaxRadius * interpolatedTime;
                    }
    
                    mRectAlpha = (int) (interpolatedTime * MAX_RIPPLE_ALPHA);
                    mView.invalidate();
                }
            };
            animation.setInterpolator(DECELERATE_INTERPOLATOR);
            animation.setDuration(mAnimDuration);
            animation.setAnimationListener(mAnimationListener);
            mView.startAnimation(animation);
        }
    
        private void cancelAnimation() {
            if (mAnimation != null) {
                mAnimation.cancel();
                mAnimation.setAnimationListener(null);
            }
        }
    
        private void fadeOutEffect() {
            Animation animation = new Animation() {
                @Override
                protected void applyTransformation(float interpolatedTime, Transformation t) {
                    mRectAlpha = (int) (MAX_RIPPLE_ALPHA - (MAX_RIPPLE_ALPHA * interpolatedTime));
                    mView.invalidate();
                }
            };
            animation.setInterpolator(ACCELERATE_INTERPOLATOR);
            animation.setDuration(EASE_ANIM_DURATION);
            mView.startAnimation(animation);
        }

    • 三个方法中,取消最简单了,调用时判断,然后取消,并把监听器设置为 null.
    • 淡出动画中:我们在其方法回调中设置我们的透明度为递减的形式,从最大递减到最小;每次都刷新一次界面;后面是设置其时间,动画为先慢然后一下变快消失掉,然后启动动画。
    • 在开始动画方法中:我们同样在回调中除了我们的变量数据;在这里我们需要判断,如果是普通扩散,那么我们就扩散到对应的半径就OK,如果是Move 类型我们则需要变化其坐标。其公式为 C = A+(B-A)*T;而后设置透明度逐渐增加到最大,该透明度是用于全部区域非圆形区域。


    触发方法

        public void onTouchEvent(final MotionEvent event) {
    
            if (event.getActionMasked() == MotionEvent.ACTION_CANCEL) {
                isTouchReleased = true;
                if (!isAnimatingFadeIn) {
                    fadeOutEffect();
                }
            }
            if (event.getActionMasked() == MotionEvent.ACTION_UP) {
                isTouchReleased = true;
                if (!isAnimatingFadeIn) {
                    fadeOutEffect();
                }
            } else if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
                // Gets the bigger value (width or height) to fit the circle
                mMaxRadius = mCenterX > mCenterY ? mCenterX : mCenterY;
                // This circle radius is 75% or fill all
                if (mTouchEffect == TouchEffect.Move)
                    mMaxRadius *= 0.75;
                else
                    mMaxRadius *= 2.5;
    
                // Set default operation to fadeOutEffect()
                isTouchReleased = false;
                isAnimatingFadeIn = true;
    
                // Set this start point
                mPaintX = mDownX = event.getX();
                mPaintY = mDownY = event.getY();
    
                // This color alpha
                mRectAlpha = 0;
    
                // Cancel and Start new animation
                cancelAnimation();
                startAnimation();
            }
        }
    在触发方法中,我们分别需要判断是:取消/抬起/按下 操作。

    1. 在取消和抬起操作中 我们都进行了:变化按钮状态变量 isTouchReleased 为释放,而后判断是否结束动画,如果结束则触发淡出动画
    2. 按下操作:计算出最长半径,其中 0.75 代表上面说的:75%;2.5代表的是上面说的 1.25倍,这里因为是一半,所以乘2 了;其是这一部分应该放在 onMeasure() 方法中。
    3. 而后我们设置 释放按钮变量 isTouchReleased 为 false,设置动画开始 isAnimatingFadeIn 为 true。得到点击坐标,设置透明度为0,然后进行一次取消,然后开始动画


    onDraw()

        public void onDraw(final Canvas canvas) {
            // Draw Area
            mPaint.setAlpha(mRectAlpha);
            canvas.drawPath(mRectPath, mPaint);
    
            // Draw Ripple
            if (isAnimatingFadeIn && (mTouchEffect == TouchEffect.Move
                    || mTouchEffect == TouchEffect.Ripple)) {
                // Canvas Clip
                canvas.clipPath(mRectPath);
                mPaint.setAlpha(MAX_RIPPLE_ALPHA);
                canvas.drawCircle(mPaintX, mPaintY, mRadius, mPaint);
            }
        }
    这个方法是最后一个方法,也是较核心的一个地方,我们的成果就靠这个方法了。

    首先当然是画出背景部分,在画之前当然就是设置背景色;该背景色是一个随动画时间变化的量,具体详见上面动画部分。

    然后判断是否是启动动画,因为淡出时也会触发该方法但是却不绘制圆形区域部分,所以需要判断;之后判断是否是属于需要绘制圆形的动画类型;再然后就是绘制具体的圆形区域了,分别就是坐标和半径;但是这里需要注意的是,在绘制前我们调用了 canvas.clipPath(mRectPath); 。

    canvas.clipPath(mRectPath):这个的作用就是剪切,意思是剪切画布部分,然后在剪切后的画布上绘制;这样就解决了圆角时溢出的问题,因为剪切后的画布就那么大你就算画到外部也是无法显示的。

    使用

    public class GeniusButton extends Button implements Attributes.AttributeChangeListener {
        private TouchEffectAnimator touchEffectAnimator = null;
    
        public void setTouchEffect(TouchEffect touchEffect) {
            if (touchEffect == TouchEffect.None)
                touchEffectAnimator = null;
            else {
                if (touchEffectAnimator == null) {
                    touchEffectAnimator = new TouchEffectAnimator(this);
                    touchEffectAnimator.setTouchEffect(touchEffect);
                    touchEffectAnimator.setEffectColor("this color");
                    touchEffectAnimator.setClipRadius(20);
                }
            }
        }
    
        @Override
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    
            if (touchEffectAnimator != null)
                touchEffectAnimator.onMeasure();
        }
    
        @Override
        protected void onDraw(Canvas canvas) {
            if (touchEffectAnimator != null)
                touchEffectAnimator.onDraw(canvas);
            super.onDraw(canvas);
        }
    
        @Override
        public boolean onTouchEvent(MotionEvent event) {
            if (touchEffectAnimator != null)
                touchEffectAnimator.onTouchEvent(event);
            return super.onTouchEvent(event);
        }
    }
    在你自定义的控件中按着上面的方式进行实例化调用就OK。
    其实现在来说该动画类,并不局限于Button,你可以随意的设置到你的控件上面,如TextView 也可以不是自定义的控件,Android 原生的也可以;只需要设置其中的3个方法回调也就OK;大家可以试试;然后把效果分别切换一下;个人感觉很棒的~

    附件

    算是分析完了,下面附上源码和我分析时画的一些图,辅助解释。






    代码

    点击查看


    ==============更新分割线========================================

    更新日期:2015-01-10

    今天在二次看代码并优化的时候发现一个错误的地方,在此修正一下;对于给大家带来的不便还请谅解;不过也不影响大局的。

    就是在上面中,Ripple 扩散模式下的一个关于其最大半径的运算上的问题。

                if (mTouchEffect == TouchEffect.Move)
                    mMaxRadius *= 0.75;
                else
                    mMaxRadius *= 2.5;

    在这里犯了一个数学的错误以及一个体验上的不够细腻的地方

    • 首先说说不够细腻的地方,在上面中关于其最大半径,在上面我说了是直接采用控件的对角线进行获取其最大半径;这里其是不应该采用对角线;因为用户通常情况下不会点击最边缘的地方,而是靠中60%左右区域;所以如果其最大半径取对角线将会有很大的浪费;应该根据具体的点击情况;判断出位置算出其距离最远的点;然后算出其半径。
    • 然后就是数学上的错误,在这里我采用的 2.5倍;也解释了就是1.25*2得来;而1.25是勾三股四玄五中,得出的玄五是股四的1.25倍;但是其实一个按钮控件常常并不是满足这样的特殊情况;而我以偏概全的方式采用了1.25倍来计算;其是应该是(A的平方+B的平方)然后开根号 得到C值


    如上图,定点(A B C D)中心点 E(CX,CY)点击区域(F G H I)点击点(DX,DY)

    实际操作中,我们需求判断出距离点击位置最远的定点(A B C D)中的哪一个;所以有了下面的 X Y 值的获取,X Y 就是最远点,然后根据下面公式计算两点之间的距离。

    更改后的代码为:

                    case Ripple:
                        float x = mDownX < mCenterX ? 2 * mCenterX : 0;
                        float y = mDownY < mCenterY ? 2 * mCenterY : 0;
                        mEndRadius = (float) Math.sqrt((x - mDownX) * (x - mDownX) + (y - mDownY) * (y - mDownY));
                        break;
    其中: mEndRadius 就是上面的  mMaxRadius ,只不过在最新代码中有开始与结束半径两个值。

    要说细腻,其是上面还没有考虑圆角的情况,但是一般来说圆角对此的影响也不是很大了,没有必要为了那么点去耗时计算;对于实际使用来说上面已经足够了。

    ========================================================
    作者:qiujuer
    博客:blog.csdn.net/qiujuer
    网站:www.qiujuer.net
    开源库:Genius-Android
    转载请注明出处:http://blog.csdn.net/qiujuer/article/details/42471119

    ——学之开源,用于开源;初学者的心态,与君共勉!
    ========================================================

    展开全文
  • 梦幻风格科普PPT动画

    2021-09-02 19:37:19
    梦幻风格科普PPT动画
  • 影视动画风格国庆主题ppt模板.ppt
  • 风格的过渡动画效果

    2021-04-05 05:42:35
    作者toddway,源码MaterialTransitions,MaterialTransitions Material 风格的过渡动画效果,Android material风格activity切换过渡平移动画效果。
  • 包涵60个动画风格的人物模型和不同风格的皮肤,直升飞机,坦克,汽车等所有卡通风格枪战类游戏中说包含的元素
  • 圣旨风格卷轴动画

    2013-03-16 11:41:24
    一个非常好的动画ppt,圣旨风格的,可以用来展示图片文字的。用过之后还想用。
  • flash中国风格动画fla源文件 荷韵
  • 宫崎骏动画风格 && 美日动漫差异

    千次阅读 2016-11-27 15:40:20
    一,宫崎骏动画风格和特色(1)题材广泛、不拘形式这一点从宫崎骏的各部动画中很容易看出,他没有题材相似的两部动画,只是表达的主题相似而已。(2)作品并不单纯停留在对于故事本身的构建上,而是严肃地塑造着极...

    一,宫崎骏动画的风格和特色

    (1)题材广泛、不拘形式

    这一点从宫崎骏的各部动画中很容易看出,他没有题材相似的两部动画,只是表达的主题相似而已。

    (2)作品并不单纯停留在对于故事本身的构建上,而是严肃地塑造着极具现实针对性和意义的动画与生活相结合的形象,意境深远.。

    宫崎峻的每部作品,题材虽然不同,但却将梦想、和平、环保、生存、成长这些令人反思的讯息融合其中。例如《千与千寻》这部影片。影片主要讲述的是一个十岁女孩千寻的心路成长的故事。千寻一家在幻境里迷路了,千寻的父母因为贪婪变成了猪,千寻孤独地留在幻境里。支配城镇的魔女强行改掉了千寻的名字,这更让她感觉到自我丧失的恐怖。千寻在精灵汇集的温泉拼命工作,激发出身体里全部的潜能,历经磨难。最终成长为一个敢于面对困难的勇敢女孩。宫崎骏营造的幻境世界与现实世界只有一个隧道的距离,神仙们的生活也与我们生活的俗世没有多大区别,同样的有善恶,有贪欲,有情感,有森严的等级,也有游戏规则,与其说那是神仙境地,还不如说就是现实社会的熔炉。 虚幻世界中的神仙们需要清洗的是身体,而现实世界中的我们需要洗涤的是心灵,也许我们每个人都是自然而又真实的“千寻”,都可以在这面镜子中看到自己。

    (3)对于人类善的本性的揭示,对于人类之爱,人与自然之爱的描述和刻画。

    宫崎骏动画中对于人性的描写以及对人与人、人与自然之爱的刻画让人在脱离了思考的状态下进行着思考,让我们体会着很多属于人本真应该有的道德和心灵。《幽灵公主》、《千与千寻》、《哈尔的移动城堡》等反映出了爱情力量的伟大,但这种爱又绝非单纯卿卿我我的二人世界,他们的爱都背负着沉重的使命。千寻和白龙之间的爱,是一种挣脱被利用的束缚下的一种抗争,他们的爱很大程度上带有东方传统的“滴水之恩,当以涌泉相报”的感觉。《龙猫》和《萤火虫之墓》则典型地体现出了亲情在人的命运当中特殊的地位和影响。

    二,美日动漫的差异

    (1)造型方面

    日本动画追求唯美完美无缺,男主角的大部分都是身材魁梧高大,很帅;女主角则一头长发,瓜子脸,极度夸张的一双大眼睛和同样极度夸张的一个小鼻子,身材非常好。而在美国动画中,人物不算美形,人物造型都比较简单,人物比例不正确..比较夸张。通常会采取1:9的比例,男女主角的身材相貌不追求日本动画片那样的完美无缺,但是身材和相貌更接近角色,也更接近现实中的人们。也可能这样做的话,人们看完动画片之后就不会有什么自卑感了。

    (2)人物设计方面

    日本多以突出团体为主,而美国的动画则常充当救世主的角色,例如:男女超人,蜘蛛侠,蝙蝠侠,地球女神,兰博之类的

    (3)动作风格方面

    与美国动画相比,日本动画在动作的连续性和流畅感方面明显处于劣势,日本动作偏硬,而美国动作偏软,美国表现动作是为了表现动作,而日本表现动作则是为了表现剧情,不过这也促成了日本动画能够在画面上有超越动作神态本身的更佳表现,因此,对内心世界的刻意描摹,是日本动画的一大特色,也是我们区分它与美国动画的主要标志之一。

    (4)场景方面

    日本画得非常仔细,绘画非常细腻。而美国方面较日本动画没那么细致入微,不过,对于情节要求来说这已经足够了。

    (5)选材方面

    日本属于现实主义,选材贴近生活,内容多元化,在取向方面更多的是关注人类。而美国则是拿来主义,选材具有广泛性,思想超前,有广大的观看群众,不过内容不多元化,题材单一。

    (6)叙述结构方面

    日本属于小说型,多以系列片为主,故事是联系在一起的具有很强的剧情性。而美国方面则是属于戏剧型,故事多是独立的,是片段型的,相互之间不具有联系性,不过很搞笑。

    (7)制作方面

    从日本来看,基本上都是采用二维制作,成本较低,多以电视动画为主。而美国则多是三维的,比较有艺术性,它和电影胶片的帧数是一样的,一个动作就是24帧从不偷懒 所以成本也就比较高 也多以影院动画为主。

    展开全文
  • iOS Material Design 风格动画
  • 资源包含520套 游戏动画序列帧
  • ios系统风格动态片头动画,顺滑UI风格,系统动画效果展示ppt模板。
  • 中国古典水墨风格flash引导页动画特效
  • 简单线条绘画,线条动画ppt模板,欧美风格简单线条动画ppt动画模板。
  • 该资源为霓虹风格的CSS加载图标动画。添加了鼠标悬浮效果。动画方面主要采用了关键帧的动画方式。
  • 一行代码创建风格动画图表,Python’s One Liner graph creation library with animations Hans Rosling Style。
  • 该源码案例是线状和柱子风格动画效果,源码UUChartView,UUChartView提供线状和柱子两种风格动画表格。表格实用方便,支持不同颜色的线条和柱状区分,自定义的xy轴等等。适用于简易数据的展示。
  • 直接用PPT动画效果做出来爸爸去哪的视频动画效果 非常的炫和好用。直接用PPT动画效果做出来爸爸去哪的视频动画效果 非常的炫和好用。
  • 这是一套水墨风格开场PPT动画 ,第一PPT模板网提供幻灯片动画免费下载; PPT模板是动态模板,首页用白色作为PPT背景,用水墨,笔,墨迹作为PPT背景图片,中国风风格浓厚;本套PPT模板适合制作中国风PowerPoint开场...
  • 这是一套水墨风格开场PPT动画 ,第一PPT模板网提供幻灯片动画免费下载; PPT模板是动态模板,首页用白色作为PPT背景,用水墨,笔,墨迹作为PPT背景图片,中国风风格浓厚;本套PPT模板适合制作中国风PowerPoint开场...
  • Material 风格动画圆形按钮.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
  • MaterialTransitions Material 风格的过渡动画效果.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
  • material design风格的menu动画.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
  • 在制作ppt时会用到各种各样的动画效果,今天就介绍在PPT中怎么设置浮入动画效果的方法
  • 素描风格动画PPT模板

    2013-07-22 15:27:16
    素描风格 单色画面 连续动画,好像真实动笔绘画
  • 日食风格的flash进度条动画,日食进度条,Flash Loading,当整个Flash加载完的时候,日头就被整体遮掩了,也就是完全日食了,期间会显示日食的百分比,也就是影片的加载进度比,挺创意的,Flash源文件也比较完整,...
  • 具有视觉感的极简线条创意动画,创战纪风格ppt,创战纪风格简约线条创意动画ppt模板。
  • 中日影视动画美术风格比较研究.docx

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 68,485
精华内容 27,394
关键字:

动画的风格有哪些