2013-05-27 6 views
1

Я пытаюсь повернуть изображение в некоторой степени и заполнить фон до красного цвета. Например, у меня есть изображение и вы хотите повернуть минутку до 15 минут (45 градусов) и показать, что четверть круга с красным цветом.как повернуть изображение с цветом фона?

Я использовал следующий код, поворачивая свой поворот на некоторый угол, но я не могу заполнить цвет фона. Пожалуйста помоги.

RotateAnimation rotateAnimation = new RotateAnimation(
       (1 - 1) * 6, 10 * 6, 
       Animation.RELATIVE_TO_SELF, 0.5f, 
       Animation.RELATIVE_TO_SELF, 0.5f); 

     rotateAnimation.setInterpolator(new LinearInterpolator()); 
     rotateAnimation.setDuration(5000); 
     rotateAnimation.setFillEnabled(true); 
     rotateAnimation.setFillBefore(true); 
     rotateAnimation.setBackgroundColor(Color.RED); 
     orgClockImage.startAnimation(rotateAnimation); 

Благодаря

+0

Вы используете listview? если эта ссылка может помочь http://stackoverflow.com/questions/15593152/rotating-images-in-listview –

+0

Нет. Я не использую listview. У меня есть изображение, такое как часы, и я хочу повернуть минутку. – Monali

ответ

0

вы можете вращать растровое изображение с матрицы также.

public class RotateBitmap { 

public static final String TAG = "RotateBitmap"; 
private Bitmap     mBitmap; 
private int      mRotation; 
private int      mWidth; 
private int      mHeight; 
private int      mBitmapWidth; 
private int      mBitmapHeight; 

public RotateBitmap(Bitmap bitmap, int rotation) 
{ 
    mRotation = rotation % 360; 
    setBitmap(bitmap); 
} 

public void setRotation(int rotation) 
{ 
    mRotation = rotation; 
    invalidate(); 
} 

public int getRotation() 
{ 
    return mRotation % 360; 
} 

public Bitmap getBitmap() 
{ 
    return mBitmap; 
} 

public void setBitmap(Bitmap bitmap) 
{ 
    mBitmap = bitmap; 

    if (mBitmap != null) { 
     mBitmapWidth = bitmap.getWidth(); 
     mBitmapHeight = bitmap.getHeight(); 
     invalidate(); 
    } 
} 

private void invalidate() 
{ 
    Matrix matrix = new Matrix(); 
    int cx = mBitmapWidth/2; 
    int cy = mBitmapHeight/2; 
    matrix.preTranslate(-cx, -cy); 
    matrix.postRotate(mRotation); 
    matrix.postTranslate(cx, cx); 

    RectF rect = new RectF(0, 0, mBitmapWidth, mBitmapHeight); 
    matrix.mapRect(rect); 
    mWidth = (int)rect.width(); 
    mHeight = (int)rect.height(); 
} 

public Matrix getRotateMatrix() 
{ 
    Matrix matrix = new Matrix(); 
    if (mRotation != 0) { 
     int cx = mBitmapWidth/2; 
     int cy = mBitmapHeight/2; 
     matrix.preTranslate(-cx, -cy); 
     matrix.postRotate(mRotation); 
     matrix.postTranslate(mWidth/2, mHeight/2); 
    } 

    return matrix; 
} 

public int getHeight() 
{ 
    return mHeight; 
} 

public int getWidth() 
{ 
    return mWidth; 
} 

public void recycle() 
{ 
    if (mBitmap != null) { 
     mBitmap.recycle(); 
     mBitmap = null; 
    } 
} 
} 
+0

не работал для меня – Monali

Смежные вопросы