android怎么实现图片旋转

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android怎么实现图片旋转相关的知识,希望对你有一定的参考价值。

就是我现在有一个imageView里边放着一个地球的图。我想打开应用的时候地球自动旋转,请问怎么实现。我试着用了matrix没实现。
而且我的地球右边有一部分是超出屏幕外的。如图。

可以使用RotateAnimation动画实现,设定无限循环即可

代码如下

public class MyActivity extends Activity 

ImageView iv;
@Override
protected void onCreate(Bundle savedInstanceState) 
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_two);
iv = (ImageView)findViewById(R.id.image);
RotateAnimation animation = new RotateAnimation(0, 360);
animation.setDuration(100000);//设定转一圈的时间
animation.setRepeatCount(Animation.INFINITE);//设定无限循环
animation.setRepeatMode(Animation.RESTART);
iv.startAnimation(animation);


也可以自定义view继承于imageview,启动一个线程,在while循环里设置view的旋转角度


public class RotateView extends ImageView implements Runnable 

private float mCurDegree = 0;//当前旋转角度
public RotateView(Context context, AttributeSet attrs) 
super(context, attrs);
new Thread(this).start();


@Override
protected void onLayout(boolean changed, int left, int top, int right,
int bottom) 
super.onLayout(changed, left, top, right, bottom);
//设定旋转中心
setPivotX(getMeasuredWidth()/2);
setPivotY(getMeasuredHeight()/2);


@Override
public void run() 
while(true)
setRotation(mCurDegree);
mCurDegree += 5;
postInvalidate();
SystemClock.sleep(16);


在布局文件里使用RotateView代替imageview即可

参考技术A matrix.setRotate(-90); // 这里的角度你可以根据需要设置
Bitmap bm1 = Bitmap.createBitmap(bm, 0, 0, bmWidth, bmHeight, matrix, true);
mImageView.setImageBitmap(bm1);
mImageView.setScaleType(ScaleType.FIT_XY); //这个是让图片适应屏幕大小,但是不是按比例缩放的.
你试试!追问

我是想让他一直旋转。实现一个地球转动的效果。这个是静态的只转了某一个角度吧

追答

那你可以试试在一个死循环中让图片不断改变角度,比如在循环中设置 每次循环旋转90度.

本回答被提问者和网友采纳

以上是关于android怎么实现图片旋转的主要内容,如果未能解决你的问题,请参考以下文章

Android实现对图片的缩放剪切旋转存储

JAVA android 矩阵 怎么设置坐标

Android 旋转动画怎么动态设置旋转角度,用

css怎么设置图片定点旋转?

Android自定义控件之可平移、缩放、旋转图片控件

android 图片旋转