每次单击切换按钮时,我都需要更改其图像。
这样做有效吗?

public void onClickToggleButton(View v) {
    if(_on) {
        _on=false;
        myImageView.setImageDrawable(getResources().getDrawable(R.drawable.btn_off));
    } else {
        _on=true;
        myImageView.setImageDrawable(getResources().getDrawable(R.drawable.btn_on));
    }
}

或者这是否意味着Drawable每次都将从png文件中解码?
在这种情况下,只调用getDrawable()两次(在onCreate()中)并保留自己对2Drawables的引用会更好。

最佳答案

这不会回答你的问题,如果是有效的或不调用每次这个方法。
但正如@njzk2所指出的,您可以在切换按钮上使用State Selector
我给你一个工作的例子(我正在使用)。只需根据您的可抽件更改可抽件的名称。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:drawable="@drawable/toggle_on" android:state_checked="true" />
  <item android:drawable="@drawable/toggle_off" android:state_checked="false" />
</selector>

在定义toogle按钮的xml上,将背景设置为:
android:background="@drawable/toogle_selector"

其中“toogle_selector”是我以前复制的文件的名称。
有了这个,你可以忘记每次加载可拉伸的效率。
希望这有帮助。

08-18 08:04