Я пытаюсь повернуть изображение на кнопку, а затем остановить вращение изображения на другой щелчок. У меня две проблемы: 1.) Я не уверен, как остановить анимацию, когда вы нажмете кнопку во второй раз, и 2.) Мое изображение вращается на самом деле лагги и не постоянно вращается вообще. Я пытаюсь заставить его постоянно вращаться в одном и том же положении.Вращение изображения при нажатии кнопки, чем остановка на кнопке
Вот мой код Java ...
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends AppCompatActivity {
private static ImageView imgView;
private static Button button;
private int current_image_index;
private static Button creditsButton;
int[] images = {R.mipmap.imageid, R.mipmap.imageid};
ImageView blade;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonClick();
creditsClick();
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
}
public void buttonClick() {
imgView = (ImageView) findViewById(R.id.imageView);
button = (Button) findViewById(R.id.button);
blade = (ImageView)findViewById(R.id.imageView4);
final Animation animRotate = AnimationUtils.loadAnimation(this, R.anim.rotate);
button.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
blade.startAnimation(animRotate);
current_image_index++;
current_image_index = current_image_index % images.length;
imgView.setImageResource(images[current_image_index]);
}
}
);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
и вот мой поворот код XML ...
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1000"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="48%"
android:toDegrees="1080"
android:repeatCount="infinite"
/>
</set>
Вы можете установить логическое значение say isRotating и изменить использование инструкции if/else в коде прослушивания кликов. Благодаря лагированной анимации добавьте линейный интерполятор в вашу XML-анимацию - это может помочь. Также toDegress должно быть только 359, поскольку вы находитесь в замкнутом цикле. –
Хорошо спасибо за отзыв :) –