点击android按钮更改不同的图像



因此,我想创建一个包含两个按钮"next"one_answers"previor"的图像切换器。每当我点击"下一个"按钮时,它将切换到下一个图像,"上一个"键将切换到上一个图像。我使用一个数组来存储所有的图像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"/>

Main.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);
}
});
}

}

我真的不知道你面临的是哪个问题。您想更改列表中的图像,但只能在数组中加载索引为0和1的图像。

使用全局变量存储当前图像索引。

currIndex = 0;
btnNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(currIndex < url.length() - 1) {
loadingImage(url[currIndex],0);
imgView[1].setImageResource(0);
}
}
});
btnPrevious.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(currIndex > 0) {
loadingImage(url[currIndex],1);
imgView[0].setImageResource(0);
}
}
});

根据新的API从imageLoader.get(url)更改为loadurl(url)

更改

imageLoader.get(url, new ImageLoader.ImageListener() {
@Override
public void onResponse(ImageLoader.ImageContainer response, boolean isImmediate) {
Bitmap img = response.getBitmap();
imgView[i].setImageBitmap(img);
}
@Override
public void onErrorResponse(VolleyError error) {
Log.e("Error",error.getMessage());
}
});

// Load image, decode it to Bitmap and return Bitmap to callback
imageLoader.loadImage(url, new SimpleImageLoadingListener() {
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
// Do whatever you want with Bitmap
imgView[i].setImageBitmap(img);
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
Log.e("Error", failReason.getCause().getMessage());
}
});

相关内容

  • 没有找到相关文章

最新更新