如何以编程方式获取RotateDrawable的轴?

时间:2012-04-01 14:06:52

标签: android xml drawable

我想使用一系列RotateDrawable个对象为复合摆设置动画(因此第二个RotateDrawable的轴心点必须“附加”到第一个RotateDrawable上的一个点上)。这意味着我需要计算旋转发生后旋转点的位置。似乎没有获取或设置RotateDrawable的支点的方法;当事物被夸大时,我不能想到一种方法来做这件事。

1 个答案:

答案 0 :(得分:0)

在通货膨胀期间从XML获取枢轴可以通过类似于:

的方式完成
//r is a Resources object containing the layout
//id is an integer from R.drawable
XmlPullParser parser = r.getXml(id);
AttributeSet attrs = Xml.asAttributeSet(parser);
float pivotX = attrs.getAttributeFloatValue("http://schemas.android.com/apk/res/android", "pivotX", 0.5f);
float pivotY = attrs.getAttributeFloatValue("http://schemas.android.com/apk/res/android", "pivotY", 0.5f);

//d is a RotateDrawable
d.inflate(r, parser, attrs);

该属性应该介于0和1之间(如果存在),如果属性不存在,则0.5f是Android设置的默认值。

http://idunnolol.com/android/drawables.html#rotate

重要提示

我意识到让android:fromDegreesandroid:toDegrees变得同样重要,好像和我一样,你使用onLevelChanged(int)来获取轮换数量,你需要知道如何你实际上得到了很多轮换。相同的方法适用于这些属性。默认值为0.0f和360.0f(以度为单位)。级别介于0到10,000之间,0表示fromDegrees,10,000表示toDegrees