2014-11-23 61 views
2

因此,我想制作一个按钮,每次按下它时,它都会更改按钮上方的图像。我总共有2个图像,所以我不使用数组。假设我有image1.png和image2.png。默认图像是image1,按下按钮后,它会变成image2。如果我再次按下,它将转向image1。在按钮点击(安卓)上更改两个图像

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; 
    } 
    } 
} 
} 

我想做一个if语句:如果图像是image1,则将其更改为image2,反之亦然。

问题:在我换成image2后,我无法切换回来。我知道我没有写代码,因为我犯了错误。

回答

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 2014-11-23 08:35:58

+0

哈哈哈,没问题,有时会发生:) – 2014-11-23 08:38:24

1

好吧,在你onCreate()在您找回您的ImageView,首先需要使用setTag()这样就可以识别已经在它什么样的形象。一旦设置了ImageView的图像,您就无法获取资源ID。这仅仅是围绕这样一个工作,做到这一点:现在

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()。前者在UI线程上进行图像解码,虽然

+0

嗯,我明白了。但为什么你使用set.ImageDrawable?我的意思是,你也可以使用setImageResource,对吧? 编辑:哦,现在我看到底部文本!感谢您的回答!! – Cata 2014-11-23 08:45:50