Java Android ImageView-图片旋转只在第一次有效
Java Android ImageView-Image rotation only works for the first time
我在 java 中编写了一个代码用于图像视图,它将旋转和淡出并且另一个图像将可见,我使用 imageViewer.animate.rotation(3600).alpha(0);
现在这在我 [=18= 时工作正常] 模拟器上的代码,图像淡入淡出并重新出现就好了,但问题是我第一次编译应用程序后的旋转当我点击图像时,它会旋转并淡出和下一张图片显示,但是当我再次点击图像时,它不会旋转,而只有淡入和淡出会起作用但旋转不起作用(请注意,它在编译后第一次旋转但随后不旋转和淡出in/out 仅适用)。这是代码:
public class MainActivity extends AppCompatActivity
{
boolean eggview = true;
public void fade(View view)
{
ImageView eggImageView = (ImageView) findViewById(R.id.egg);
ImageView chickImageView = (ImageView) findViewById(R.id.chick);
if (eggview)
{
eggview = false;
eggImageView.animate().rotation(3600).setDuration(1200).alpha(0);
chickImageView.animate().alpha(1);
}
else
{
eggview = true;
chickImageView.animate().rotation(3600).alpha(0).setDuration(1200);
eggImageView.animate().alpha(1);
}
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
将 alpha 设置为 1
时,您必须将 rotation
设置为 0。当您将 rotation
设置为 3600
时,它不是从当前状态而是从默认状态 3600
度,这就是它只工作一次的原因。
boolean eggview = true;
public void fade(View view)
{
ImageView eggImageView = (ImageView) findViewById(R.id.egg);
ImageView chickImageView = (ImageView) findViewById(R.id.chick);
if (eggview)
{
eggview = false;
eggImageView.animate().rotation(3600).setDuration(1200).alpha(0);
chickImageView.animate().alpha(1).rotation(0);
}
else
{
eggview = true;
chickImageView.animate().rotation(3600).alpha(0).setDuration(1200);
eggImageView.animate().alpha(1).rotation(0);
}
}
如果您不想在淡入时向后旋转,只需将旋转设置为 actual state + 3600
。但是您的代码的主要问题是将旋转设置为实际状态。
使用
方法 rotationBy() 而不是 rotation()
eggImageView.animate().rotationBy(3600)...
rotation() 将视图移动到 360f,rotationBy() 将视图移动到 360f
与 alphaBy() 相同
我在 java 中编写了一个代码用于图像视图,它将旋转和淡出并且另一个图像将可见,我使用 imageViewer.animate.rotation(3600).alpha(0);
现在这在我 [=18= 时工作正常] 模拟器上的代码,图像淡入淡出并重新出现就好了,但问题是我第一次编译应用程序后的旋转当我点击图像时,它会旋转并淡出和下一张图片显示,但是当我再次点击图像时,它不会旋转,而只有淡入和淡出会起作用但旋转不起作用(请注意,它在编译后第一次旋转但随后不旋转和淡出in/out 仅适用)。这是代码:
public class MainActivity extends AppCompatActivity
{
boolean eggview = true;
public void fade(View view)
{
ImageView eggImageView = (ImageView) findViewById(R.id.egg);
ImageView chickImageView = (ImageView) findViewById(R.id.chick);
if (eggview)
{
eggview = false;
eggImageView.animate().rotation(3600).setDuration(1200).alpha(0);
chickImageView.animate().alpha(1);
}
else
{
eggview = true;
chickImageView.animate().rotation(3600).alpha(0).setDuration(1200);
eggImageView.animate().alpha(1);
}
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
将 alpha 设置为 1
时,您必须将 rotation
设置为 0。当您将 rotation
设置为 3600
时,它不是从当前状态而是从默认状态 3600
度,这就是它只工作一次的原因。
boolean eggview = true;
public void fade(View view)
{
ImageView eggImageView = (ImageView) findViewById(R.id.egg);
ImageView chickImageView = (ImageView) findViewById(R.id.chick);
if (eggview)
{
eggview = false;
eggImageView.animate().rotation(3600).setDuration(1200).alpha(0);
chickImageView.animate().alpha(1).rotation(0);
}
else
{
eggview = true;
chickImageView.animate().rotation(3600).alpha(0).setDuration(1200);
eggImageView.animate().alpha(1).rotation(0);
}
}
如果您不想在淡入时向后旋转,只需将旋转设置为 actual state + 3600
。但是您的代码的主要问题是将旋转设置为实际状态。
使用
方法 rotationBy() 而不是 rotation()
eggImageView.animate().rotationBy(3600)...
rotation() 将视图移动到 360f,rotationBy() 将视图移动到 360f
与 alphaBy() 相同