一、图片的访问
1)可以通过在xml文件src指定,也可以在代码中,使用ImageView对象调用setImageResource(int id)来指定。2)使用Bitmap和BitmapFactory来得到sdcard保存的图片。(向sdcard保存内容,使用adb push/pull 来实现文件的导入/出,也可借用ddms)。
二、动画
可以分为两种实现方式:Tween动画和Frame动画。
Tween动画:也可说是渐变动画,它包含四种实现效果(Alpha透明、Scale大小、Rotate旋转、Translate移动)。animation是一个抽象类,其余四个都是继承于它。代码实现:定义所要实现的动画效果,设置动画持续时间,调用ImageView对象的startAnimation()方法开始动画。
- 例:ImageView image = (ImageView)findviewbyid(r.anim.girl);
- <div style="text-align: justify;"> Animation translate = new TranslateAnimation(10, 100, 10,100); </div><div style="text-align: justify;"> translate.setDuration(3000);</div><div style="text-align: justify;"> image.startAnimation(translate);</div>
xml中定义: 需要res/anim下定义配置文件,然后在代码中使用animationutils.loadanimation()方法来载入指定的动画效果。
- 例:<?xml version="1.0" encoding="utf-8"?>
- <set xmlns:Android="http://schemas.android.com/apk/res/android"
- android:interpolator="@[package:]anim/interpolator_resource"
- android:shareInterpolator=["true" | "false"] >
- <alpha
- android:fromAlpha="float"
- android:toAlpha="float" />
- <scale
- android:fromXScale="float"
- android:toXScale="float"
- android:fromYScale="float"
- android:toYScale="float"
- android:pivotX="float"
- android:pivotY="float" />
- <translate
- android:fromX="float"
- android:toX="float"
- android:fromY="float"
- android:toY="float" />
- <rotate
- android:fromDegrees="float"
- android:toDegrees="float"
- android:pivotX="float"
- android:pivotY="float" />
- <set>
- ...
- </set>
- </set>
- Animation alpha = AnimationUtils.loadAnimation(MainActivity.this, R.anim.alpha);
- alpha.setDuration(3000);
- image.startAnimation(alpha);
| 属性[类型] | 功能 | 备注 | | Duration[long] | 属性为动画持续时间 | 时间以毫秒为单位 | | fillAfter [boolean] | 当设置为true ,该动画转化在动画结束后被应用 | | fillBefore[boolean] | 当设置为true ,该动画转化在动画开始前被应用 | | interpolator | 指定一个动画的插入器 | 有一些常见的插入器 accelerate_decelerate_interpolator 加速-减速 动画插入器 accelerate_interpolator 加速-动画插入器 decelerate_interpolator 减速- 动画插入器 其他的属于特定的动画效果 | | repeatCount[int] | 动画的重复次数 | | | RepeatMode[int] | 定义重复的行为 | 1:重新开始 2:plays backward | | startOffset[long] | 动画之间的时间间隔,从上次动画停多少时间开始执行下个动画 | | zAdjustment[int] | 定义动画的Z Order的改变 | 0:保持Z Order不变 1:保持在最上层 -1:保持在最下层 |
| 表二 | | XML节点 | 功能说明 | | alpha | 渐变透明度动画效果 | <alpha android:fromAlpha=”0.1″ android:toAlpha=”1.0″ android:duration=”3000″ /> | | fromAlpha | 属性为动画起始时透明度 | 0.0表示完全透明 1.0表示完全不透明 以上值取0.0-1.0之间的float数据类型的数字duration为动画持续时间,ms单位 | toAlpha | 属性为动画结束时透明度 |
| 表三 | | scale | 渐变尺寸伸缩动画效果 | <scale android:interpolator= “@android:anim/accelerate_decelerate_interpolator” android:fromXScale=”0.0″ android:toXScale=”1.4″ android:fromYScale=”0.0″ android:toYScale=”1.4″ android:pivotX=”50%” android:pivotY=”50%” android:fillAfter=”false” android:startOffset=“700” android:duration=”700″ android:repeatCount=”10″ /> | | fromXScale[float] fromYScale[float] | 为动画起始时,X、Y坐标上的伸缩尺寸 | 0.0表示收缩到没有 1.0表示正常无伸缩 值小于1.0表示收缩 值大于1.0表示放大 | toXScale [float] toYScale[float] | 为动画结束时,X、Y坐标上的伸缩尺寸 | pivotX[float] pivotY[float] | 为动画相对于物件的X、Y坐标的开始位置 | 属性值说明:从0%-100%中取值,50%为物件的X或Y方向坐标上的中点位置 | | | | | |
| 表四 | | translate | 画面转换位置移动动画效果 | <translate android:fromXDelta=”30″ android:toXDelta=”-80″ android:fromYDelta=”30″ android:toYDelta=”300″ android:duration=”2000″ /> | fromXDelta toXDelta | 为动画、结束起始时 X坐标上的位置 | | fromYDelta toYDelta | 为动画、结束起始时 Y坐标上的位置 | | | | | | |
| 表五 | | rotate | 画面转移旋转动画效果 | <rotate android:interpolator=”@android:anim/accelerate_decelerate_interpolator” android:fromDegrees=”0″ android:toDegrees=”+350″ android:pivotX=”50%” android:pivotY=”50%” android:duration=”3000″ /> | | fromDegrees | 为动画起始时物件的角度 | 说明 当角度为负数——表示逆时针旋转 当角度为正数——表示顺时针旋转 (负数from——to正数:顺时针旋转) (负数from——to负数:逆时针旋转) (正数from——to正数:顺时针旋转) (正数from——to负数:逆时针旋转) | | toDegrees | 属性为动画结束时物件旋转的角度 可以大于360度 | pivotX pivotY | 为动画相对于物件的X、Y坐标的开始位 | 说明:以上两个属性值 从0%-100%中取值 50%为物件的X或Y方向坐标上的中点位置 |
|
Frame动画:也成为是逐帧动画,它只需在res/anim下定义一个配置文件,需要有一个<animation-list>根元素和若干个<item>子元素组成,在代码中将其定义为imageview对象的背景,然后借助animationdrawable对象来实现动画。
- 例:<?xml version="1.0" encoding="utf-8"?>
- <animation-list xmlns:android="http://schemas.android.com/apk/res/android"
- android:oneshot="false">
- <item android:drawable="@drawable/rocket_thrust1" android:duration="200" />
- <item android:drawable="@drawable/rocket_thrust2" android:duration="200" />
- <item android:drawable="@drawable/rocket_thrust3" android:duration="200" />
- </animation-list>
- ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image);
- rocketImage.setBackgroundResource(R.drawable.rocket_thrust);
-
- rocketAnimation = (AnimationDrawable) rocketImage.getBackground();
- rocketAnimation.start();
三、图形的绘制
需要一个类,实现view类,并重写onDraw()方法,在方法中,用canvas画布、paint画笔、color颜色、path类来???现图形的绘制。使用canvas类可以绘制各种图形,点线面。paint类用于指定画笔的属性的,颜色、粗细、文字、特效等,path类则用于点与点间的连线。
四、图形特效
Matrix实现旋转、缩放和平移;Shader类渲染图形,它是个抽象父类,子类有BitmapShader位图渲染、ComposeShader混合渲染、LinearGradient线性渲染等。详细使用方法,此处略!后续。。本文参考:Android应用开发详解 google android 官方sdk feisky学习笔记