我需要在每次单击时更改切换按钮的图像.
这样做有效吗?
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)); } }
或者这是否意味着每次都会从PNG文件中解码Drawable?
在这种情况下,只调用getDrawable()两次(在onCreate()中)并保持我自己对2 Drawables的引用会更好.
解决方法
如果每次使用此方法时调用是否有效,则不响应您的问题.
但正如@ njzk2所说,你可以在你的切换按钮上使用 State Selector.
但正如@ njzk2所说,你可以在你的切换按钮上使用 State Selector.
我给你复制一个工作的例子(我正在使用).只需更改您的drawables的drawable名称即可.
<?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”是我之前复制的文件的名称.
有了这个,您可以忘记每次加载drawable的效率.
希望这可以帮助.