Вращение изображения Android - PullRequest
       2

Вращение изображения Android

2 голосов
/ 03 декабря 2010

Я хочу, чтобы изображение вращалось в течение неопределенного времени ........ что означает, что я хочу зациклить его.Это моя попытка, но, к сожалению, она не работает.Какие-либо предложения?

package com.android.test;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.widget.ImageView;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
import android.widget.ImageView.ScaleType;

public class imagerotate extends Activity {
 int x=1;
 int y=3;

     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         LinearLayout linearLayout = new LinearLayout(this);

         while (y==3) {
   Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);

   int width = bitmap.getWidth();
   int height = bitmap.getHeight();

   Matrix matrix = new Matrix();
   matrix.postRotate(x);

   Bitmap rotatedBitmap = Bitmap.createBitmap(bitmap, 0, 0, width,height, matrix, true);
   BitmapDrawable bmd = new BitmapDrawable(rotatedBitmap);

   ImageView imageView = new ImageView(this);
   imageView.setImageDrawable(bmd);
   imageView.setScaleType(ScaleType.CENTER);

   linearLayout.addView(imageView, new LinearLayout.LayoutParams(
     LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
   setContentView(linearLayout);

   x+=1;
   }
     }
 }

Ответы [ 3 ]

2 голосов
/ 03 декабря 2010

Вы не можете зацикливаться в главном потоке. Это немедленно сделает ваше приложение не отвечающим. Попробуйте использовать RotateAnimation - см. Ссылку для документации.

0 голосов
/ 17 января 2013

Вы можете использовать следующий код для поворота изображения в течение бесконечного периода времени.

Animation rotateAnim = new RotateAnimation(0, 360);
rotateAnim.setDuration(5000);
rotateAnim.setRepeatCount(Animation.INFINITE);
rotateAnim.setInterpolator(new AccelerateInterpolator());
rotateAnim.setRepeatMode(Animation.REVERSE);
img.startAnimation(rotateAnim);

Если вам нужно исправить общую продолжительность, скажите «total_duration». И «продолжительность» для одного цикла также определяется. Вы можете использовать приведенный выше код с пользовательским счетом как

int count = total_duration/duration;
Animation rotateAnim = new RotateAnimation(0, 360);
rotateAnim.setDuration(duration);
rotateAnim.setRepeatCount(count);
rotateAnim.setInterpolator(new AccelerateInterpolator());
rotateAnim.setRepeatMode(Animation.REVERSE);
img.startAnimation(rotateAnim);

Надеюсь, это поможет.

0 голосов
/ 17 января 2013

хорошо, вот правильный способ поворота изображения, пожалуйста, обратите внимание, что это будет вращать изображение случайным образом ... так как я использую генератор случайных чисел "как петля", чтобы повернуть изображение между 0 и 1000 градусами

    Random generator = new Random();
        int n = 10000;
        n = generator.nextInt(n);
        Matrix mtx = new Matrix();
        mtx.postRotate(n);
        bmp = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(),
                bmp.getHeight(), mtx, true);
        contentView.setImageBitmap(bmp);  

, а bmp - это растровое изображение, которое вы хотите повернуть.чтобы вы могли нормально поворачивать изображение, просто измените значение mtx.postRotate(n); на mtx.postRotate(90);, добавленное к кнопке или настройкам меню.тебе решать.веселит.редактировать: PS contentView относится к вашему ImageView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...