Повернуть ImageButton при изменении ориентации

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


person Meeth    schedule 15.05.2014    source источник
comment
проверьте это обсуждение   -  person vITs    schedule 15.05.2014
comment
RotateAnimation ?   -  person Blackbelt    schedule 15.05.2014
comment
@vits, что сообщение относится к изменению ориентации изображения из галереи. Мой вопрос касается ImageButton, который должен корректироваться при изменении ориентации устройства.   -  person Meeth    schedule 15.05.2014
comment
затем вы можете проверить RotateAnimation   -  person vITs    schedule 15.05.2014


Ответы (1)


попробуйте этот фрагмент кода.

rotate.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<rotate

android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="0"
android:duration="2000" />

</set>

rorate_anticlock.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<rotate
android:fromDegrees="0"
android:toDegrees="-360"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="0"
android:duration="2000" />
</set>

для проверки ориентации телефона используйте этот код

int orientation =this.getResources().getConfiguration().orientation;

полный код для MainActivity.java:

public class MainActivity  extends Activity{

/* (non-Javadoc)
 * @see android.app.Activity#onCreate(android.os.Bundle)
 */
ImageButton image_btn;

Animation ranim_clockwise, ranim_anticlockwise;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    image_btn= (ImageButton)findViewById(R.id.imageButton1);
    ranim_clockwise = AnimationUtils.loadAnimation(this,R.anim.rotate);
    ranim_anticlockwise = AnimationUtils.loadAnimation(this,R.anim.rotate_anticlock);
    int orientation =this.getResources().getConfiguration().orientation;
    if(orientation==1){ // portrait mode
        image_btn.setAnimation(ranim_clockwise);
    }
    if(orientation==2){  //landscape mode
        image_btn.setAnimation(ranim_anticlockwise);
    }

}

}

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

person Irshad Khan    schedule 15.05.2014
comment
После поворота кнопка изображения возвращается в исходное положение. Мне нужно, чтобы кнопка изображения оставалась в новом положении. - person Meeth; 15.05.2014
comment
@Meeth Я отредактировал свой код, добавив xml-файл с вращением против часовой стрелки и установив его в другом режиме для поворота кнопки изображения. - person Irshad Khan; 15.05.2014
comment
Я использовал кнопку изображения для пользовательского приложения камеры. Моя цель состояла в том, чтобы повернуть кнопку изображения, когда пользователь поворачивает устройство, характерное для режимов портретного, ландшафтного, обратного_портретного и обратного_ландшафтного, как по часовой стрелке, так и против часовой стрелки. - person Meeth; 16.05.2014
comment
@Meeth измените файл rotate.xml в соответствии с вашими потребностями, проверьте ориентацию телефона и примените определенный поворот к кнопке изображения. - person Irshad Khan; 17.05.2014