所以,我想创建一个包含两个按钮“下一个”和“上一个”的图像切换器。每当我单击“下一个”按钮时,它将切换到下一个图像,而“上一个”按钮将切换到上一个图像。我正在使用一个数组来存储所有图像 url,假设我有 image1,当我单击“下一步”按钮时,它将切换到 image2,依此类推。现在我只能在两个图像之间切换,这是我的代码。
更新:我已经更新了我的代码,这次我可以在图像之间切换,但应用程序有时会崩溃。有任何想法吗?
XML
<ImageSwitcher
android:id="@+id/images"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"/>
<ImageButton
android:id="@+id/btnleft"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="23dp"
android:layout_marginStart="90dp"
android:layout_alignParentBottom="true"
android:layout_alignParentStart="true"
android:src="@android:drawable/ic_media_rew"
android:background="@android:color/holo_green_light"/>
<ImageButton
android:id="@+id/btnRight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="91dp"
android:layout_alignTop="@+id/btnleft"
android:layout_alignParentEnd="true"
android:src="@android:drawable/ic_media_ff"
android:background="@android:color/holo_green_light"/>
主.java
public class MainActivity extends AppCompatActivity {
private ImageSwitcher imageSwitcher;
private ImageButton buttonLeft, buttonRight;
public static int currentIndex=0;
private static String url[] = new String[]{
"https://pbs.twimg.com/profile_images/875443327835025408/ZvmtaSXW_400x400.jpg",
"http://www.ipbrief.net/wp-content/uploads/2012/05/262px-Android_dance.svg_.png",
"http://quizzzz.net/en/logo/images/1342886140.jpg",
"https://androiddevsimplified.files.wordpress.com/2016/01/android-logo-png-05073.png"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageSwitcher = (ImageSwitcher)findViewById(R.id.images);
buttonLeft = (ImageButton)findViewById(R.id.btnleft);
buttonRight = (ImageButton)findViewById(R.id.btnRight);
imageSwitcher.setFactory(new ViewSwitcher.ViewFactory() {
@Override
public View makeView() {
// Returns the context for the entire application (the process all the Activities are running inside of)
ImageView imageView = new ImageView(getApplicationContext());
imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
imageView.setLayoutParams(new ImageSwitcher.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT));
return imageView;
}
});
imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.slide_in_left));
imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.slide_out_right));
buttonRight.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(currentIndex < url.length)
LoadingImage(url[currentIndex++]);
}
});
buttonLeft.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(currentIndex > 0)
LoadingImage(url[currentIndex--]);
}
});
}
private void LoadingImage(final String url){
ImageLoader imageLoader = Singleton.getInstance(getApplicationContext()).getImageLoader();
imageLoader.get(url, new ImageLoader.ImageListener(){
@Override
public void onErrorResponse(VolleyError error) {
Log.e("Error", error.getMessage());
}
@Override
public void onResponse(ImageLoader.ImageContainer response, boolean isImmediate) {
Bitmap image = response.getBitmap();
Drawable drawable = new BitmapDrawable(getResources(),image);
imageSwitcher.setImageDrawable(drawable);
}
});
}
}