当前位置: 首页 > news >正文

Android——动画

帧动画

帧动画就是很多张图片,一帧一帧的播放,形成的一个动画效果。

frame.xml

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"><itemandroid:drawable="@drawable/diqiu"android:duration="120" /><itemandroid:drawable="@drawable/huoxing"android:duration="120" /><itemandroid:drawable="@drawable/tuxing"android:duration="120" /><itemandroid:drawable="@drawable/shuixing"android:duration="120" />
</animation-list>

将其设置为background

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/main"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/frame"tools:context=".FrameAnimationActivity"></RelativeLayout>

执行动画

    @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_frame_animation);RelativeLayout relativeLayout = findViewById(R.id.main);AnimationDrawable anim = (AnimationDrawable) relativeLayout.getBackground();relativeLayout.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (flag) {anim.start();flag = false;} else {anim.stop();flag = true;}}});}

案例代码

补间动画

补间动画包括alpha(透明度)rotate(旋转)scale(缩放)translate(平移)

  • alpha.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"><alphaandroid:duration="2000"android:fromAlpha="0"android:toAlpha="1" />
</set>
  • rotate.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"><rotateandroid:duration="2000"android:fromDegrees="0"android:pivotX="50%"android:pivotY="50%"android:toDegrees="360" />
</set>
  • scale.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"><scaleandroid:duration="2000"android:fromXScale="1"android:fromYScale="1"android:pivotX="50%"android:pivotY="50%"android:toXScale="0.5"android:toYScale="0.5" />
</set>
  • translate.xml
<set xmlns:android="http://schemas.android.com/apk/res/android"><translateandroid:duration="2000"android:fromXDelta="0"android:fromYDelta="0"android:toXDelta="400"android:toYDelta="400" />
</set>

启动动画

        ImageView iv = findViewById(R.id.iv);iv.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {
//                Animation animation = AnimationUtils.loadAnimation(AlphaActivity.this, R.anim.alpha);
//                Animation animation = AnimationUtils.loadAnimation(AlphaActivity.this, R.anim.rotate);
//                Animation animation = AnimationUtils.loadAnimation(AlphaActivity.this, R.anim.scale);Animation animation = AnimationUtils.loadAnimation(AlphaActivity.this, R.anim.translate);iv.startAnimation(animation);}});

案例代码

属性动画

声明一个属性值,通过属性值的改变,达到动画的效果。

  • ValueAnimator
        ValueAnimator valueAnimator = ValueAnimator.ofFloat(0f, 1f);valueAnimator.setDuration(2000);valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {@Overridepublic void onAnimationUpdate(@NonNull ValueAnimator animation) {float value = (float) animation.getAnimatedValue();Log.e("leo", "value:" + value);}});valueAnimator.start();
  • ObjectAnimator

可以直接指定要控制的对象

        TextView tv = findViewById(R.id.tv);ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(tv, "alpha", 0f, 1f);objectAnimator.setDuration(4000);objectAnimator.start();

监听

        objectAnimator.addListener(new Animator.AnimatorListener() {@Overridepublic void onAnimationStart(@NonNull Animator animation) {//开始}@Overridepublic void onAnimationEnd(@NonNull Animator animation) {//结束}@Overridepublic void onAnimationCancel(@NonNull Animator animation) {//取消}@Overridepublic void onAnimationRepeat(@NonNull Animator animation) {//重复}});

案例代码

相关文章:

  • Node.js 异步调用淘宝 API 实践:高吞吐商品详情数据采集方案
  • 双层Key缓存
  • 010301-cdn_waf-web扩展1-基础入门-网络安全
  • [密码学实战]国密算法面试题解析及应用
  • 使用Python绘制AUC曲线(即ROC曲线)
  • 极狐GitLab 用户 API 速率限制如何设置?
  • 【java 13天进阶Day12】XML和Dom4j,装饰模式,工厂模式,commons-io工具包,Base64
  • 机器学习05-CNN
  • C# 高级编程:Lambda 表达式
  • PHP腾讯云人脸核身获取Access Token
  • 《软件设计师》复习笔记(11.6)——系统转换、系统维护、系统评价
  • ASP.NET MVC 实现增删改查(CRUD)操作的完整示例
  • 给予FLUX更好的控制:FLUX.1-dev-ControlNet-Union-Pro-2.0
  • 精准计量+AI管控——安科瑞助力高校水电管理数字化转型
  • 2025妈妈杯数学建模D题完整分析论文
  • 2 celery环境搭建
  • ASP.NET常见安全漏洞及修复方式
  • 【Drools+springboot3规则匹配】
  • 利用 DeepSeek-R1 模型和计算机视觉微调模型实现马铃薯叶片疾病识别和分类
  • STM32使用rand()生成随机数并显示波形
  • 西安旅游:2024年营业收入约5.82亿元,同比增长5.88%
  • 寒武纪一季度营收猛增42倍,净利3.55亿元,连续两个季度盈利
  • 自然资源部:一季度存量商品房转移登记办理量同比增长超三成
  • 三河市委书记付顺义简历已从三河市政府网站撤下
  • 四部门联合印发《金融“五篇大文章”总体统计制度(试行)》