Android 动画基础重点整理

Ref:Android应用程式开发实战(第三版)


Android系统提供2D絵图库(自Drawable包取得)和OpenGLES 1.0 高性能 3D絵图

(自KhronosOpenGL ES包及其它絵图相关取得)。


2D絵图和动画

主要在 android.graphics.drawable android.view.animation 有相关的类可以絵制

二维图和创作二维空间动画。


实现2D絵图和动画的方法

一、将图或动画絵制到ImageView上。此种方式只是将静态图放进图像显示控件。

二、直接在Canvas上絵制。如此便可控制动画,定期去重复絵制本身图形。


Drawable-任何可絵图东西的抽象类

目前已有许多实现子类,如:BitmapDrawable,ShapeDrawable, PictureDrawable等等。

定义和实现一个Drawable有三种方法:

一、图像储存在Project的资源。 (将图像放到/res/drawable下)

  一般我们常在JAVA代码中用到的

mImageView.setImageResource(R.drawable.xxx);

  又或是 xml布局中用到的

<ImageView
    android:height=”wrap_content”
    android:width=”wrap_content”
    android:src=”@drawable/xxx”/>


二、使用xml档案定义Drawable属性。

可定义成xml的 Drawable 子类

以 TransitionDrawable为例:

fade_practice.xml:

<transition xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/ic_launcher" />
    <item android:drawable="@drawable/fa" />
</transition>

在 MainActivity.java 中使用该 xml 的相关代码:

        // 利用 xml <transition> 定义好的
        tran = (TransitionDrawable) getResources().getDrawable(R.drawable.fade_practice);
        ImageView1.setImageDrawable(tran);
        mCurrentPic = getResources().getDrawable(R.drawable.fa);
        tran.startTransition(2000);


当然我们也可以用动态的方式去实现一样的效果:

 @Override
    public void onClick(View v) {
        mPreviousPic = mCurrentPic;
        int id = v.getId();
        if (id == R.id.imageButton1) {
            mCurrentPic = getResources().getDrawable(R.drawable.fa);
        } else if (id == R.id.imageButton2) {
            mCurrentPic = getResources().getDrawable(R.drawable.xadf);
        } else if (id == R.id.imageButton3) {
            mCurrentPic = getResources().getDrawable(R.drawable.xxx);
        }

        //动态的判断加入 Drawable数组
        tran = new TransitionDrawable(new Drawable[]{mPreviousPic,mCurrentPic});
        tran.startTransition(2000);
        ImageView1.setImageDrawable(tran);
    }


三、DrawableConstructor

    也就是上面提到的,使用动态的实现方式


完整代码:https://github.com/shanwu/shanwu_coding_base/tree/transition_drawable_practice/ch16-3

To be Continued...


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值