您的位置:首页 > 移动开发 > Android开发

Android 动画基础重点整理

2014-05-08 08:56 211 查看
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);
}


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



完整代码:https://github.com/shanwu/shanwu_coding_base/tree/transition_drawable_practice/ch16-3
To be Continued...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: