Android(安卓)animation 之视图动画、帧动画、属性动画的简单使用
Android animation 之视图动画、帧动画、属性动画的简单使用
前言: Android提供的动画效果可以说是非常丰富了,一个Android软件如果没有一点动画效果,这款软件怎么用都会是死气沉沉的,因此,为你的APP添加一下简单的动画效果还是必不可少的,在此我简单的介绍View Animation(视图动画)、Drawable Animation (帧动画) 、Property Animation (属性动画)的XML使用方法。
一、View Animation(视图动画)
视图动画,也叫 Tween (补间)动画可以在一个视图容器内执行一系列简单变换(位置、大小、旋转、透明度)。 譬如,如果你有一个 TextView 对象,您可以移动、旋转、缩放、透明度设置其文本,当然,如果它有一个背景图像,背景图像会随着文本变化。
但它有一个非常严重的缺点是,移动后的View仅仅是效果上的移动,实际位并没有移动,因此在动画效果移动后的位置点击View是没有效果的。这个问题可以用属性动画 去解决
xml使用视图动画的简单示例代码如下:
1、layout布局xml文件
<?xml version="1.0" encoding="utf-8"?>
2、…res/anim文件夹下新建viewanimation.xml文件如下(动画效果是透明度从0-1;大小从原图的0.5倍-原图的1.2倍;旋转角度从0-360;位置移动从View控件的左上角至右下角)
<?xml version="1.0" encoding="utf-8"?>
注:关于位置的值,总结一下,其实都是以View的左上角为参考进行左右移动
3、java代码执行动画
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void test(View view) { ImageView spaceshipImage = findViewById(R.id.img); Animation animation = AnimationUtils.loadAnimation(this, R.anim.viewanimation); animation.setDuration(1000); spaceshipImage.startAnimation(animation); }}
二、Drawable Animation (帧动画)
帧动画它允许你实现像播放幻灯片一样的效果,就是设置一系列图片有顺序有时间的进行显示,几张图片有序的快速展示,就会形成动画效果。
1、layerout布局xml文件
<?xml version="1.0" encoding="utf-8"?>
2、…res/drawable文件夹下新建anim.xml文件
该动画效果是四张图片每张展示5ms,顺序重复执行
<?xml version="1.0" encoding="utf-8"?>
3、Java代码执行动画
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void test(View view) { ImageView rocketImage = findViewById(R.id.img); rocketImage.setBackgroundResource(R.drawable.anim); AnimationDrawable animationDrawable=(AnimationDrawable)rocketImage.getBackground(); animationDrawable.start(); }}
三、Property Animation (属性动画)
属性动画是比较常用的动画,它的动画效果更加灵活多样,切解决了视图动画的位置问题。
1、layerout布局xml文件
<?xml version="1.0" encoding="utf-8"?>
2、…res/animator文件夹下新建set.xml文件
该动画效果是将View从-1000的位置移动到0,并且同时进行一次0-180的旋转
<?xml version="1.0" encoding="utf-8"?>
3、Java代码执行动画
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void test(View view) { Animator anim = AnimatorInflater.loadAnimator(this, R.animator.set); ImageView iv=findViewById(R.id.img); anim.setTarget(iv); anim.start(); }}
后言:
关于Android动画方面,这位前辈的文章讲的非常详细,并且带有示例代码,有兴趣深入学习的,可以移步 https://github.com/OCNYang/Android-Animation-Set
更多相关文章
- Android动态效果Animation
- Android中的图形图像
- (转)android 按比例布局 适应不同分辨率
- android:layout_weight属性详解
- Android之SlidingDrawer抽屉效果
- android事件拦截处理机制详解
- android studio for android learning (九) android之Adapter用法
- Android之SlidingDrawer抽屉效果
- Android中在GridView网格视图上实现item拖拽交换的方法