0

Androidの初心者です...私のアプリでは、の画像と次の画像を表示する必要があります.. ..

 public class MainActivity extends Activity  implements OnClickListener{

 ImageButton ib_left_arrow, ib_right_arrow;

 ImageView slidingimage;

 Animation rotateimage;

 public int currentimageindex = 0;

 private int[] IMAGE_IDS = { R.drawable.image1, R.drawable.image2,
        R.drawable.image3};



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.movies);


    ib_left_arrow = (ImageButton) findViewById(R.id.iv_left_arrow);
    ib_right_arrow = (ImageButton) findViewById(R.id.iv_right_arrow);

    ib_left_arrow.setOnClickListener(this);
    ib_right_arrow.setOnClickListener(this);


}


    @Override
public void onClick(View v) {
    // TODO Auto-generated method stub


switch (v.getId()) {
    case R.id.iv_left_arrow:

      slidingimage = (ImageView) findViewById(R.id.ImageView3_Left);

      slidingimage.setBackgroundResource(IMAGE_IDS[currentimageindex% IMAGE_IDS.length]);

      currentimageindex--;

      rotateimage = AnimationUtils.loadAnimation(this,R.anim.slide_in_left);

      slidingimage.startAnimation(rotateimage);        

        break;



case R.id.iv_right_arrow:


      slidingimage = (ImageView) findViewById(R.id.ImageView3_Left);

 slidingimage.setBackgroundResource(IMAGE_IDS[currentimageindex % IMAGE_IDS.length]);

     currentimageindex++;

    rotateimage = AnimationUtils.loadAnimation(this,R.anim.slide_in_right);

    slidingimage.startAnimation(rotateimage);   

    break;              


       }
    }

 }

何か案が ???

4

2 に答える 2

2

コードに欠陥があります。インデックスは 0 から始まります。

アプリを初めて操作するときに左矢印自体を押すと、インデックスは -1 になります。配列のモジュロ長が -1 の配列から値を取得しようとすると、負の値が返されます。

これにより、配列から間違った値が取得され、間違った画像が表示される可能性があります。

簡単な修正は、インデックスが 0 で左ボタンが押されたときにインデックスをロールオーバーさせることです:

case R.id.iv_left_arrow:

   if(currentImageIndex == 0)
           currentImageIndex = IMAGE_IDS.length - 1 ;

それはそれを修正する必要があります。

于 2013-05-31T05:32:52.690 に答える