playButton.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View arg0, MotionEvent arg1)
{
switch(arg1.getAction())
{
case MotionEvent.ACTION_DOWN:
{
playButton.setImageBitmap(res.getDrawable(R.drawable.play_pushed));
break;
}
case MotionEvent.ACTION_CANCEL:
{
playButton.setImageBitmap(res.getDrawable(R.drawable.play));
break;
}
}
return true;
}
});
两个res关键字以红色下划线。在触摸时,只需尝试将图像更改为更暗的版本。所有必需的图像都位于res文件夹中。知道问题是什么吗?
更新: 稍微更新了代码,现在它完美地运行了:
playButton.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View arg0, MotionEvent arg1)
{
switch(arg1.getAction())
{
case MotionEvent.ACTION_DOWN:
{
playButton.setImageDrawable(getResources().getDrawable(R.drawable.play_pushed));
break;
}
case MotionEvent.ACTION_UP:
{
playButton.setImageDrawable(getResources().getDrawable(R.drawable.play));
break;
}
}
return true;
}
});
答案 0 :(得分:2)
尝试将其更改为
getResources().getDrawable(...)
由于您在听众中,因此可能需要ActivityName.this.getResources().getDrawable()
playButton.setImageBitmap(getResources().getDrawable(R.drawable.play_pushed));
res
是文件夹名称,但它不是您声明的变量,因此系统不知道它是什么。
答案 1 :(得分:0)
使用资源中的选择器更好地定义按钮。使用这样的代码:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_enabled="false"
android:drawable="@drawable/green_large_btn_pressed" />
<item
android:state_pressed="true"
android:state_enabled="true"
android:drawable="@drawable/green_large_btn_pressed" />
<item
android:state_focused="true"
android:state_enabled="true"
android:drawable="@drawable/green_large_btn" />
<item
android:state_enabled="true"
android:drawable="@drawable/green_large_btn" />
中按钮自定义样式的详细信息
答案 2 :(得分:0)
ImageView IV= (ImageView)findViewById(R.id.imageView1);
resID = getResources().getIdentifier(drawableName, "drawable", getPackageName());
IV.setImageResource(resID);
这将有效我保证;)