Ayarlarımın nasıl döndürüleceğini buradan görebilirsiniz.Dokunarak dinleyiciyi kullanarak merkezinin merkezi hakkında android görünümü görünümünü döndürün
ben aşağı eylem için dinleme ve dönme açısını hesaplamak için çalışıyor, rotasyon ikonuna taşımak ve EditText enkapsüle tüm düzenine dönüş olduğunu açısını uyguluyorum. Uygulanan rotasyon, kapsülleyici göreli düzenin merkezi ile ilgili olmalıdır.
Simge, döndürme simgesi için touchListener uygulamasında bunu nasıl gerçekleştirmeye çalışıyorum.
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 = scaleReceiver.getWidth() - myViewRect.width();
dy = scaleReceiver.getHeight() - myViewRect.height();
leftBound = scaleReceiver.getX();
topBound = scaleReceiver.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;
}
Ancak sonuçta oluşan döndürme, sorunsuz ve istenildiği gibi değil. Ayrıca, etiketi farklı bir konuma taşırsam, etiketi hareket ettirdikten sonra rotasyon rotasyon merkezini önemli ölçüde değiştirdiğinden, rotasyon için yeni merkezi nasıl güncellerim. Çok daha düzgün bir dönüşe nasıl ulaşabilirim?