Android-通过Java代码来实现属性动画


除了能够使用定义xml文件来设置动画之外。还能够使用java代码来进行控制动画。
示比例如以下:


布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.xieth.as.againanimdemo.MainActivity2"><ImageViewandroid:id="@+id/id_img"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="click"android:src="@mipmap/ic_launcher"/><Buttonandroid:id="@+id/id_btnMove"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:onClick="move"android:layout_centerHorizontal="true"android:layout_marginBottom="40dp"android:text="移动"/></RelativeLayout>

主活动:

package com.xieth.as.againanimdemo;import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
import android.widget.Toast;public class MainActivity2 extends AppCompatActivity {private ImageView imageView = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);imageView = (ImageView) findViewById(R.id.id_img);}public void click(View view) {Toast.makeText(this, "click", Toast.LENGTH_SHORT).show();}public void move(View view) {TranslateAnimation animation = new TranslateAnimation(0, 200, 0, 0);// 设置显示的时长animation.setDuration(1000);imageView.startAnimation(animation);}
}

设置事件
移动

TranslateAnimation animation = new TranslateAnimation(0, 200, 0, 0);
// 设置显示的时长
animation.setDuration(1000);
imageView.startAnimation(animation);

执行:


ObjectAnimator.ofFloat(imageView, "translationX", 0F, 200F).setDuration(1000).start();

执行:

能够看见效果是一样的。


改动一下代码:

  ObjectAnimator.ofFloat(imageView, "translationY", 0F, 200F).setDuration(1000).start();

这次是Y方向:


旋转

ObjectAnimator.ofFloat(imageView, "rotation", 0F, 360F).setDuration(1000).start();

执行:


组合动画

 ObjectAnimator.ofFloat(imageView, "rotation", 0F, 360F).setDuration(1000).start();ObjectAnimator.ofFloat(imageView, "translationX", 0F, 360F).setDuration(1000).start();ObjectAnimator.ofFloat(imageView, "translationY", 0F, 360F).setDuration(1000).start();

执行:

能够看到这三个动画同一时候执行


使用PropertyValuesHolder

 PropertyValuesHolder p1 = PropertyValuesHolder.ofFloat("rotation", 0F, 360F);PropertyValuesHolder p2 = PropertyValuesHolder.ofFloat("translationX", 0F, 200F);PropertyValuesHolder p3 = PropertyValuesHolder.ofFloat("translationY", 0F, 200F);ObjectAnimator.ofPropertyValuesHolder(imageView, p1, p2, p3).setDuration(1000).start();

执行:


使用AnimatorSet

ObjectAnimator a1 = ObjectAnimator.ofFloat(imageView, "rotation", 0F, 360F);
ObjectAnimator a2 = ObjectAnimator.ofFloat(imageView, "translationX", 0F, 360F);
ObjectAnimator a3 = ObjectAnimator.ofFloat(imageView, "translationY", 0F, 360F);
AnimatorSet set = new AnimatorSet();
set.setDuration(1000);
set.playTogether(a1, a2, a3);
set.start();

执行:

效果一样。


之前都是同事播放的。如今能够依照顺序来执行。

set.playSequentially(a1, a2, a3);

执行:

能够看到先旋转,再向X方向移动。再向Y方向移动。


也可这样进行顺序控制。
先同一时候执行X和Y方向的移动,再进行旋转

set.play(a2).with(a3);
set.play(a1).after(a2);

执行:


转载于:https://www.cnblogs.com/llguanli/p/7270313.html

Android-通过Java代码来实现属性动画相关推荐

  1. android cliptopadding java代码_android:clipToPadding属性的分析——以ListView的别样padding为例...

    package cn.com.bravesoft.testlistviewloadmore; import java.util.ArrayList; import java.util.HashMap; ...

  2. js调用android本地java代码

    js调用android本地java代码 当在Android上使用WebView控件开发一个Web应用时,可以创建一个通过Javascript调用Android端java代码的接口.也就是可以通过Jav ...

  3. Android View体系(三)属性动画

    上一篇文章讲了View滑动的六种方法,其中一种是使用动画,这篇文章我们来讲一讲动画的其中一种:属性动画. 1.android视图动画和属性动画 视图动画我们都了解,它提供了AlphaAnimation ...

  4. Android 使用java 代码获取res 里面的value 定义的数组

    现在res value 里面定义了一个array.xml 内容如下 <?xml version="1.0" encoding="utf-8"?> & ...

  5. java代码中如何嵌入c语言,Android中Java代码与C的互相调用(JNI的简单使用)

    引言 最近在做项目的时候,接触到JNI,想一想自己第一次接触这个东西的时候,还是好久之前,现在既然接触到了,那我就简单的跟大家讲一讲JNI的基本使用方法. JNI(Java Native Interf ...

  6. Android开发——Java代码动态改变图片颜色

    前言 在Android开发当中,我们会遇到多张图片需要改变背景颜色,我们不能用代码写死,但是我们setBackgroundColor方法改变是会被把我们背景变成直角的,但是从用户体验感的角度来讲是带有 ...

  7. Android Java 代码设置 layout_weight 属性

    介绍 遇到在一个页面布局中,UI显示需要把屏幕分成上下两部分高度均分显示内容.是不是会想到 xml 里的 layout_weight设置权重的属性,但是现在需要代码里设置权重. 查了下,控件必须在 L ...

  8. Android中用Java代码模拟鼠标指针(可显示于整个系统界面之上)

    Android有几款平板是有USB接口,连上鼠标后,界面上面就会出现一个鼠标指针,然后就可以用鼠标代替手势操作平板了,最近有项目需要用到鼠标指针,但是苦于不知道怎么调出系统的鼠标指针,所以只能用代码去 ...

  9. android:layout_marginleft 代码设置,在android的java代码中对控件的layout_marginLeft进行设置...

    有的时候,我们需要根据android中的上下文的逻辑对控件的"layout_marginLeft"进行设置(当然,一个控件的其他属性也可以设置,在这里只是举个例子,备忘!) 以下是 ...

最新文章

  1. 7-8 Windows消息队列 (25 分)
  2. 芒果TV 2021 互联网人才招聘
  3. Android Retrofit使用教程(三):Retrofit与RxJava初相逢
  4. jupyter notebook界面颜色jt_更改jupyter notebook主题颜色——步骤详解(Windows系统)...
  5. mysql 控制台全是_Mysql控制台命令大全
  6. 交换机发生网络通信故障问题时该怎么办?
  7. 云计算将会让数据中心消失?
  8. Java 多态(一)
  9. 用户体验设计和精益设计的平衡之道
  10. linux下提示libpng12-0缺失
  11. oracle 安装包_【Oracle监控】-Spotlight On Oracle安装和使用
  12. imageJ 如何下载plugin_尺寸统计软件Nano measurer详细使用教程(附下载链接)
  13. 关于软件开发的那些事(三):聊聊软件项目管理及成本核算
  14. 【CXY】JAVA基础 之 String
  15. 是时候选择NewSQL数据库了
  16. 华为手机热点无法连接_别傻了!不能只会给别人开热点,要尝试华为手机的WiFi分享功能...
  17. HBOI2020游记
  18. linux下修改ext3硬盘为nst,Linux系统备份与恢复
  19. 常见日志框架介绍和对比(log4j,logback,log4j2)
  20. 有没有免费的抠图软件?自用的抠图软件分享

热门文章

  1. php bc 比较,php BC高精确度函数库
  2. java synchronized 类锁_【java】synchronized对象锁和类锁简介【图文教程】
  3. 图像处理、语音处理的应用及前沿技术_自主知识产权的2微米级3D视觉相机应用于高精度和高反光物体的缺陷检测...
  4. 大数据工程师技能图谱
  5. 中fuse_一种用于将mRNA快速转染到活细胞细胞质中的融合试剂
  6. api es7 删除所有数据_Elasticsearch7.1中文文档-第四章-API约定
  7. python中递归函数的基例_详谈Python基础之内置函数和递归 Python递归和循环的区别...
  8. Android服务查询完整过程源码分析
  9. Flex3 CRUD 与Java后台交互 完整Demo
  10. 使用ODBC向SQLServer存储过程传参数的方法