带有下一个和上一个按钮的ViewSwitcher

时间:2012-09-14 11:17:59

标签: android android-imageview android-view android-image

我正在尝试使用ViewSwitcher充当图像向导。

我的意思是会有下一个和上一个按钮来更改ViewSwitcher中的图像而不是图库。我从android示例应用程序的API Demo中获取了引用。

因为他们使用了ViewSwitcherGallery,但我必须使用NextPrev按钮 代替。但我不知道该怎么做。

在示例应用程序中,他们使用了

Gallery g = (Gallery) findViewById(R.id.gallery);
g.setAdapter(new ImageAdapter(this));
g.setOnItemSelectedListener(this);

ImageAdapter继续在ImageView中添加新图像,ImageView本身驻留在ViewSwitcher中。那么我怎样才能对下一个和上一个按钮做同样的事情呢?

Sample App Screen

1 个答案:

答案 0 :(得分:1)

如果您使用ImageSwitcher,这是一件非常简单的事情。您必须将Gallery替换为两个Buttons并将其与ImageSwitcher相关联:

private int[] mImageIds= //.. the ids of the images to use
private int mCurrentPosition = 0; // an int to monitor the current image's position
private Button mPrevious, mNext; // our two buttons

两个buttons将有两个onClick回调:

public void goPrevious(View v) {
    mCurrentPosition -= 1;
    mViewSwitcher.setImageResource(mImageIds[mCurrentPosition]);
    // this is required to kep the Buttons in a valid state
    // so you don't pass the image array ids boundaries 
    if ((mCurrentPosition - 1) < 0) {
        mPrevious.setEnabled(false);
    }
    if (mCurrentPosition + 1 < mImageIds.length) {
        mNext.setEnabled(true);
    }
}

public void goNext(View v) {
    mCurrentPosition += 1;
    mViewSwitcher.setImageResource(mImageIds[mCurrentPosition]);
    // this is required to kep the Buttons in a valid state
    // so you don't pass the image array ids boundaries 
    if ((mCurrentPosition + 1) >= mImageIds.length) {
        mNext.setEnabled(false);
    }
    if (mCurrentPosition - 1 >= 0) {
        mPrevious.setEnabled(true);
    }
}

您必须记住在Button方法中禁用之前的onCreate(因为我们从数组中的第一个图像开始)。