Androidでコードを使用した動的設定Selector

964 ワード

一般的にxmlでselectorを設定して、あるViewの背景色がクリックと非クリックの状態であることを表示しますが、StateListDrawableを使用して実現できるコードで動的に設定する必要がある場合があります.
StateListDrawable stateListDrawable = new StateListDrawable();
int corner = context.getResources().getDimensionPixelSize(R.dimen.corner);
GradientDrawable gradientDrawable = new GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT, new int[]{startColor, endColor});
gradientDrawable.setCornerRadius(corner);
stateListDrawable.addState(new int[]{-android.R.attr.state_pressed}, drawable);

gradientDrawable = new GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT, new int[]{startColor, endColor});
drawable.setAlpha(0x4d);
stateListDrawable.addState(new int[]{android.R.attr.state_pressed}, drawable);
view.setBackgroundDrawable(stateListDrawable);

以上の内容:1.StateListDrawableは動的Selector効果を実現する.android.R.attr.state_pressedはクリック効果、-android.R.attr.state_pressedは非クリック効果(例では透明度を調整して区別)3.GradientDrawableは背景グラデーション色を設定