package com.loaderman.customviewdemo;

import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView; public class MainActivity extends AppCompatActivity {
private Button mButton;
private TextView mTv, mTv2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTv = (TextView)findViewById(R.id.tv);
findViewById(R.id.start_anim).setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
PropertyValuesHolder rotationHolder = PropertyValuesHolder.ofFloat("Rotation", 60f, -60f, 40f, -40f, -20f, 20f, 10f, -10f, 0f);
PropertyValuesHolder alphaHolder = PropertyValuesHolder.ofFloat("alpha", 0.1f, 1f, 0.1f, 1f);
ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(mTv, rotationHolder, alphaHolder);\\实例入口
animator.setDuration(3000);
animator.start();
}
});
}
}

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


package com.loaderman.customviewdemo;

import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.animation.AccelerateInterpolator; public class MainActivity extends AppCompatActivity {
private MyTextView mTv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTv = findViewById(R.id.mTv);
findViewById(R.id.start_anim).setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
/**
* ofObject使用
*/
PropertyValuesHolder charHolder = PropertyValuesHolder.ofObject("CharText",new CharEvaluator(),new Character('A'),new Character('Z'));
ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(mTv, charHolder);
animator.setDuration(3000);
animator.setInterpolator(new AccelerateInterpolator());
animator.start();
}
});
}
}
package com.loaderman.customviewdemo;

import android.content.Context;
import android.util.AttributeSet; public class MyTextView extends android.support.v7.widget.AppCompatTextView {
public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void setCharText(Character character){
setText(String.valueOf(character));
}
}
package com.loaderman.customviewdemo;

import android.animation.TypeEvaluator;

public class CharEvaluator implements TypeEvaluator<Character> {
public Character evaluate(float fraction, Character startValue, Character endValue) {
int startInt = (int)startValue;
int endInt = (int)endValue;
int curInt = (int)(startInt + fraction *(endInt - startInt));
char result = (char)curInt;
return result;
}
}

PropertyValuesHolder的ofobject函数的基本用法

效果:

最新文章

  1. php常用函数file
  2. 使用Hive或Impala执行SQL语句,对存储在Elasticsearch中的数据操作
  3. 【GoLang】与或非 异或操作
  4. Microsoft SqlServer2008技术内幕:T-Sql语言基础-读书笔记1
  5. sessionapplicationStruts2中访问web元素
  6. Java解析XMl文件之SAX和DOm方法
  7. PDF判断打印是A4还是B5
  8. Qt中的串口编程之三
  9. Sql_Case_When用法
  10. ZOJ1181 Word Amalgamation 字符串 排序查找
  11. 使用脚本监控windows服务的方法
  12. Leetcode题解(30)
  13. ListView常见的优化方式简述
  14. MySQL 设置root密码报错:mysqladmin: connect to server at &#39;localhost&#39; failed
  15. Elastic 开发篇 javaAPI(4)
  16. 关于Jonathan S. Weissman与RIT(罗切斯特理工学院,位于纽约)
  17. sed 用法记录
  18. 【Nodejs】ExpressのRequestとResponseの内容
  19. 第一个ASP.NET Web API (C#)程序
  20. 磁盘IO概念及优化入门知识

热门文章

  1. P2921 [USACO08DEC]在农场万圣节[SCC缩点]
  2. Android adb的一些用法
  3. 02-Elenment 引入使用
  4. CSP模拟赛 Lost My Music(二分,可回退化栈)
  5. BZOJ3331 压力 (圆方树+树上差分)
  6. Python 装饰器实现单列模式
  7. Greenplum 监控segment是否正常
  8. Mxnet框架搭建
  9. 数据结构实验之图论七:驴友计划【迪杰斯特拉算法】(SDUT 3363)
  10. Python中匹配IP的正则表达式