RotateDrawable Programmatically in android

How can I programmatically denote fromFegrees , toDegrees and android:color="#000000" ?

 <?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 the background.

I need to create a triangle programmatically. therefore, you need to programmatically create a RotationDrawable.

+7
android animationdrawable
source share
3 answers

here's a good rotation solution with rotatability for the image:

 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); 
+3
source share

You can use Matrix to programmatically rotate images:

 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); 
0
source share

I know very late, but for those who are looking 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 might look like this:

 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(); 
0
source share

All Articles