初识android中的动画文档格式.docx
- 文档编号:18455310
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:17
- 大小:20.14KB
初识android中的动画文档格式.docx
《初识android中的动画文档格式.docx》由会员分享,可在线阅读,更多相关《初识android中的动画文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
/**
*图片缩放
*
*/
privatevoidzoom(){
BitmapsrcBitmap=BitmapFactory.decodeFile("
mnt/sdcard/b.jpg"
);
iv_src.setImageBitmap(srcBitmap);
BitmapcopyBitmap=Bitmap.createBitmap(srcBitmap.getWidth(),srcBitmap.getHeight(),srcBitmap.getConfig());
Canvascanvas=newCanvas(copyBitmap);
Paintpaint=newPaint();
paint.setColor(Color.BLACK);
Matrixmatrix=newMatrix();
matrix.setScale(0.6f,0.6f);
canvas.drawBitmap(srcBitmap,matrix,paint);
iv_dest.setImageBitmap(copyBitmap);
}
/**
*图片平移
publicvoidtranslation(){
Optionsops=newOptions();
ops.inSampleSize=4;
//等比放缩
/mnt/sdcard/b.jpg"
ops);
matrix.setTranslate(100,100);
*旋转
publicvoidscole(){
matrix.setRotate(180,srcBitmap.getWidth()/2,srcBitmap.getHeight()/2);
//绕原点旋转
*镜面特效/倒影特效
*原理一样,一个关于x轴旋转,一个关于y轴旋转
publicvoidmirror(){
matrix.setScale(-1,1);
matrix.postTranslate(srcBitmap.getWidth(),0);
接下来进入进入今天的主题。
安卓下的动画分为三种:
帧动画、View动画(补间动画)、属性动画。
下面分别介绍这三种动画。
帧动画:
帧动画是这三种动画中最为普遍的一种,指的是一帧一帧播放的动画。
更直白的讲就是快速切换图片的效果。
通过animation-list来实现,创建一个Drawable序列,这些Drawable可以按照指定的时间间隔一个一个的显示,也就是顺序播放事先做好的图像。
帧动画使用的基本步骤:
1.创建帧动画每帧需要的图片,放到对应的drawable-xxx或drawable目录中
2.在drawable目录下,创建帧动画xml文件,根节点选择animation-list。
oneshot属性表示帧动画的自动执行。
如果为true,表示动画只播放一次停止在最后一帧上,如果设置为false表示动画循环播放。
3.在JAVA代码中开启动画。
设置为View的Background或者ImageView的src,然后获取到控件的AnimationDrawable对象,通过AnimationDrawable.start()方法启动动画
下面以火箭的发射为例演示帧动画。
xml文件中的代码:
<
?
xmlversion="
1.0"
encoding="
utf-8"
>
animation-listxmlns:
android="
>
<
itemandroid:
drawable="
@drawable/desktop_rocket_launch_1"
android:
duration="
200"
/>
@drawable/desktop_rocket_launch_2"
/animation-list>
Java代码的实现:
iv=newImageView(this);
//开启帧动画rocket为上述xml文件
iv.setBackgroundResource(R.drawable.rocket);
AnimationDrawablead=(AnimationDrawable)iv.getBackground();
ad.start();
属性动画:
Android3.0之后view类增加新的用来记录动画行为的属性,只能运行的Android3.0以上的系统也就是说运行在API-11以上的系统。
属性动画会改变当前的视图所在的位置,通过动态改变控件的宽、高、坐标等属性而产生的动画效果。
通过控制控件的属性实现动画效果,属性动画比补间动画要更灵活、强大的多。
需要注意的是属性动画内部其实并没有区分位移、缩放、透明、旋转等动画,其核心思想只是修改一个控件的属性,我们可以通过修改不同的属性来实现补间动画的4种效果而已。
属性动画跟补间动画比,属性动画是真正改变了控件的属性,会改变当前的视图所在的位置,因此当控件的位置改变后只要点击到了控件“身上”就能触发onClick事件。
而补间动画则并没用改变控件的真实属性,因此不管属性动画执行后将控件移动到了哪个位置,只能通过点击该控件的原始位置才能触发onClick事件。
通过xml文件实现属性动画步骤:
1.在res下创建属性动画文件。
在res目录下创建animator文件夹,然后创建一个objectAnimator资源文件。
资源名称自定义即可。
2.编写属性动画文件。
指定属性值。
3.编写代码使用属性动画文件。
通过AnimatorInflater加载图片资源,指定要显示动画的控件,并开启动画。
属性动画可以通过xml文件实现,但通常属性动画是通过JAVA代码实现。
这里仅给出用xml文件实现淡化动画的案例,其他案例均以JAVA代码的方式实现。
JAVA代码的方式实现属性动画。
publicclassMainActivityextendsActivity{
privateImageViewiv;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv=(ImageView)findViewById(R.id.iv);
*淡化动画
*@paramview
publicvoidalpha(Viewview){
ObjectAnimatoroa=ObjectAnimator.ofFloat(iv,"
alpha"
newfloat[]{
0.0f,0.2f,0.4f,0.6f,0.8f,1.0f});
oa.setDuration(3000);
oa.setRepeatCount(ObjectAnimator.INFINITE);
oa.setRepeatMode(ObjectAnimator.REVERSE);
oa.start();
*平移动画
publicvoidtrans(Viewview){
translationX"
newfloat[]{10f,20f,30f,40f,60f,80f});
*缩放动画
publicvoidscale(Viewview){
scaleX"
1f,2f,3f,4f,5f,6f});
*旋转动画
publicvoidrotate(Viewview){
rotationY"
newfloat[]{90f,180f,270f,360f});
*水平平移+竖直平移
publicvoidset(Viewview){
AnimatorSetset=newAnimatorSet();
ObjectAnimatoroa2=ObjectAnimator.ofFloat(iv,"
translationY"
newfloat[]{-10f,-20f,-30f,-40f,-60f,-80f});
oa2.setDuration(3000);
set.playTogether(oa,oa2);
set.start();
}
xml文件实现淡化效果:
objectAnimatorxmlns:
3000"
propertyName="
repeatCount="
3"
repeatMode="
reverse"
valueFrom="
0.0"
valueTo="
/objectAnimator>
然后在java代码中实现这样一段代码:
Animatoranimator=AnimatorInflater.loadAnimator(this,
R.animator.alpha);
animator.setTarget(iv);
animator.start();
View动画:
渐变动画也叫补间动画。
补间动画通过对View的内容进行一系列的图形变换(包括平移、缩放、旋转、改变透明度)来实现动画效果。
动画效果的定义可以采用XML文件来做也可以采用java代码来做。
使用XML文件实现View动画的步骤:
1.在res目录下创建anim文件夹。
2.在anim文件夹中创建xml文件,文件名可以自定义。
3.编辑xml文件。
定义不同的标签,表示不同的动画效果。
alpha表示淡化,
4.添加Java逻辑代码,使用AnimationUtils工具类加载xml文件,获取Animation对象,调用startAnimation让ImageView执行此动画。
View动画中常用属性的含义:
duration动画时长
fromAlpha起始透明度,1为完全不透明,0为完全透明
repeatCount重复次数,INFINITE表示无限重复
toAlpha目标透明度
repeatMode重复模式,restart为重新开始,reverse表示来回播放
渐变动画在代码中使用的是AlphaAnimation类来定义,在XML文件中使用<
alpha>
节点来定义。
旋转动画在代码中使用的是RotateAnimation类来定义,在XML文件中使用<
rotate>
伸缩动画在代码中使用的是ScaleAnimation类来定义,在XML文件中使用<
scale>
平移动画在代码中使用的是TranslateAnimation类来定义,在XML文件中使用<
Android提供了AnimationSet动画集合用于将多种补间动画联合起来一起使用,这样就能实现更多复杂的动画效果。
动画集合既可以使用AnimationSet类来定义也可以在XML文件中使用<
set>
任何复杂的动画均是通过简单的动画集合在一起的。
使用编码方式同样可以实现view动画,直接创建相应的动画对象,然后添加相应的属。
代使用编码方式实现view动画跟用XML文件实现View动画其实是一模一样的,无非就是在JAVA代码中设定相关的属性罢了。
使用XML文件实现View动画的代码:
1.在anim文件夹下新建下列文件:
!
--alpha_demo.xml文件夹下-->
alphaxmlns:
2000"
fromAlpha="
infinite"
toAlpha="
/alpha>
--rotate_demo.xml文件夹下-->
rotatexmlns:
fromDegrees="
0"
pivotX="
50%"
pivotY="
2"
toDegrees="
360"
/rotate>
--scale_demo.xml文件夹下-->
scalexmlns:
fromXScale="
20%"
fromYScale="
toXScale="
200%"
toYScale="
/scale>
--set_demo.xml文件夹下-->
setxmlns:
fillAfter="
true"
rotate
xmlns:
scale
/set>
--trans_dem
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 初识 android 中的 动画
![提示](https://static.bdocx.com/images/bang_tan.gif)