2012-03-02 3 views
0

У меня есть колесо, я хочу повернуть его на свое место. мой код вращает это изображение, но его изменение изменится. Я хочу сохранить это изображение на месте исправления.Как повернуть образ циферблата на его посту.

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    dialImage = (ImageView) findViewById(R.id.inner_dial); 

    float rotation = (float) Math.toDegrees(90); 
    Matrix matrix = new Matrix(); 
    matrix.postRotate(rotation); 

    bMap = BitmapFactory.decodeResource(getResources(), 
      R.drawable.inner_temp); 

    dialImage.setBackgroundResource(0); 

    Bitmap bMapRotate = Bitmap.createBitmap(bMap, 0, 0, bMap.getWidth(), 
      bMap.getHeight(), matrix, true); 
    dialImage.setImageBitmap(bMapRotate); 

} 

мой XML-файл:

<?xml version="1.0" encoding="utf-8"?> 

<ImageView android:background="@drawable/inner_temp" 
    android:layout_height="wrap_content" android:id="@+id/inner_dial" 
    android:layout_width="wrap_content" android:layout_alignParentLeft="true" /> 

ответ

0

Сохраните этот rotate.xml в папке anim в res.

<?xml version="1.0" encoding="UTF-8"?> 
<rotate 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fromDegrees="0" 
    android:toDegrees="360" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:repeatCount="infinite" 
    android:duration="1200" 
    android:interpolator="@android:anim/linear_interpolator" /> 

Начало анимации:

dialImage.startAnimation(AnimationUtils.loadAnimation(this, R.anim.rotate)); 

EDIT:

Чтобы использовать анимацию поворота prgrammatically:

RotateAnimation anim = new RotateAnimation(fromDegrees, toDegrees, pivotXType, pivotXValue, pivotYType, pivotYValue); 
dialImage.startAnimation(anim); 

Следуйте этому link для подробного описания.

+0

спасибо @Vineet ,,, но мое значение степени будет изменено, поэтому я не могу использовать rotate.xml – Andy

+0

Я не мог понять, что вы подразумеваете под моим значением степени, которое будет изменено, t хотите использовать угол поворота 360, затем измените его или если ваш угол изменится в будущем, тогда вы можете использовать программно. –

+0

Yaa @Vineet мой угол изменится .. так что я вращаю изображение прагматично .. но на diffrent-2 изображение угла движется по исходному месту. – Andy

1

Проблема является точкой отсчета системы координат. Случается, что ваше изображение поворачивается на 90 градусов вокруг этой контрольной точки. Чтобы повернуть изображение на место, вам необходимо соответствующим образом изменить положение изображения, чтобы центр изображения и контрольная точка системы координат были идентичны.

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