帧动画_补间动画

来源:互联网 发布:九仙图翅膀进阶数据 编辑:程序博客网 时间:2024/05/21 08:40

帧动画


Frame动画,即顺序播放事先做好的图像,跟放胶片电影类似

XML创建

1.首先在res下创建一个xml  修改根节点为Animation_List

  

<?xml version="1.0" encoding="utf-8"?><animation-list xmlns:android="http://schemas.android.com/apk/res/android">        <item android:drawable="@drawable/a" android:duration="1000"/>        <item android:drawable="@drawable/c" android:duration="1000"/>        <item android:drawable="@drawable/d" android:duration="1000"/>        <item android:drawable="@drawable/e" android:duration="1000"/></animation-list>

2.在ManiActivity中


public class MainActivity extends AppCompatActivity implements View.OnClickListener {    private ImageView mImage;    /**     * 开始     */    private Button mButStart;    /**     * 停止     */    private Button mButStop;    private LinearLayout mActivityMain;    private AnimationDrawable background;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        mImage.setBackgroundResource(R.drawable.frame);        background = (AnimationDrawable) mImage.getBackground();    }    private void initView() {        mImage = (ImageView) findViewById(R.id.image);        mButStart = (Button) findViewById(R.id.butStart);        mButStart.setOnClickListener(this);        mButStop = (Button) findViewById(R.id.butStop);        mButStop.setOnClickListener(this);        mActivityMain = (LinearLayout) findViewById(R.id.activity_main);    }    @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.butStart:                background.start();                break;            case R.id.butStop:                if(background.isRunning()){                    background.stop();                }                break;        }    }}
3还有一些方法.

onShot();是否只播放一次

isRunning()是否正在播放


/****************************动态代码实现**********************************/

public class MainActivity extends AppCompatActivity implements View.OnClickListener {    private ImageView mImage;    /**     * 开始     */    private Button mButStart;    /**     * 停止     */    private Button mButStop;    private AnimationDrawable drawable;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        drawable = new AnimationDrawable();        drawable.addFrame(getResources().getDrawable(R.drawable.a),1000);        drawable.addFrame(getResources().getDrawable(R.drawable.c),1000);        drawable.addFrame(getResources().getDrawable(R.drawable.d),1000);        drawable.addFrame(getResources().getDrawable(R.drawable.e),1000);        drawable.setOneShot(false);        mImage.setBackground(drawable);    }    private void initView() {        mImage = (ImageView) findViewById(R.id.image);        mButStart = (Button) findViewById(R.id.butStart);        mButStart.setOnClickListener(this);        mButStop = (Button) findViewById(R.id.butStop);        mButStop.setOnClickListener(this);    }    @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.butStart:                drawable.start();                break;            case R.id.butStop:                if(drawable.isRunning()){                    drawable.stop();                }                break;        }    }}

补间动画

  Tween动画,通过对View的内容进行一系列的图形变换,(包括平移,缩放,旋转,改变透明度)来实现动画效果.

  动画效果的定义可采用xml或代码编写.

Alpha 淡入淡出效果   Scale缩放效果  Rotate 旋转效果  Translate位移 

XML实现

首先创建一个文件夹R.anim.set  根节点

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="3000">    <alpha android:fromAlpha="1" android:toAlpha="0"/>    <rotate android:fromDegrees="0" android:pivotX="0.5" android:pivotY="0.5" android:toDegrees="360"/>    <scale android:pivotY="0.5" android:pivotX="0.5" android:fromXScale="1" android:fromYScale="1" android:toXScale="2" android:toYScale="2"/>    <translate android:fromXDelta="80%p" android:fromYDelta="80%p" android:toXDelta="0" android:toYDelta="0"/></set>

代码

animation = AnimationUtils.loadAnimation(this, R.anim.set);mImage.startAnimation(animation);
值得一提的是在xml里%代表自身 p代表父控件

至于动态代码实现则是new 参数也是差不多.





















原创粉丝点击