如何使用下一个和上一个按钮更改图像?

时间:2018-04-06 20:03:58

标签: java android

抱歉让你讨厌,但我是迈向Android编程的第一步,需要你的支持 问题是, 我想使用下一个和上一个按钮在照片之间切换 我有3张照片 和2个按钮(下一个和上一个)  当我开始我的应用程序时放我应该按两次下一步按钮来更改照片 也在之前我应该​​按两次更改回来 希望有人帮我改进代码

 public class SabahList extends AppCompatActivity  {
 ImageView img;
 int[] mario = new int[]{R.drawable.image_a,R.drawable.image_b,R.drawable.image_c};
 int n =0;


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

    img= (ImageView)findViewById(R.id.imageView2);

}

public void btu_next(View view) {
    img.setImageResource(mario[n]);
    if(n<2)

        n++;
}

public void btu_prev(View view) {
    img.setImageResource(mario[n]);
    if(n>0)
        n--;
}
}  

2 个答案:

答案 0 :(得分:0)

这是你的逻辑问题。你的按钮的功能命令他们先设置资源,然后增加/减少值,因此当你第二次点击它时,它将被设置为先前/逐渐增加。

public void btu_next(View view) {
   if(n < 2)
      n++;

   img.setImageResource(mario[n]);
}

答案 1 :(得分:0)

如果您使用来自drawable

的普通数组添加图像,此答案可能对您有所帮助
 //Your xml like this

        <?xml version="1.0" encoding="utf-8"?>
        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            xmlns:tools="http://schemas.android.com/tools"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            tools:context="com.devobal.quitchet.SabahList"
            android:orientation="vertical">

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center">

            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/previous"
                android:text="previous"/>
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/next"
                android:text="next"/>
            </LinearLayout>

            <ImageView
                android:id="@+id/imageView2"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />
        </LinearLayout>

    //And your Activity like this
        public class SabahList extends AppCompatActivity {
            ImageView imageView2;
            Button previous,next;
            int i=0;
            private int[] textureArrayWin = {R.drawable.star1,R.drawable.star2, R.drawable.star3,};

            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_sabah_list);
                imageView2 = (ImageView)findViewById(R.id.imageView2);
                previous  = (Button)findViewById(R.id.previous);
                next = (Button)findViewById(R.id.next);
                if(i==0){
                    previous.setVisibility(View.GONE);
                }
                if (i==2){
                    next.setVisibility(View.GONE);
                }

                previous.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        imageView2.setImageResource(textureArrayWin[i]);
                        i--;
                        if(i==0){
                            previous.setVisibility(View.GONE);} else{ previous.setVisibility(View.VISIBLE);}
                        if (i==2){
                            next.setVisibility(View.GONE);
                        } else{next.setVisibility(View.VISIBLE)}
                    }
                });

                next.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        //if you are loading from bitmap
                        imageView2.setImageResource(textureArrayWin[i]);
                        i++;
                        if(i==0){
                            previous.setVisibility(View.GONE); } else {previous.setVisibility(View.VISIBLE); }
                        if (i==2){
                            next.setVisibility(View.GONE);
                        } else{next.setVisibility(View.VISIBLE)}
                    }
                });
            }
        }