RotateDrawable Programmatically in android
How can i give fromFegrees
, toDegrees
and android:color="#000000"
programmatically?
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item >
<rotate
android:fromDegrees="45"
android:toDegrees="45"
android:pivotX="-40%"
android:pivotY="87%" >
<shape
android:shape="rectangle" >
<stroke android:color="@android:color/transparent" android:width="10dp"/>
<solid
android:color="#000000" />
</shape>
</rotate>
</item>
</layer-list>
i am using this xml in background of view.
i have to create triangle programmatically. so need to create RotationDrawable programmatically.
这里是一个很好的解决方案,为imageView放置一个旋转的drawable:
RotateAnimation anim = new RotateAnimation(0.0f, 360.0f , Animation.RELATIVE_TO_SELF, .5f, Animation.RELATIVE_TO_SELF, .5f);
anim.setInterpolator(new LinearInterpolator());
anim.setRepeatCount(Animation.INFINITE);
anim.setDuration(3000);
iv.setAnimation(anim);
iv.startAnimation(anim);
您可以使用矩阵以编程方式旋转图像:
rotationMatrix = new Matrix();
// Set the scale type of your ImageView to "Matrix"
yourImageView.setScaleType(ScaleType.MATRIX);
// to set the rotation to a specific degree:
rotationMatrix.setRotate(degrees);
// or add some degrees to the current rotation
rotationMatrix.postRotate(degrees);
// apply matrix to your ImageView
yourImageView.setImageMatrix(rotationMatrix);
I know very late, but for those who search for an answer in the future.
Suppose this is your layer-list
:
layer_list.xml :
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/rotate_drawable">
<rotate
android:duration="4000"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="720">
<shape
android:innerRadius="20dp"
android:shape="ring"
android:thickness="4dp"
android:useLevel="false">
<size
android:width="48dp"
android:height="48dp" />
<gradient
android:endColor="@android:color/white"
android:startColor="#00ffffff"
android:type="sweep"
android:useLevel="false" />
</shape>
</rotate>
</item>
</layer-list>
So your java
code can be like below:
final LayerDrawable layerDrawable =
(LayerDrawable) getResources().getDrawable(R.drawable.layer_list);
final RotateDrawable rotateDrawable =
(RotateDrawable) layerDrawable.findDrawableByLayerId(R.id.rotate_drawable);
final ObjectAnimator objectAnimator = ObjectAnimator.ofInt(rotateDrawable, "level", 0, 10000)
.setDuration(4000);
objectAnimator.setRepeatCount(ObjectAnimator.INFINITE);
objectAnimator.setInterpolator(new LinearInterpolator());
objectAnimator.start();
链接地址: http://www.djcxy.com/p/19294.html
上一篇: 识别数组对象