안드로이드 개발에서 우리는 종종 맞춤형 드로우 가능한 스타일을 사용하고, 그림 스타일 또는 선택기 선택기를 끌어 당길 수 있지만, 때로는 여러 xml에 여러 개의 드로어링 가능한 스타일이 필요하다면 약간 다르기 때문에 여러 차례의 스타일이 부풀어 오르기 때문에 너무 많은 XML 파일을 만들 수 있다고 생각할 수 있다고 생각합니다.
StateListRudable 및 GradientStrable의 사용
Java 구현 선택기 :
/** * 배경 선택기 설정 * * @param presseddraw * @param normal draw * @return */private statelistDrawable getSelector (Drawable Normal Draw, Drawable PressedDraw) {stateListDrawable StateListDrawable = new statelistDrawable (); stateListDrawable.addstate (new int [] {android.r.attr.state_selected}, pressedDraw); stateListDrawable.addstate (new int [] {}, normal draw); Ret이것은 코드에서 선택기를 작성하는 것입니다. 생성 된 유형은 statelistrawable입니다. AddState ()를 통해 선택기에 상태를 추가 할 수 있습니다. 그러나 상태를 추가 할 때 주문이 있음에 주목해야합니다. STATELISTRDABLE은 먼저 최신 추가 상태를 실행합니다. 상태가 아닌 경우 다음 상태를 실행하십시오. 대규모 상태가 정면에 배치되면 후속 상태를 실행하지 않고 대규모 상태를 직접 실행합니다. 또한 상태를 추가 할 때 상태 앞에 " -"부호를 추가 하여이 상태가 False임을 나타냅니다 (예 : -android.r.attr.state_selected). 그렇지 않으면 사실입니다.
/** * SET STAPE * * @Param Radius * @param fillColor * @param width * @param strokecolor * @return */private gradientsude getDrawable (int radius, int fillcolor, int width, int strokecolor) {gradient drawable gradientshaple = new gradient drawable (); GradientDrawable.SetCornerRadius (RADIUS); GradientDrawable.SetColor (FillColor); GradientDrawable.SetStroke (너비, 스트로크 콜러); return gradient 제작자;}코드에서 그라디언트 흡기 가능을 동적으로 생성하여 그림 스타일의 기능을 드로우 가능한 스타일로 실현할 수 있습니다. setColor는 모양의 채우기 색상과 같습니다. SetCornerRadius는 둥근 모서리의 라디안을 모양으로 설정하는 것입니다. 단일 코너의 라디안을 설정하려면 setCornerRadii ()를 사용하여 각 모서리의 라디안을 설정할 수 있습니다. setstroke ()는 스트로크이며 스트로크의 너비와 가장자리의 색을 채워야합니다.
마지막으로 간단한 사용 :
GradientDrawable Normal = getDrawable (0, color.white, 1, getResources (). getColor (r.color.app_line_color); GradientDrawable Press = getDrawable (0, color.white, 1, getResources (). getColor (supig.currentthemeColorid); GetSelector (정상) press); textview.setbackground (선택기);
요약
위는 다른 상태에서 선택기의 배경색을 설정하기 위해 편집기가 소개 한 Java 코드입니다. 모든 사람에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 모든 사람에게 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!