Android:关于Animation的几种常见的动画

适当的添加一些动画效果,能够获得更好的用户体验,这次讲讲一些常见的动画~

如:透明动画,渐变动画等等。

先看一下运行截图:

附上代码,注释写在代码中:

MainActivity.java:

package com.vrinux.animotiondemo;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.RotateAnimation;
import android.view.animation.ScaleAnimation;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;

public class MainActivity extends Activity {

    private ImageView imgObj;

    private Animation animation;

    private AnimationSet animationSet;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imgObj = (ImageView) findViewById(R.id.imgid);

    }

    public void animationshow(View view) {
        switch (view.getId()) {
        case R.id.btn01id:
            /**
             * 透明动画: AlphaAnimation(float fromAlpha,//变化起始状态的Alpha值; float
             * toAlpha)//变化结束状态的Alpha值;
             */
            animation = new AlphaAnimation(0.0f, 1.0f);
            // 设置动画时长;
            animation.setDuration(3000);
            // 为组件添加动画;
            imgObj.setAnimation(animation);
            break;

        case R.id.btn02id:
            /**
             * 渐变动画: ScaleAnimation(float fromX, //变化起始状态x轴(即宽度)占控件的x轴(即宽度)的比例,
             * 1.0f为控件的宽度,0.0f表示没有宽度, 大于1.0f标识控件宽度的相应倍数; float
             * toX,//变化结束状态x轴(即宽度)占控件的x轴(即宽度)的比例; float fromY,
             * //变化起始状态y轴(即高度)占控件的y轴(即高度)的比例,和fromX同理; float toY,
             * //变化结束状态y轴(即高度)占控件的y轴(即高度)的比例; float pivotX,//变化的原点x轴坐标; float
             * pivotY)//变化的原点y轴坐标;
             */
            animation = new ScaleAnimation(0.5f, 2.0f, 0.5f, 2.0f, 50.0f, 50.0f);
            animation.setDuration(3000);
            imgObj.setAnimation(animation);
            break;

        case R.id.btn03id:
            /**
             * 位移动画: TranslateAnimation(float fromXDelta, //位移起始x轴位置; float
             * toXDelta, //位移结束x轴位置; float fromYDelta, //位移起始y轴位置; float
             * toYDelta)//位移结束y轴位置;
             */
            animation = new TranslateAnimation(0.0f, 100.0f, 0.0f, 100.0f);
            animation.setDuration(3000);
            imgObj.setAnimation(animation);
            break;

        case R.id.btn04id:
            /**
             * 旋转动画: RotateAnimation(float fromDegrees,//起始旋转度数; float
             * toDegrees, //结束旋转度数; float pivotX, //旋转原点的x轴坐标; float
             * pivotY)//旋转原点的y轴坐标;
             */
            animation = new RotateAnimation(0.0f, 360.0f, 50.0f, 50.0f);
            animation.setDuration(3000);
            imgObj.setAnimation(animation);
            break;

        case R.id.btn05id:
            /**
             * AnimationSet(true)//动画集合(组合);顾名思义;
             */
            AlphaAnimation animation1 = new AlphaAnimation(0.0f, 1.0f);
            ScaleAnimation animation2 = new ScaleAnimation(0.5f, 2.0f, 0.5f,
                    2.0f, 50.0f, 50.0f);
            TranslateAnimation animation3 = new TranslateAnimation(0.0f,
                    100.0f, 0.0f, 100.0f);
            RotateAnimation animation4 = new RotateAnimation(0.0f, 360.0f,
                    50.0f, 50.0f);

            animationSet = new AnimationSet(true);
            animationSet.addAnimation(animation1);
            animationSet.addAnimation(animation2);
            animationSet.addAnimation(animation3);
            animationSet.addAnimation(animation4);
            animationSet.setDuration(4000);
            imgObj.setAnimation(animationSet);

            break;
        }
    }
}

activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/imgid"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_weight="1"
        android:src="@drawable/img" />

    <Button
        android:id="@+id/btn01id"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:onClick="animationshow"
        android:text="透明动画"
        android:textSize="20sp" />

    <Button
        android:id="@+id/btn02id"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:onClick="animationshow"
        android:text="渐变动画"
        android:textSize="20sp" />

    <Button
        android:id="@+id/btn03id"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:onClick="animationshow"
        android:text="位移动画"
        android:textSize="20sp" />

    <Button
        android:id="@+id/btn04id"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:onClick="animationshow"
        android:text="旋转动画"
        android:textSize="20sp" />

    <Button
        android:id="@+id/btn05id"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:onClick="animationshow"
        android:text="动画组合"
        android:textSize="20sp" />

</LinearLayout>

图片资源:

img.jpg:

时间: 2024-11-08 03:13:22

Android:关于Animation的几种常见的动画的相关文章

Android中ListView的几种常见的优化方法

Android中的ListView应该算是布局中几种最常用的组件之一了,使用也十分方便,下面将介绍ListView几种比较常见的优化方法: 首先我们给出一个没有任何优化的Listview的Adapter类,我们这里都继承自BaseAdapter,这里我们使用一个包含100个字符串的List集合来作为ListView的项目所要显示的内容,每一个条目都是一个自定义的组件,这个组件中只包含一个textview: Activity: package com.alexchen.listviewoptimi

Android animator Animation动画效果详解

Android的animation由四种类型组成 XML中 alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动画效果 rotate 画面转移旋转动画效果 JavaCode中 AlphaAnimation 渐变透明度动画效果 ScaleAnimation 渐变尺寸伸缩动画效果 TranslateAnimation 画面转换位置移动动画效果 RotateAnimation 画面转移旋转动画效果 Android动画模式 Animation主要有两种

Android 四种常见的线程池

引入线程池的好处 1)提升性能.创建和消耗对象费时费CPU资源 2)防止内存过度消耗.控制活动线程的数量,防止并发线程过多. 我们来看一下线程池的简单的构造 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue workQueue, ThreadFactory threadFactory, RejectedExecution

[整理]android中几种常见的尺寸

获取屏幕宽高尺寸的三种代码形式 在Android上,目前我知道的获取屏幕尺寸的方法有三种不同的代码形式 方法1.在Activity中最常见的调用方式 WindowManager windowManager = getWindowManager(); Display display = windowManager.getDefaultDisplay(); int screenWidth = display.getWidth(); int screenHeight = display.getHeig

Android动画Animation的两种加载执行方式

本文以简单的AlphaAnimation("淡入淡出(透明度改变)"动画)为例,简单的说明Android动画Animation的两种加载执行方法: (1) 直接写Java代码,制作Android动画. (2) 写XML配置文件,加载XML资源文件执行. 其实这两者是一致的.要知道,在Android中,凡是可以在XML文件完成的View,代码亦可完全写出来. 现在先给出一个Java代码完成的动画AlphaAnimation,AlphaAnimation功能简单,简言之,可以让一个View

Android学习——Animation动画效果

1.Android动画模式: 1>tweened animation: 渐变动画: 2>frame by frame: 画面转换动画. 2.Android的Animation动画由四种类型组成: XML alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动画效果 rotate 画面转移旋转动画效果 Java代码 AlphaAnimation 渐变透明度动画效果 ScaleAnimation 渐变尺寸伸缩动画效果 TranslateAnimat

android 数据存储的几种方式

总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络.其中文件和数据库可能用的稍多一些,文件用起来较为方便,程序可以自己定义格式:数据库用起稍烦锁一些,但它有它的优点,比如在海量数据时性能优越,有查询功能,可以加密,可以加锁,可以跨应用,跨平台等等:网络,则用于比较重要的事情,比如科研,勘探,航空等实时采集到的数据需要马上通过网络传输到数据处理中心进行存储并进行处理. 对于Android平台来讲,它的存储方式也不外乎这几种,按方式总体来分,也是文件,数据库和网络.但从开发者的

android开发中的5种存储数据方式

数据存储在开发中是使用最频繁的,根据不同的情况选择不同的存储数据方式对于提高开发效率很有帮助.下面笔者在主要介绍Android平台中实现数据存储的5种方式. 1.使用SharedPreferences存储数据 SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstance State保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长 整

Andorid 内存溢出与内存泄露,几种常见导致内存泄露的写法

内存泄露,大部分是因为程序的逻辑不严谨,但是又可以跑通顺,然后导致的,内存溢出不会报错,如果不看日志信息是并不知道有泄露的.但是如果一直泄露,然后最终导致的内存溢出,仍然会使程序挂掉.内存溢出大部分是关于图片的请求,然后又没有及时的释放内存,而导致的内存泄露. 下面是几种常见的导致内存泄露的写法.有些是收集的别的地方的,我也是看到才知道自己写错了,分享一下吧 1.单例造成的内存泄漏 大家都喜欢用Android的单例模式,不过使用的不恰当的话也会造成内存泄漏.因为单例的静态特性使得单例的生命周期和