5

Voglio ruotare ImageButton quando l'orientamento del dispositivo cambia. Dovrebbe ruotare per 90, 180, 270 e 360 ​​angoli e il relativo layout dovrebbe rimanere fisso in modo che solo i pulsanti si muovano. Come si può fare? Ho fatto delle ricerche ma non ho trovato nulla che potesse aiutarmi.Come ruotare i pulsanti quando l'orientamento cambia senza ruotare il layout?

+0

È necessario suddividere l'attività sui pezzi: 1 interrompere la ricreazione dell'attività a rotazione. 2. Cogliere la rotazione. 3. Rotazione della vista .... Ognuno di questi pezzi ha già una risposta, qui su SO ... È difficile credere che non hai trovato nulla ... – Selvin

+0

Non sapevo come dividere il mio domanda in quei pezzi. Sono un neofita di Android e Java. Ho ancora un problema perché il mio orientamento di attività è fisso e devo rilevare l'orientamento con l'accelerometro e non ho idea di come farlo. –

risposta

2

È possibile rilevare un cambio di orientamento sovrascrivendo come questo:

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    //call your rotate method here 
} 

Poi, una volta a rilevare l'evento di modifica dell'orientamento, è possibile eseguire una rotazione animata su un pulsante come questo:

public void rotateView(View view) { 
    Button button = (Button) view.findViewById(R.id.some_button); 
    RotateAnimation rotateAnimation = new RotateAnimation(0, 360); 
    rotateAnimation.setDuration(2000); 
    button.startAnimation(rotateAnimation); 
} 

È possibile impostare l'angolo iniziale e finale nel costruttore di RotateAnimation, quindi impostare la durata della durata dell'animazione (in millisecondi). Quindi chiami semplicemente startAnimation() sulla vista che desideri animare.

+0

Grazie, @drschultz, la tua risposta è ottima, il problema è che il mio orientamento delle attività è fisso e onConfigurationChanged dà sempre lo stesso risultato. L'avrei detto se avessi saputo come affrontare questo problema. Qualche idea su come rilevare l'orientamento con gli assi xey con SensorEventListener? –

+1

Se l'orientamento dello schermo è bloccato e non può essere ruotato, sfortunatamente è necessario calcolare i propri valori di rotazione utilizzando i dati del sensore. È qui che le cose diventano piuttosto complesse. Puoi leggere [Sensori Android nei documenti qui] (http://developer.android.com/guide/topics/sensors/sensors_overview.html), e per vedere alcuni esempi di codice, puoi trovare alcune buone risposte su Stack Overflow come [questa domanda qui] (http://stackoverflow.com/questions/27106607/get-rotation-and-display-in-degrees). Ma vorrei aprire una nuova domanda se hai ancora bisogno di aiuto con la roba del sensore. – NoChinDeluxe

+0

Per quanto riguarda questa domanda, le chiedo cortesemente di accettare la mia risposta poiché risponde alla sua domanda originale (e potrebbe aiutare gli altri in futuro con una domanda simile). Quindi, puoi aprire una nuova domanda se hai bisogno di aiuto su come implementare i dati del sensore. – NoChinDeluxe