눌렀을 때 / 초점 / 선택 / 등을 선택 했을 때 Drawable을 강조 표시하는 일반적인 프레임 워크 기능을 만들려고합니다 .
내 함수는 Drawable을 가져 와서 StateListDrawable을 반환합니다. 여기서 기본 상태는 Drawable 자체이고 상태 android.R.attr.state_pressed
는 동일한 드로어 블 setColorFilter
입니다.
내 문제는 드로어 블을 복제하고 필터를 적용하여 별도의 인스턴스를 만들 수 없다는 것입니다. 내가 달성하려는 것은 다음과 같습니다.
StateListDrawable makeHighlightable(Drawable drawable)
{
StateListDrawable res = new StateListDrawable();
Drawable clone = drawable.clone(); // how do I do this??
clone.setColorFilter(0xFFFF0000, PorterDuff.Mode.MULTIPLY);
res.addState(new int[] {android.R.attr.state_pressed}, clone);
res.addState(new int[] { }, drawable);
return res;
}
복제하지 않으면 필터가 두 상태 모두에 분명히 적용됩니다. 가지고 놀아 봤는데 mutate()
도움이 안되네요 ..
어떤 아이디어?
최신 정보:
허용되는 대답은 실제로 드로어 블을 복제합니다. 내 일반 기능이 다른 문제에서 실패하기 때문에 도움이되지 않았습니다. StateList에 드로어 블을 추가하면 모든 필터가 손실되는 것 같습니다.