У меня есть кнопка изображения в качестве кнопки включения/выключения, я хочу изменить исходное изображение этого изображения, щелкнув, чтобы переключаться между включенными и выключенными, все, что мне нужно сделать, это поместить сравнение в мой прослушиватель кликов и операцию переключения переключатель идет нормально, проблема здесь с сравнения, я попытался как миллион способов, и все не работает,Как изменить изображение кнопки фона при нажатии?
, например, я попытался:
public void onClick(View v) {
if (v == power) {
Drawable fDraw = power.getBackground();
Drawable sDraw = getResources().getDrawable(R.drawable.acoffdormant);
Bitmap bitmap = ((BitmapDrawable)fDraw).getBitmap();
Bitmap bitmap2 = ((BitmapDrawable)sDraw).getBitmap();
if (bitmap == bitmap2) {
power.invalidateDrawable(getResources().getDrawable(R.drawable.acoffdormant));
power.setImageResource(R.drawable.acondormant);
} else {
power.invalidateDrawable(getResources().getDrawable(R.drawable.acondormant));
power.setImageResource(R.drawable.acoffdormant);
}
}
}
};
а также:
if (getResources().getDrawable(R.drawable.acoffdormant).hashCode() == power.getBackground().hashCode())
И также:
v.getBackground().getConstantState().equals(getResources().getDrawable(R.drawable.acoffdormant).getConstantState())
А также:
Drawable state = power.getBackground();
Bitmap statebit = ((BitmapDrawable)state).getBitmap();
Bitmap off = BitmapFactory.decodeResource(power.getResources(),
R.drawable.acoffdormant);
if (statebit == off) {
power.invalidateDrawable(getResources().getDrawable(R.drawable.acoffdormant));
power.setImageResource(R.drawable.acondormant);
} else {
power.invalidateDrawable(getResources().getDrawable(R.drawable.acondormant));
power.setImageResource(R.drawable.ac_fan);
}
А также:
if (power.getBackground().getConstantState().equals
(getResources().getDrawable(R.drawable.acoffdormant).getConstantState()))
И мой XML:
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="10dp"
android:layout_marginTop="20dp"
android:background="@android:color/transparent"
android:text="@string/power"
android:textColor="#00CCCC"
android:textSize="20dp"
android:textStyle="bold" />
<ImageButton
android:id="@+id/power"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:clickable="true"
android:adjustViewBounds="true"
android:background="@android:color/transparent"
android:scaleType="centerInside"
android:src="@drawable/acoffdormant" />
</LinearLayout>
увидеть это http://stackoverflow.com/questions/4526585/imageview-drawable-id-in-android –
Вам не нужно возиться с Bitmaps. setImageResource() самостоятельно выполнит эту работу. –