当前位置: 移动技术网 > IT编程>移动开发>Android > Android动画开发之淡入淡出、缩放、旋转、平移、组合动画效果代码实现

Android动画开发之淡入淡出、缩放、旋转、平移、组合动画效果代码实现

2018年12月27日  | 移动技术网IT编程  | 我要评论

永利娱乐注册-上055118,斗鱼直播间,虫界战争之殖民统治

1.activity_main.xml文件

<!-- 淡入淡出动画按钮直接调用activity定义的alpha()方法 -->
<button
    android:id="@+id/btnalpha"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignparentleft="true"
    android:layout_alignparenttop="true"
    android:layout_marginleft="16dp"
    android:layout_margintop="22dp"
    android:onclick="alpha"
    android:text="淡入淡出" />

<!-- 利用软件自带的图片进行测试 -->
<imageview
    android:id="@+id/ivpic"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerhorizontal="true"
    android:layout_centervertical="true"
    android:src="@android:drawable/btn_star_big_off" />

 <!-- 缩放动画按钮直接调用activity定义的scale()方法 -->
<button
    android:id="@+id/btnscale"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignbottom="@+id/btnalpha"
    android:layout_alignleft="@+id/ivpic"
    android:text="缩放" 
    android:onclick="scale"
    />

<!-- 旋转动画按钮直接调用activity定义的rotate()方法 -->
<button
    android:id="@+id/btnrotate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignbaseline="@+id/btnscale"
    android:layout_alignbottom="@+id/btnscale"
    android:layout_marginleft="15dp"
    android:layout_torightof="@+id/btnscale"
    android:text="旋转" 
    android:onclick="rotate"
    />

  <!-- 平移动画按钮直接调用activity定义的translate()方法 -->
<button
    android:id="@+id/btntranslate"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignleft="@+id/btnalpha"
    android:layout_below="@+id/btnalpha"
    android:layout_margintop="18dp"
    android:text="平移" 
    android:onclick="translate"
    />

<!-- 组合动画按钮直接调用activity定义的combo()方法 -->
<button
    android:id="@+id/btncombo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignbaseline="@+id/btntranslate"
    android:layout_alignbottom="@+id/btntranslate"
    android:layout_alignright="@+id/ivpic"
    android:text="组合动画"
    android:onclick="combo"
     />

2.mainactivity.java文件

import android.os.bundle;
import android.app.activity;
import android.view.menu;
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 ivpic;

    @override
    protected void oncreate(bundle savedinstancestate) {
        super.oncreate(savedinstancestate);
        setcontentview(r.layout.activity_main);

        //获取到activity_main.xml文件中的图片控件
        ivpic = (imageview) findviewbyid(r.id.ivpic);
        }


        /**
         * 淡入淡出动画方法
         * 
         * @param v
         */
        public void alpha(view v) {
            // 创建透明度动画,第一个参数是开始的透明度,第二个参数是要转换到的透明度
            alphaanimation alphaani = new alphaanimation(0.2f, 1);

            //设置动画执行的时间,单位是毫秒
            alphaani.setduration(1000);

            // 设置动画结束后停止在哪个状态(true表示动画完成后的状态)
            // alphaani.setfillafter(true);

            // true动画结束后回到开始状态
            // alphaani.setfillbefore(true);

            // 设置动画重复次数
            // -1或者animation.infinite表示无限重复,正数表示重复次数,0表示不重复只播放一次
            alphaani.setrepeatcount(10);

            // 设置动画模式(animation.reverse设置循环反转播放动画,animation.restart每次都从头开始)
            alphaani.setrepeatmode(animation.reverse);

            // 启动动画
            ivpic.startanimation(alphaani);
        }


        /**
         * 缩放动画
         * 
         * @param v
         */
        public void scale(view v) {
            //参数1:x轴的初始值
            //参数2:x轴收缩后的值
            //参数3:y轴的初始值
            //参数4:y轴收缩后的值
            //参数5:确定x轴坐标的类型
            //参数6:x轴的值,0.5f表明是以自身这个控件的一半长度为x轴
            //参数7:确定y轴坐标的类型
            //参数8:y轴的值,0.5f表明是以自身这个控件的一半长度为x轴
            // animation.relative_to_self, 0.5f表示绕着自己的中心点进行动画
            scaleanimation scaleani = new scaleanimation(0.2f, 3.0f, 0.2f, 3.0f,
                    animation.relative_to_self, 0.5f, animation.relative_to_self,
                    0.5f);

            //设置动画执行的时间,单位是毫秒
            scaleani.setduration(100);

            // 设置动画重复次数
            // -1或者animation.infinite表示无限重复,正数表示重复次数,0表示不重复只播放一次
            scaleani.setrepeatcount(10);

            // 设置动画模式(animation.reverse设置循环反转播放动画,animation.restart每次都从头开始)
            scaleani.setrepeatmode(animation.reverse);

            // 启动动画
            ivpic.startanimation(scaleani);
        }

}

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网