2014-11-23 3 views
2

Итак, я хочу сделать кнопку, которая при каждом нажатии на нее меняет изображение над кнопкой. У меня всего 2 изображения, поэтому я не использую массивы. Предположим, у меня есть image1.png и image2.png. По умолчанию изображение равно image1, и после того, как я нажму кнопку, он превратится в image2. Если я снова нажму на него, то появится изображение1.Изменение двух изображений при нажатии кнопки (Android)

package blablablabla; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ImageView; 

public class MainActivity extends Activity { 

ImageView image; 

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

    image = (ImageView) findViewById(R.id.myicon); 
} 


public void onClick(View view) { 
    switch(view.getId()){ 
    case R.id.button1:{ 
     image.setImageResource(R.drawable.initial); 
     return; 
    } 
    } 
} 
} 

Я подумал о внесении если Постулаты: если изображение image1, а затем изменить его IMAGE2 и наоборот.

Проблема: после того, как я перейду на изображение2, я не могу переключиться обратно. Я знаю, что я не писал код для этого, потому что я сделал это wrrong.

ответ

2

Хорошо я думаю, что это может сделать:

package blablablabla; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ImageView; 

public class MainActivity extends Activity { 

ImageView image; 
**boolean flag = true;** 

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

    image = (ImageView) findViewById(R.id.myicon); 
} 


public void onClick(View view) { 
    switch(view.getId()){ 
    case R.id.button1:{ 
    **if(flag) 
    {  
     image.setImageResource(R.drawable.initial); 
     flag=false; 
    } 
    else 
    { 
     image.setImageResource(R.drawable.secondary); 
     flag=true; 
    }** 
     return; 
    } 
    } 
} 
} 
+0

Такой простой раствор, он сработал! Почему я не думал об этом .. – Cata

+0

hahaha, не проблема, бывает иногда :) –

1

Хорошо, в вашем onCreate(), где вам получить ImageView, сначала нужно использовать setTag(), так что вы можете определить, что изображение уже в нем. Как только изображение для ImageView установлено, вы не сможете вернуть идентификатор ресурса. Это просто работа вокруг так, сделайте следующее:

image = (ImageView) findViewById(R.id.image); 
image.setTag(R.drawable.image1); 

Теперь в вашем onClick() вы можете сделать следующее:

int tag = (int) image.getTag(); 
if(tag == R.drawable.image1){ 
    image.setImageDrawable(getResources().getDrawable(R.drawable.image2)); 
    image.setTag(R.drawable.image2); 
}else{ 
    image.setImageDrawable(getResources().getDrawable(R.drawable.image1)); 
    image.setTag(R.drawable.image1); 
} 

на основе: https://stackoverflow.com/a/14474954/1894684

Вы также можете использовать setImageResource() вместо setImageDrawable(). Первый делает декодирование изображения на потоке пользовательского интерфейса, хотя

+0

Хм, я понимаю. Но почему вы используете set.ImageDrawable? Я имею в виду, вы тоже можете использовать setImageResource, верно? Редактировать: О, теперь я вижу нижний текст! Спасибо за Ваш ответ!! – Cata

Смежные вопросы