在第一种情况下没有得到以前的图像

时间:2013-05-31 12:16:00

标签: android

初学者到android ..我开发了一个应用程序,如果我按prev和下一个按钮它将显示流行和下一个图像....

但我在我的应用程序中遇到了问题。这里的问题是,如果app执行我将当前图像源设置为 IMAGE_IDS [0] ...所以,如果我按下左箭头app获取强制关闭,实际上如果我按左箭头它会显示数组中的最后一张图像IMAGE_IDS ...任何想法???谢谢!

  public class MainActivity extends Activity  implements OnClickListener{

    ImageButton play;

    ImageButton ib_left_arrow, ib_right_arrow;  

    ImageView slidingimage;

    Animation rotateimage;  


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

    int imglength=IMAGE_IDS.length;

    int img_position;

    int img_minus;

    int img_plus;


@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);

    slidingimage = (ImageView) findViewById(R.id.ImageView3_Left);
    slidingimage.setImageResource(IMAGE_IDS[0]);

}



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


switch (v.getId()) {

case R.id.iv_left_arrow:


    img_minus=--img_position;

    slidingimage.setImageResource(IMAGE_IDS[img_minus% IMAGE_IDS.length]);

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

    slidingimage.startAnimation(rotateimage);

    break;



case R.id.iv_right_arrow:

    img_plus=++img_position;

    slidingimage.setImageResource(IMAGE_IDS[img_plus% IMAGE_IDS.length]);

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

    slidingimage.startAnimation(rotateimage);


    break;              


    }
  }


 }

3 个答案:

答案 0 :(得分:1)

我认为在数组中设置图像位置时问题是img_plus% IMAGE_IDS.length

我会尝试:

@Override
protected void onCreate(Bundle savedInstanceState) {
    img_position = 0;
    imglength = IMAGE_IDS.length;
    slidingimage.setImageResource(IMAGE_IDS[img_position]);

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


    switch (v.getId()) {

        case R.id.iv_left_arrow:

            img_position--;    
            break;

        case R.id.iv_right_arrow:

            img_position++;
            break;

    }

    // this is to check if your current position is out of array bounds, you could
    // handle here your exit if you want to close the app when pressing left and 
    // img_position = 0 || img_position < 0
    if(img_position < 0) img_position = imglength-1;
    if(img_position >= imglength) img_position = imglength -1;

    slidingimage.setImageResource(IMAGE_IDS[img_position]);

答案 1 :(得分:0)

imgposition = 0;

  case R.id.iv_left_arrow:

        if(0<img_position){        
        --img_position;

        slidingimage.setImageResource(IMAGE_IDS[img_position]);

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

        slidingimage.startAnimation(rotateimage);}

        break;



    case R.id.iv_right_arrow:
    if(2>=counter)
{ 
        ++img_position;

        slidingimage.setImageResource(IMAGE_IDS[img_position]);

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

        slidingimage.startAnimation(rotateimage);}


        break; 

答案 2 :(得分:0)

因为这条线发生了

img_minus=--img_position;

和这个计算

img_plus % IMAGE_IDS.length

如果它在0那么

img_minus=--img_position;//img_minus = --0 therefore img_minus = -1

//img_plus % IMAGE_IDS.length // -1 % 3 = 2
slidingimage.setImageResource(IMAGE_IDS[2]);//which is the last image.

因此,如果你想关闭活动,如果按下左键,那么

img_minus=--img_position;
if(img_minus < 0({
    finish();
    return;
}