像图片一样旋转图像

时间:2016-05-05 12:17:10

标签: android animation

enter image description here

我想旋转两个不同的imageview显示为图片

2 个答案:

答案 0 :(得分:0)

以下代码将根据您在ImageView中的触摸工作

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代码

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);
        }
       }

更多详情请参阅here

答案 1 :(得分:0)

使用Picasso库,这变得轻而易举:

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