#java #c# #android #rotation
#Ява #c# #Android #вращение
Вопрос:
У меня ImageView
в приложении для Android есть кнопка для постепенного поворота изображения влево на 90 градусов при каждом новом нажатии. Теперь код, который у меня есть, обрабатывает поворот объекта до исходного положения до того, как было применено какое-либо вращение, когда я снова нажимаю кнопку поворота, чтобы эффект циклического вращения продолжался, к объекту применяется странное вращение вместо поворота на 90 градусов влево от текущей позиции, оно выполняет какое-то странное вращение, которое может быть подтверждено реализацией этого кода ниже, который я использую и нуждается в реформировании… Код Android Java отформатирован в стандартах Xamarin( The methods start with uppercase letters
)
Код
private void Rotate_Click(object sender, EventArgs e) { rotation_count = 1; //initialize the image transformation matrix /* we need four states for this rotation 1 for 90 2 for 180 3 for 270 and 4 for 360 for full rotation */ //I need help with this structure to make it implement the infinite //rotation to the left loop which means provided the user has clicked the //rotate button it should keep adjusting the current position by 90deg if (rotation_count == 1) { imageView.Animate().Rotation(90f).Start(); }else if(rotation_count == 2) { imageView.Animate().Rotation(180f).Start(); }else if(rotation_count == 3) { imageView.Animate().Rotation(270f).Start(); } else { imageView.Animate().Rotation(360f).Start(); //reset the rotation_counter rotation_count = 0; } }
Цель
Я хочу добиться полного цикла вращения этого объекта ImageView независимо от того, сколько раз пользователь нажимает кнопку, он должен продолжать вращаться на 90 градусов влево даже после достижения полного цикла вращения, при условии, что пользователь снова нажимает кнопку, он должен повернуть изображение на 90 градусов влево, чтобы создать бесконечный цикл вращения, запускаемый нажатием кнопки, Спасибо.
Комментарии:
1. C# но используются классы и методы Java, два языка взаимодействуют в приложениях Xamarin, для java-аналога моего кода все методы, следующие за объектом imagView, начинаются со строчных букв
2. Если вы проверите метод, в который встроен код, он имеет подпись C#, т. Е.
(object sender, EventArgs e)
3. Если вы опубликуете решение Java, я могу легко преобразовать его в C# в мгновение ока
4. Можете ли вы описать странную ротацию, о которой вы упомянули?
5. Как и после полного цикла вращения, вы могли бы ожидать, что, когда пользователь снова нажимает на левую кнопку поворота, как он делал это изначально, он должен повернуть изображение на 90 градусов, как и в прошлом цикле, при первом щелчке, но он не делает этого, он поворачивается до какого-то странного значения
Ответ №1:
После попытки разобраться в этом самостоятельно мне удалось придумать обходной путь для этого. Умножьте счетчик на количество градусов, которое вы хотите включать при каждом щелчке.
private void rotate_click(object sender, EventArgs e){ . rotation_count =1; if (rotation_count gt; 0) { imageView.Animate().Rotation(rotation_count * 90).Start(); } }