2016-05-05 1 views
1

enter image description hereBild drehen Wie Unten Bild

Ich möchte zwei differant Imageview als Bild gezeigt, drehen

+0

versuchen Piccaso Bibliothek für drehen –

+0

können Sie Demo-Bild –

+0

bitte erklären, mehr in Frage und was Sie wollen schreiben? Sie müssen mit der Animation fertig sein. –

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 Arbeit
import 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