android动画-Property Animation

转载注明出处: http://blog.csdn.net/forwardyzk/article/details/42741953 

Property Animation 属性动画,这个是在Android 3.0中才引进的。

    Property Animation其改变的是对象属性对应的值,应用于任何对象,而Tween Animation更改的是绘画的效果,其属性值是没有变化的。

ObjectAnimator:更改对象的属性值
  使用方法:
  ObjectAnimator translationRight = ObjectAnimator.ofFloat(m_tv, "X",width);
  translationRight.setDuration(1500);
  translationRight.start();
  这是一个平移的效果,ObjectAnimator.ofFloat(m_tv, "X",width);第一个参数是:对象 第二个参数:该对象的属性,属性有必须有对应的getX()和setX()方法,第三个参数:一个可变参数的值
  如果只写了一个值,那么就默认从当前的值变为填写的值,如果填写了多个,就按照填写的顺序做相应的变化,
  setDuration():设置运行的时间,start():开启
  
AnimatorSet:将多个ObjectAnimator的效果一直执行或则按照先后顺序执行
        ObjectAnimator translationRight = ObjectAnimator.ofFloat(m_tv, "X",width);
ObjectAnimator translationLeft = ObjectAnimator.ofFloat(m_tv, "X", 0f);
ObjectAnimator translationDown = ObjectAnimator.ofFloat(m_tv, "Y",height);
ObjectAnimator translationUp = ObjectAnimator.ofFloat(m_tv, "Y", 0);
AnimatorSet as = new AnimatorSet();
as.play(translationRight).before(translationLeft);
as.play(translationRight).with(translationDown);
as.play(translationLeft).with(translationUp);
paly() with()  before()  after() 设置执行的顺序 start()开启

下面代码的介绍请参考:  http://www.open-open.com/lib/view/open1329994048671.html
ValueAnimator,TypeEvalutors,TimeInterplator,Keyframes



部分示例代码:

<span style="font-family:SimSun;font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/girl" />

    <EditText
        android:id="@+id/edit_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp" />

</LinearLayout></span>


实现:
<span style="font-family:SimSun;font-size:18px;">private void initImageAnimationSet() {
		ImageView image = (ImageView) findViewById(R.id.image);
		ObjectAnimator obOutX = ObjectAnimator.ofFloat(image, "X", 200);
		ObjectAnimator obOutY = ObjectAnimator.ofFloat(image, "Y", 200);
		ObjectAnimator obInX = ObjectAnimator.ofFloat(image, "X", 0);
		ObjectAnimator obInY = ObjectAnimator.ofFloat(image, "Y", 0);
		final AnimatorSet set = new AnimatorSet();
		set.play(obOutX).with(obOutY);
		set.play(obInX).with(obInY);
		set.play(obOutX).before(obInX);
		image.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				set.start();

			}
		});
	}

	/**
	 * ObjectAnimator使用
	 */
	private void initEditObjectAnimator() {
		EditText edt = (EditText) findViewById(R.id.edit_text);
		final ObjectAnimator translationRight = ObjectAnimator.ofFloat(edt,
				"X", 0, 50, -10, 40, -5, 30, -3, 20, -1, 10, 0);
		translationRight.setDuration(1500);

		edt.addTextChangedListener(new TextWatcher() {

			@Override
			public void onTextChanged(CharSequence s, int start, int before,
					int count) {

			}

			@Override
			public void beforeTextChanged(CharSequence s, int start, int count,
					int after) {

			}

			@Override
			public void afterTextChanged(Editable s) {
				if (TextUtils.isEmpty(s.toString())) {
					translationRight.start();
				}
			}
		});
	}</span>


案例代码下载: http://download.csdn.net/detail/forwardyzk/8365189

效果图:



  
  

 



   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值