Android-通过Java代码来实现属性动画
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代码来实现属性动画相关推荐
- android cliptopadding java代码_android:clipToPadding属性的分析——以ListView的别样padding为例...
package cn.com.bravesoft.testlistviewloadmore; import java.util.ArrayList; import java.util.HashMap; ...
- js调用android本地java代码
js调用android本地java代码 当在Android上使用WebView控件开发一个Web应用时,可以创建一个通过Javascript调用Android端java代码的接口.也就是可以通过Jav ...
- Android View体系(三)属性动画
上一篇文章讲了View滑动的六种方法,其中一种是使用动画,这篇文章我们来讲一讲动画的其中一种:属性动画. 1.android视图动画和属性动画 视图动画我们都了解,它提供了AlphaAnimation ...
- Android 使用java 代码获取res 里面的value 定义的数组
现在res value 里面定义了一个array.xml 内容如下 <?xml version="1.0" encoding="utf-8"?> & ...
- java代码中如何嵌入c语言,Android中Java代码与C的互相调用(JNI的简单使用)
引言 最近在做项目的时候,接触到JNI,想一想自己第一次接触这个东西的时候,还是好久之前,现在既然接触到了,那我就简单的跟大家讲一讲JNI的基本使用方法. JNI(Java Native Interf ...
- Android开发——Java代码动态改变图片颜色
前言 在Android开发当中,我们会遇到多张图片需要改变背景颜色,我们不能用代码写死,但是我们setBackgroundColor方法改变是会被把我们背景变成直角的,但是从用户体验感的角度来讲是带有 ...
- Android Java 代码设置 layout_weight 属性
介绍 遇到在一个页面布局中,UI显示需要把屏幕分成上下两部分高度均分显示内容.是不是会想到 xml 里的 layout_weight设置权重的属性,但是现在需要代码里设置权重. 查了下,控件必须在 L ...
- Android中用Java代码模拟鼠标指针(可显示于整个系统界面之上)
Android有几款平板是有USB接口,连上鼠标后,界面上面就会出现一个鼠标指针,然后就可以用鼠标代替手势操作平板了,最近有项目需要用到鼠标指针,但是苦于不知道怎么调出系统的鼠标指针,所以只能用代码去 ...
- android:layout_marginleft 代码设置,在android的java代码中对控件的layout_marginLeft进行设置...
有的时候,我们需要根据android中的上下文的逻辑对控件的"layout_marginLeft"进行设置(当然,一个控件的其他属性也可以设置,在这里只是举个例子,备忘!) 以下是 ...
最新文章
- 7-8 Windows消息队列 (25 分)
- 芒果TV 2021 互联网人才招聘
- Android Retrofit使用教程(三):Retrofit与RxJava初相逢
- jupyter notebook界面颜色jt_更改jupyter notebook主题颜色——步骤详解(Windows系统)...
- mysql 控制台全是_Mysql控制台命令大全
- 交换机发生网络通信故障问题时该怎么办?
- 云计算将会让数据中心消失?
- Java 多态(一)
- 用户体验设计和精益设计的平衡之道
- linux下提示libpng12-0缺失
- oracle 安装包_【Oracle监控】-Spotlight On Oracle安装和使用
- imageJ 如何下载plugin_尺寸统计软件Nano measurer详细使用教程(附下载链接)
- 关于软件开发的那些事(三):聊聊软件项目管理及成本核算
- 【CXY】JAVA基础 之 String
- 是时候选择NewSQL数据库了
- 华为手机热点无法连接_别傻了!不能只会给别人开热点,要尝试华为手机的WiFi分享功能...
- HBOI2020游记
- linux下修改ext3硬盘为nst,Linux系统备份与恢复
- 常见日志框架介绍和对比(log4j,logback,log4j2)
- 有没有免费的抠图软件?自用的抠图软件分享
热门文章
- php bc 比较,php BC高精确度函数库
- java synchronized 类锁_【java】synchronized对象锁和类锁简介【图文教程】
- 图像处理、语音处理的应用及前沿技术_自主知识产权的2微米级3D视觉相机应用于高精度和高反光物体的缺陷检测...
- 大数据工程师技能图谱
- 中fuse_一种用于将mRNA快速转染到活细胞细胞质中的融合试剂
- api es7 删除所有数据_Elasticsearch7.1中文文档-第四章-API约定
- python中递归函数的基例_详谈Python基础之内置函数和递归 Python递归和循环的区别...
- Android服务查询完整过程源码分析
- Flex3 CRUD 与Java后台交互 完整Demo
- 使用ODBC向SQLServer存储过程传参数的方法