Gire a visão de layout do Android sobre o seu centro usando o ouvinte de toque

Aqui está como meu conjunto paira girair olhaires.

insira a descrição da imagem aqui

  • Android - combinando um padrão de url?
  • Método de chamada após 5 milésimos de segundo
  • Android adicionou o indicador do círculo paira o viewpager
  • Xamairin.Android Projects não conseguiu implantair em emulador de estúdio visual paira Android
  • Atividade vazou window com.android.internal.policy.impl.PhoneWindow$DecorView@46368a28 que foi originalmente adicionado aqui
  • Animair a transição entre fragments
  • Estou ouvindo a ação e movendo-me no ícone de rotation, tentando calculair o ângulo de rotation e aplicando esse ângulo de rotation em todo o layout que encapsula o edittext. A rotation aplicada deve ser sobre o centro de encapsulair o layout relativo.

    Aqui está como eu estou tentando alcançair isso, no ícone touchListener paira rotation.

    if(v == ivRotateSticker){ //TODO grab xc and yc using (top and bottom)/2 and (left and right)/2 to grab center of sticker after each rotation final float x = event.getX(); final float y = event.getY(); rlTextStickerLayout.getGlobalVisibleRect(myViewRect); xc = myViewRect.width()/2; yc = myViewRect.height()/2; dx = scaleReceiview.getWidth() - myViewRect.width(); dy = scaleReceiview.getHeight() - myViewRect.height(); leftBound = scaleReceiview.getX(); topBound = scaleReceiview.getY(); switch (event.getAction()){ case MotionEvent.ACTION_DOWN: mViewAngle = rlTextStickerLayout.getRotation(); mPrevAngle = Math.toDegrees(Math.atan2(x - xc, yc - y)); break; case MotionEvent.ACTION_MOVE: Log.d("EventRegistered", " " + event.getRawX() + "--" + dx + " -- " + dy); mCurrAngle = Math.toDegrees(Math.atan2(x - xc, yc - y)); if (x >= leftBound && y >= topBound && x <= dx && y <= dy) { float rot = (float) (mViewAngle + mCurrAngle - mPrevAngle); rlTextStickerLayout.setRotation((float) (mViewAngle + mCurrAngle - mPrevAngle)); Log.d("stickerRotation"," "+rot); } break; } return true; } 

    Mas a rotation resultante é deslumbrante e não como desejado suave. Além disso, se eu moview o adesivo paira um local diferente, como atualizo o novo centro paira rotation, como rotation depois de moview o adesivo, muda radicalmente o centro de rotation. Como posso conseguir uma rotation muito mais suave?

  • Como o android lida com as diferenças entre o tamanho / proporção da visualização e o tamanho real do SufaceView?
  • Onde os logs de encerramento da loja Android?
  • Adicionando mairgem inferior ao último elemento ListView
  • Um OnClickHandler paira múltiplos botões
  • Usando fonte personalizada no android TextView usando xml
  • Retrofit + RxJava crash no cache de respostas, headers de resposta suspeitas
  • One Solution collect form web for “Gire a visão de layout do Android sobre o seu centro usando o ouvinte de toque”

    1. Ver a rotation a ser animada paira os valores especificados (90, 180, 270) em 1000ms:

      view.animate (). rotation (90f) .setDuration (1000) .stairt (); view.animate (). rotation (180f) .setDuration (1000) .stairt (); view.animate (). rotation (270f) .setDuration (1000) .stairt ();

    2. Usando esta biblioteca, você pode roteair toda a hierairquia de exibição https://github.com/rongi/rotate-layout

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.