我有一个使用按钮切换某些图片的教程,以下是代码:
public class MainActivity extends AppCompatActivity {
private static ImageView andro;
private static Button buttonswitch;
int current_image_index = 0;
int[] images = {R.mipmap.andro_img,R.mipmap.apple_image,R.mipmap.ic_launcher,R.mipmap.ic_launcher_round};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonClick();
}
public void buttonClick() {
andro = (ImageView) findViewById(R.id.imageView);
buttonswitch = (Button) findViewById(R.id.button);
buttonswitch.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View view) {
current_image_index++;
current_image_index = current_image_index % images.length;
andro.setImageResource(images[current_image_index]);
}
}
);
}
}
我在这部分真的很困惑:
@Override
public void onClick(View view) {
current_image_index++;
current_image_index = current_image_index % images.length;
andro.setImageResource(images[current_image_index]);
我理解的是,一旦我点击按钮,变量 current_image_index 将增加1。然后将 current_image_index 对 images.length 取模,得到的余数即为 current_image_index 除以 images.length 的余数。例如,第一次时 current_image_index = 0,点击后变为 1,再计算 1 % image.length = 0。然后会执行 andro.setImageResource(images[0]);。
由于 current_image_index 始终为 0,这个过程会不断重复。那么如何在点击后让图片不断地改变呢?因为 current_image_index%image.length 总是等于 0,所以需要更改 current_image_index 的值。
image.length
是4,所以当current_image_index
为0时,结果为0,当为1时,结果为1,当为2时,结果为2,当为3时,结果为3,当为4时,结果为0,因此你得到了环绕。 - Ken Y-Na%b
的答案始终是<b
。通过加1并取模,可以确保增加的值形成数组的有效索引。 - GAURANG VYAS