2017-09-03 4 views
0

Ich habe ein Bild. Ich brauche es um einen kleinen Winkel drehbar an seiner unteren linken Ecke zu drehen. Diese Animation funktioniert, wenn ich auf den Bildschirm tippe. Das Bild erscheint dort und rotiert. Für verschiedene Positionen ist der Drehpunkt jedoch konstant. Wie kann ich Pivot für jeden Fall programmgesteuert dynamisch festlegen?Wie man dynamische Drehpunkte für Rotationsanimation setzt

?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shareInterpolator="false"> 
    <rotate 
     android:duration="500" 
     android:interpolator="@android:anim/linear_interpolator" 
     android:pivotY="100%" 
     android:pivotX="0%" 
     android:repeatCount="0" 
     android:toDegrees="10"/> 
</set> 

Gibt es eine Möglichkeit wir den schwenkt Wert mit dem Wert, den wir getX() und getY() geben?

+0

Wie machst du die Rotation Animation? Je nachdem, was Sie dazu verwenden, erhalten Sie unterschiedliche Antworten. Wenn Sie dies über eine Matrix tun, können Sie den Ursprung vor dem Anwenden der Rotationsmatrix auf den gewünschten Punkt als Drehpunkt übersetzen. –

+0

Ich habe nicht versucht, Matrix zu verwenden. Jetzt werde ich das tun. Ich habe die Xml verwendet, um die Rotation durchzuführen –

Antwort

0

Haben Sie die Antwort. getan

var screenH=Resources.getSystem().getDisplayMetrics().heightPixels 
var screenH=Resources.getSystem().getDisplayMetrics().widthPixels 

var x= ("x value of your pivot)/screenW 

var y= ("y value of your pivot)/screenH 

var rotateAnim=RotateAnimation(0.0f , 20.0f , Animation.RELATIVE_TO_PARENT , x , 
Animation.RELATIVE_TO_PARENT , y) 

rotateAnim.setDuration(1000) 
rotateAnim.setFillAfter(true) 

view.startAnimation(rotateAnim)