文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么在Android中实现透明动画

2023-06-15 04:09

关注

这篇文章给大家介绍怎么在Android中实现透明动画,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

首页是有一个 Activity

public class AlphaAnimationActivity extends AppCompatActivity {  private ImageView mImageView;  @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_frame_animation);  //只是一张普通的图片  mImageView = findViewById(R.id.imageview);    ... 这是若干个按钮 用来启动动画    }

1 补间动画方式

1.1 xml 方式

目录文件夹 res/anim/alpha.xml

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android">    <alpha        android:duration="3000"        android:fromAlpha="0.0"        android:toAlpha="1.0">    </alpha></set>

然后在 Java 代码中使用如下:

//补间动画方式 - xmlpublic void start1() { //加载动画xml Animation lAnimation = AnimationUtils.loadAnimation(this, R.anim.alpha); //设置并开启动画 mImageView.startAnimation(lAnimation); }

1.2 java 代码方式

//补间动画方式 - javaprivate void start2() { //创建透明动画 Animation lAnimation = new AlphaAnimation(0.0f, 1.0f); //设置动画时间 lAnimation.setDuration(3000); //设置动画 mImageView.startAnimation(lAnimation);}

2 属性动画方式

1.1 ValueAnimator xml 方式

目录文件夹 res/animator/alpha_animator.xml

<animator xmlns:android="http://schemas.android.com/apk/res/android"    android:valueFrom="0"    android:valueTo="255"    android:duration="2000"    android:valueType="intType"/>

然后代码中

//属性动画方式 - ValueAnimator - xmlpublic void start3() { // 载入XML动画 ValueAnimator animator = (ValueAnimator) AnimatorInflater.loadAnimator(this, R.animator.alpha_animator); animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {  @Override  public void onAnimationUpdate(ValueAnimator animation) {   int currentValue = (int) animation.getAnimatedValue();   Log.d("属性动画", "onAnimationUpdate: " + animation.getAnimatedValue());   // 将改变后的值赋给对象的属性值,下面会详细说明   mImageView.setImageAlpha(currentValue);   //刷新视图,即重新绘制,从而实现动画效果   mImageView.requestLayout();  } }); // 启动动画 animator.start();}

1.2 ValueAnimator java 代码方式

//属性动画方式 - ValueAnimator - javapublic void start4() { // 第一步:设置动画属性的初始值 & 结束值 // ofInt()作用有两个 // 1. 创建动画实例 // 2. 将传入的多个Int参数进行平滑过渡:此处传入0和1,表示将值从0平滑过渡到 255 // 如果传入了3个Int参数 a,b,c ,则是先从a平滑过渡到b,再从b平滑过渡到 c,以此类推 ValueAnimator anim = ValueAnimator.ofInt(0, 255); // 设置动画运行的时长 anim.setDuration(500); // 设置动画延迟播放时间 anim.setStartDelay(500); // 设置动画重复播放次数 = 重放次数+1 // 动画播放次数 = infinite时,动画无限重复 anim.setRepeatCount(0); // 设置重复播放动画模式 // ValueAnimator.RESTART(默认):正序重放 // ValueAnimator.REVERSE:倒序回放 anim.setRepeatMode(ValueAnimator.RESTART);  // 第二步:将改变的值手动赋值给对象的属性值:通过动画的更新监听器 // 设置 值的更新监听器 // 即:值每次改变、变化一次,该方法就会被调用一次 anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {  @Override  public void onAnimationUpdate(ValueAnimator animation) {      int currentValue = (Integer) animation.getAnimatedValue();   // 获得改变后的值   System.out.println(currentValue);   // 输出改变后的值      // 步骤4:将改变后的值赋给对象的属性值,下面会详细说明   mImageView.setImageAlpha(currentValue);      // 步骤5:刷新视图,即重新绘制,从而实现动画效果   mImageView.requestLayout();     } }); //第三步 启动动画 anim.start(); // 启动动画 // ValueAnimator 类是先改变值,然后 手动赋值 给对象的属性从而实现动画;是 间接 对对象属性进行操作 // ValueAnimator 类本质上是一种 改变 值 的操作机制}

1.3 ObjectAnimator xml 方式

目录文件夹 animator/alpha_object_animator.xml

<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"    android:propertyName="alpha"    android:valueFrom="1"    android:valueTo="0"    android:duration="2000"    android:valueType="floatType"    ></objectAnimator>
//属性动画方式 - ObjectAnimator - xmlpublic void start5() { // 载入XML动画 Animator animator = AnimatorInflater.loadAnimator(this, R.animator.alpha_object_animator);  // 设置动画对象 animator.setTarget(mImageView);  // 启动动画 animator.start();  Log.d("动画","ObjectAnimator - xml"); }

1.4 ObjectAnimator java 代码方式

//属性动画方式 - ObjectAnimator - javapublic void start6() { ObjectAnimator anim = ObjectAnimator.ofFloat(mImageView, "alpha", 1f, 0f, 1f); // 表示的是: // 动画作用对象是mButton // 动画作用的对象的属性是透明度alpha // 动画效果是:常规 - 全透明 - 常规 // ofFloat()作用有两个 anim.setDuration(500); // 设置动画运行的时长  anim.setStartDelay(500); // 设置动画延迟播放时间  anim.setRepeatCount(0); // 设置动画重复播放次数 = 重放次数+1 // 动画播放次数 = infinite时,动画无限重复  anim.setRepeatMode(ValueAnimator.RESTART); // 设置重复播放动画模式 // ValueAnimator.RESTART(默认):正序重放 // ValueAnimator.REVERSE:倒序回放 anim.start(); }

Android是什么

Android是一种基于Linux内核的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。

关于怎么在Android中实现透明动画就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯