7

我如何以fromFegrees编程方式toDegrees给予?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>

我在视图背景中使用这个 xml。

我必须以编程方式创建三角形。所以需要以编程方式创建 RotationDrawable。

4

3 回答 3

6

here's a nice solution for putting a rotated drawable for an imageView:

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);
于 2014-02-27T13:25:21.433 回答
0

You can use a Matrix to rotate Images programmatically:

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);
于 2014-02-27T13:24:06.613 回答
0

我知道很晚,但对于那些在未来寻找答案的人。

假设这是你的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>

所以你的java代码可以如下所示:

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();
于 2017-11-27T18:32:25.013 回答