触摸时ImageView不会更新。 “res无法解决”

时间:2013-07-31 18:29:32

标签: android imageview drawable

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

3 个答案:

答案 0 :(得分:2)

尝试将其更改为

getResources().getDrawable(...)

由于您在听众中,因此可能需要ActivityName.this.getResources().getDrawable()

playButton.setImageBitmap(getResources().getDrawable(R.drawable.play_pushed));

res是文件夹名称,但它不是您声明的变量,因此系统不知道它是什么。

getResources()

答案 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" />

有关Android docs

中按钮自定义样式的详细信息

答案 2 :(得分:0)

ImageView IV= (ImageView)findViewById(R.id.imageView1);  
resID = getResources().getIdentifier(drawableName, "drawable",  getPackageName());
IV.setImageResource(resID);

这将有效我保证;)