1
A
Antwort
0
Der folgende Code wird
activity_main.xml :
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:src="@drawable/wheel"
android:contentDescription="@string/wheel" />
</RelativeLayout>
Java-Code
in Image auf dem Touch-basierte Arbeitimport android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.animation.RotateAnimation;
import android.widget.ImageView;
public class MainActivity extends Activity implements OnTouchListener{
private ImageView wheel;
private double mCurrAngle = 0;
private double mPrevAngle = 0;
ImageView bask;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wheel=(ImageView)findViewById(R.id.imageView1);
wheel.setOnTouchListener(this);
}
@Override
public boolean onTouch(final View v, MotionEvent event) {
final float xc = wheel.getWidth()/2;
final float yc = wheel.getHeight()/2;
final float x = event.getX();
final float y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
wheel.clearAnimation();
mCurrAngle = Math.toDegrees(Math.atan2(x - xc, yc - y));
break;
}
case MotionEvent.ACTION_MOVE: {
mPrevAngle = mCurrAngle;
mCurrAngle = Math.toDegrees(Math.atan2(x - xc, yc - y));
animate(mPrevAngle, mCurrAngle, 0);
System.out.println(mCurrAngle);
break;
}
case MotionEvent.ACTION_UP : {
mPrevAngle = mCurrAngle = 0;
break;
}
}
return true;
}
private void animate(double fromDegrees, double toDegrees, long durationMillis) {
final RotateAnimation rotate = new RotateAnimation((float) fromDegrees, (float) toDegrees,
RotateAnimation.RELATIVE_TO_SELF, 0.5f,
RotateAnimation.RELATIVE_TO_SELF, 0.5f);
rotate.setDuration(durationMillis);
rotate.setFillEnabled(true);
rotate.setFillAfter(true);
wheel.startAnimation(rotate);
System.out.println(mCurrAngle);
}
}
ausführlicher siehe here
+0
Ich habe bereits beide Seitenrotation erledigt. Aber mein Problem ist das Image habe zwei Punkte links und rechts beide Imageview Line, jetzt möchte ich zwei Punkte behalten ImageView A rechte Seite und ImageView B linke Seite Punkt statisch und eine andere Seite von Imageview A Linke Seite und ImageView B Rechte Seite nach oben drehen –
0
Mit Picasso Bibliothek, das ist ein Stück Kuchen geworden:
Picasso.with(context).load(R.drawable.xxx) //Your image source
.rotate(45f, 200f, 100f) // rotation angle, center/pivot of rotation
.into(imageView); //an ImageView instance
versuchen Piccaso Bibliothek für drehen –
können Sie Demo-Bild –
bitte erklären, mehr in Frage und was Sie wollen schreiben? Sie müssen mit der Animation fertig sein. –