kne*_*ete 3 alpha imagebutton layerdrawable
我扩展了LayerDrawable以在按下ImageButtons时自动更改Alpha值:
protected class CustomDrawable extends LayerDrawable {
protected int _pressedAlpha = 60;
public CustomDrawable(Drawable d) {
Log.d(TAG, "constructor");
super(new Drawable[] { d });
}
/**
* Wenn sich der Status auf pressed ändert, soll der Alphawert sich auf _pressedAlpha ändern. Wenn sich der
* Status von pressed wieder auf normal ändert soll der ursprüngliche Alphawert gesetzt werden
*/
@Override
protected boolean onStateChange(int[] states) {
Log.d(TAG, "status changed: " + states);
boolean pressed = false;
for (int state : states) {
if (state == android.R.attr.state_pressed)
pressed = true;
}
mutate();
if (pressed) {
setAlpha(_pressedAlpha);
} else {
setAlpha(100);
}
invalidateSelf();
return super.onStateChange(states);
}
}
Run Code Online (Sandbox Code Playgroud)
构造函数被调用并且Drawable是正确的,但是当我按下ImageButton时,永远不会调用onStateChange()方法。有人可以帮帮我吗?
小智 6
我认为您也需要重写该isStateful()方法。我有一个类似的问题,并添加了此问题:
@Override
public boolean isStateful() {
return true;
}
Run Code Online (Sandbox Code Playgroud)
请参阅此答案中类似问题的代码。
| 归档时间: |
|
| 查看次数: |
674 次 |
| 最近记录: |