View[7] Property

【参考链接】

setTranslationX谈属性动画和view动画的区别 http://blog.csdn.net/yanzi1225627/article/details/47850471

 

Android 3.0/API 11开始,AndroidView增加了一些Property。通过改变这些Property也能够改变View的显示效果。

这些Property包括

alpha,透明度

translationXtranslationY,位移,还有xy表示经过位移以后的左上角坐标,即x=left+translationXy=top+translationY

rotationrotationXrotationY,旋转,rotation2D旋转,rotationXrotaionY3D旋转

scaleXscaleY

其中后2个还涉及到基准点,可以通过setPivotX()setPivotY()来设置,其坐标值是相对于自身初始状态左上点的坐标。

 

需要注意的是虽然改变了View的显示效果,但是并不是由重新onDraw()引起的

应该是涉及到Choreographer机制

 

以如下初始状态为例


部分函数的效果如下

tv.setTranslationX(100);
tv.setTranslationY(100);

 


tv.setPivotX(100);
tv.setPivotY(100);
tv.setRotation(45);



 

tv.setRotationX(45);



并且这些函数的效果是相互独立的,如下同时改变translationrotation

tv.setTranslationX(300);
tv.setTranslationY(300);

tv.setPivotX(100);
tv.setPivotY(100);
tv.setRotationX(45);


可以理解为pivot的值为相对于初始状态的比例值,当translation发生改变时,rotation旋转的基准点依然是该比例所在的点

 

在实验的过程中发现,这些函数也会对getHitRect()getLocationInWindow()的结果造成影响。

 

View的这些方法只有在API 11以上才提供,JakeWharton大神的NineOldAndroids开源项目(http://nineoldandroids.com/)提供了ViewHelper类,使得在低版本上也可以调用这些方法。

通过如下方式来使用

com.nineoldandroids.view.ViewHelper.setRotation(tv, 45);

其采用了代理模式,当手机系统

API 11及以上时,直接调用View的方法

而在API 11以下时,自然无法修改根本不存在的属性,显示效果其实是通过TweenAnimation来实现的。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值