코드 구현 Selector 단추 클릭 효과
용도: Button, ImageView 등 구성 요소 가 서로 다른 상태 에서 배경 / 전경 표시 효 과 를 동적 으로 설정 합 니 다.확장 하면 전망 / 배경 표시 효 과 를 네트워크 그림 으로 사용 할 수 있 습 니 다.장점: 유연성, xml 작성 감소.
참고: [AndroidOpenSource] frameworksasecorejavanidview. xml [AndroidOpenSource] frameworksasecoreesesvaluespublic. xml 코드 는 다음 과 같 습 니 다.
/** Selector。 */
public static StateListDrawable newSelector(Context context, int idNormal, int idPressed, int idFocused,
int idUnable) {
StateListDrawable bg = new StateListDrawable();
Drawable normal = idNormal == -1 ? null : context.getResources().getDrawable(idNormal);
Drawable pressed = idPressed == -1 ? null : context.getResources().getDrawable(idPressed);
Drawable focused = idFocused == -1 ? null : context.getResources().getDrawable(idFocused);
Drawable unable = idUnable == -1 ? null : context.getResources().getDrawable(idUnable);
// View.PRESSED_ENABLED_STATE_SET
bg.addState(new int[] { android.R.attr.state_pressed, android.R.attr.state_enabled }, pressed);
// View.ENABLED_FOCUSED_STATE_SET
bg.addState(new int[] { android.R.attr.state_enabled, android.R.attr.state_focused }, focused);
// View.ENABLED_STATE_SET
bg.addState(new int[] { android.R.attr.state_enabled }, normal);
// View.FOCUSED_STATE_SET
bg.addState(new int[] { android.R.attr.state_focused }, focused);
// View.WINDOW_FOCUSED_STATE_SET
bg.addState(new int[] { android.R.attr.state_window_focused }, unable);
// View.EMPTY_STATE_SET
bg.addState(new int[] {}, normal);
return bg;
}
예제 코드:
Button btnNormal = (Button) findViewById(R.id.btnSampleNormal);
btnNormal.setBackgroundDrawable(newSelector(this, R.drawable.btn_normal, R.drawable.btn_selected,
R.drawable.btn_selected, R.drawable.btn_unable));
Button btnUnable = (Button) findViewById(R.id.btnSampleUnable);
btnUnable.setBackgroundDrawable(newSelector(this, R.drawable.btn_normal, R.drawable.btn_selected,
R.drawable.btn_selected, R.drawable.btn_unable));
btnUnable.setEnabled(false);
btnUnable.setOnClickListener(this);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
XML이란 무엇입니까?이것은 저장, 검색 및 공유할 수 있는 형식으로 데이터를 저장하는 강력한 방법입니다. 가장 중요한 것은 XML의 기본 형식이 표준화되어 있기 때문에 시스템이나 플랫폼 간에 로컬 또는 인터넷을 통해 XML을 공유하거나...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.