Ruotare una vista in Android

Ho un bottone che voglio mettere su un angolo di 45 gradi. Per qualche motivo non posso far funzionare questo.

Può qualcuno fornire il codice per realizzare questo?

  • Riconoscimento del viso su Android
  • Come rilevare IBeacon in android senza utilizzare alcuna libreria
  • Come sapere se un dispositivo Android dispone di Open Access Mode
  • Crea tutti i binari per diversi negozi di applicazioni Android in un solo passaggio
  • le caselle di controllo non vengono selezionate in recyclerView dopo lo scorrimento
  • Android emulator-5554 offline
  • Come modificare il colore del vector assegnato a ImageButton in un RecyclerView?
  • come get l'icona di applicazioni in esecuzione su android in modo programmato
  • Come get il colore di Pixel in Android?
  • Vista personalizzata della barra degli strumenti
  • differenze API API setShadowLayer
  • WifiConfiguration abilita la networking in Lollipop
  • 9 Solutions collect form web for “Ruotare una vista in Android”

    Potresti creare un'animation e applicarla alla visualizzazione dei pulsanti. Per esempio:

    // Locate view ImageView diskView = (ImageView) findViewById(R.id.imageView3); // Create an animation instance Animation an = new RotateAnimation(0.0f, 360.0f, pivotX, pivotY); // Set the animation's parameters an.setDuration(10000); // duration in ms an.setRepeatCount(0); // -1 = infinite repeated an.setRepeatMode(Animation.REVERSE); // reverses each repeat an.setFillAfter(true); // keep rotation after animation // Aply animation to image view diskView.setAnimation(an); 

    API 11 ha aggiunto un metodo setRotation () a tutte le viste.

    Estendere la class TextView e sovrascrivere il metodo onDraw() . Assicurarsi che la vista padre sia abbastanza grande per gestire il button ruotato senza tagliarla.

     @Override protected void onDraw(Canvas canvas) { canvas.save(); canvas.rotate(45,<appropriate x pivot value>,<appropriate y pivot value>); super.onDraw(canvas); canvas.restore(); } 

    Ho usato la linea semplice nel mio codice e funziona:

     myCusstomView.setRotation(45); 

    Spero che funzioni per te.

    L'applicazione di un'animation di rotazione (senza durata, quindi nessun effetto di animation) è una soluzione più semplice di call View.setRotation () o di ignorare il metodo View.onDraw.

     // substitude deltaDegrees for whatever you want RotateAnimation rotate = new RotateAnimation(0f, deltaDegrees, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); // prevents View from restoring to original direction. rotate.setFillAfter(true); someButton.startAnimation(rotate); 

    Una row in XML


     <View android:rotation="45" ... /> 

    Risposte di Joininig @ Rudi e @ Pete. Ho creato un RotateAnimation che mantiene le funzionalità dei pulsanti anche dopo la rotazione.

    il metodo setRotation () conserva le funzionalità dei pulsanti.

    Esempio di codice:

     Animation an = new RotateAnimation(0.0f, 180.0f, mainLayout.getWidth()/2, mainLayout.getHeight()/2); an.setDuration(1000); an.setRepeatCount(0); an.setFillAfter(false); // DO NOT keep rotation after animation an.setFillEnabled(true); // Make smooth ending of Animation an.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) {} @Override public void onAnimationRepeat(Animation animation) {} @Override public void onAnimationEnd(Animation animation) { mainLayout.setRotation(180.0f); // Make instant rotation when Animation is finished } }); mainLayout.startAnimation(an); 

    mainLayout è un field (LinearLayout)

    La visualizzazione di rotate() con la rotate() non influisce sulla dimensione misurata della vista. Solo il rendering della vista è influenzato e come risultato la visualizzazione in rotazione lo renderà tagliato o non adattato al layout padre. Questa libreria lo risolve comunque:

    https://github.com/rongi/rotate-layout

    immettere qui la descrizione dell'immagine

    @ La risposta di Ichorus è corretta per le visualizzazioni, ma se si desidera disegnare rettangoli ruotati o text, è ansible effettuare quanto segue nel richiamo di onDraw (o onDispatchDraw) per la tua vista:

    (si noti che theta è l'angolo dall'asse x della rotazione desiderata, il perno è il punto che rappresenta il punto intorno al quale vogliamo ruotare il rettangolo e orizzontale è la posizione di "rect" prima che sia stata ruotata)

     canvas.save(); canvas.rotate(theta, pivot.x, pivot.y); canvas.drawRect(horizontalRect, paint); canvas.restore(); 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.