1. package com.loaderman.customviewdemo;
  2.  
  3. import android.animation.ObjectAnimator;
  4. import android.animation.PropertyValuesHolder;
  5. import android.os.Bundle;
  6. import android.support.v7.app.AppCompatActivity;
  7. import android.view.View;
  8. import android.widget.Button;
  9. import android.widget.TextView;
  10.  
  11. public class MainActivity extends AppCompatActivity {
  12. private Button mButton;
  13. private TextView mTv, mTv2;
  14. @Override
  15. protected void onCreate(Bundle savedInstanceState) {
  16. super.onCreate(savedInstanceState);
  17. setContentView(R.layout.activity_main);
  18. mTv = (TextView)findViewById(R.id.tv);
  19. findViewById(R.id.start_anim).setOnClickListener(new View.OnClickListener() {
  20. public void onClick(View v) {
  21. PropertyValuesHolder rotationHolder = PropertyValuesHolder.ofFloat("Rotation", 60f, -60f, 40f, -40f, -20f, 20f, 10f, -10f, 0f);
  22. PropertyValuesHolder alphaHolder = PropertyValuesHolder.ofFloat("alpha", 0.1f, 1f, 0.1f, 1f);
  23. ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(mTv, rotationHolder, alphaHolder);\\实例入口
  24. animator.setDuration(3000);
  25. animator.start();
  26. }
  27. });
  28. }
  29. }

PropertyValuesHolder的ofFloat和ofInt函数的基本用法


  1. package com.loaderman.customviewdemo;
  2.  
  3. import android.animation.ObjectAnimator;
  4. import android.animation.PropertyValuesHolder;
  5. import android.os.Bundle;
  6. import android.support.v7.app.AppCompatActivity;
  7. import android.view.View;
  8. import android.view.animation.AccelerateInterpolator;
  9.  
  10. public class MainActivity extends AppCompatActivity {
  11. private MyTextView mTv;
  12. @Override
  13. protected void onCreate(Bundle savedInstanceState) {
  14. super.onCreate(savedInstanceState);
  15. setContentView(R.layout.activity_main);
  16. mTv = findViewById(R.id.mTv);
  17. findViewById(R.id.start_anim).setOnClickListener(new View.OnClickListener() {
  18. public void onClick(View v) {
  19. /**
  20. * ofObject使用
  21. */
  22. PropertyValuesHolder charHolder = PropertyValuesHolder.ofObject("CharText",new CharEvaluator(),new Character('A'),new Character('Z'));
  23. ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(mTv, charHolder);
  24. animator.setDuration(3000);
  25. animator.setInterpolator(new AccelerateInterpolator());
  26. animator.start();
  27. }
  28. });
  29. }
  30. }
  1. package com.loaderman.customviewdemo;
  2.  
  3. import android.content.Context;
  4. import android.util.AttributeSet;
  5.  
  6. public class MyTextView extends android.support.v7.widget.AppCompatTextView {
  7. public MyTextView(Context context, AttributeSet attrs) {
  8. super(context, attrs);
  9. }
  10. public void setCharText(Character character){
  11. setText(String.valueOf(character));
  12. }
  13. }
  1. package com.loaderman.customviewdemo;
  2.  
  3. import android.animation.TypeEvaluator;
  4.  
  5. public class CharEvaluator implements TypeEvaluator<Character> {
  6. public Character evaluate(float fraction, Character startValue, Character endValue) {
  7. int startInt = (int)startValue;
  8. int endInt = (int)endValue;
  9. int curInt = (int)(startInt + fraction *(endInt - startInt));
  10. char result = (char)curInt;
  11. return result;
  12. }
  13. }

PropertyValuesHolder的ofobject函数的基本用法

效果:

PropertyValuesHolder学习的更多相关文章

  1. Android之动画的学习(转载)

    Android动画学习笔记-Android Animation   3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中 ...

  2. Android Animation学习(五) ApiDemos解析:容器布局动画 LayoutTransition

    Android Animation学习(五) ApiDemos解析:容器布局动画 LayoutTransition Property animation系统还提供了对ViewGroup中的View改变 ...

  3. Android Animation学习(四) ApiDemos解析:多属性动画

    Android Animation学习(四) ApiDemos解析:多属性动画 如果想同时改变多个属性,根据前面所学的,比较显而易见的一种思路是构造多个对象Animator , ( Animator可 ...

  4. Android动画学习笔记-Android Animation

    Android动画学习笔记-Android Animation   3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中 ...

  5. android动画学习

    android动画学习   转载自:http://www.open-open.com/lib/view/open1329994048671.html 3.0以前,android支持两种动画模式,twe ...

  6. 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代

    2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...

  7. Angular2学习笔记(1)

    Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...

  8. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  9. 消息队列——RabbitMQ学习笔记

    消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...

随机推荐

  1. Sqlserver2008[索引]

    SQL索引有两种:聚集索引.非聚集索引 目的:提高sqlserver 系统的性能,加快数据的查询速度与减少系统的响应时间 注意点:一个表只能有一个聚集索引,但可以有多个非聚集索引 索引的存储机制: 聚 ...

  2. Sql Server 2017 安装问题记录

    记录了我在虚拟机中安装Sql server 2017遇到的一些问题. 安装环境: Sql server 2017 + Windows Server 2012 R2 提供两个网上的下载链接: https ...

  3. subprocess模块笔记

    subprocess笔记 import subprocess subprocess.call("netstat -ano") #父进程等待子进程完成任务,返回执行结果和结束信息0或 ...

  4. 国内可用的python源

    国内可用的python源 清华大学:https://pypi.tuna.tsinghua.edu.cn/simple/ 阿里云:http://mirrors.aliyun.com/pypi/simpl ...

  5. python 杂记-unittest

    介绍单元测试的好文:https://mp.weixin.qq.com/s/njxc8GXSlc3z_RibK70ROg setUpModule/tearDownModule:在整个模块的开始和结束时被 ...

  6. vue2 自定义过滤器

  7. pycharm连接不上mysql数据库的解决办法

    问题描述 环境:ubuntu18.04,mysql5.7 今天在ubuntu下使用pycharm连接mysql,发现连接不上 这不是缺少驱动吗?下载之! 下好之后点进去 连接 点击test conne ...

  8. html与HTML5的区别

    文档的类型声明不同 html:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.or ...

  9. E:nth-last-child(n)

    E:nth-last-child(n) 语法: E:nth-last-child(n) { sRules } 说明: 匹配父元素的倒数第n个子元素E,假设该子元素不是E,则选择符无效.大理石平台维修 ...

  10. 学到了林海峰,武沛齐讲的Day23-完

    10月11号生了儿子,很高心..不好的是孩子住院了,14号出院,晚上外公去世了,15号赶回老家.....20号回贵阳,21号回公司办事....我要坚定的学习下去...以前几乎是卡在这里就学不下去了.加 ...