Android開発では、カスタムドローブルスタイル、ドローブルで形状スタイルを設定したり、セレクターセレクターを設定したりすることがよくありますが、1つのXMLで複数の描画可能なスタイルが必要な場合、それらに設定されたスタイルがわずかに異なり、複数の描画可能なスタイルをカスタマイズすると肥大化します。
StateListDrawableおよびGradientDrawableの使用
Java実装セレクター:
/** *バックグラウンドセレクターを設定 * * @param presseddraw * @param normordraw * @return */private stateListdrawable getSelector(描画可能なnormordraw、描画可能なpresseddraw){stateListdrawable stateListdrawable = new stateListDrawable(); stateListDrawable.addState(new int [] {android.r.attr.state_selected}、presseddraw); stateListDrawable.AddState(new int [] {}、normaldraw); stateListDrawableを返します;}これは、コードにセレクターを作成することです。作成されたタイプは、stateListDrawableです。 AddState()を介してSelectorに状態を追加できます。ただし、状態を追加する場合、注文があることに注意する必要があります。 StateListDrawableは、最初に最新の追加状態を実行します。州ではない場合は、次の状態を実行します。大規模な状態が正面に配置されている場合、後続の状態を実行せずに大規模な状態を直接実行します。さらに、状態を追加するときは、状態の前に「 - 」記号を追加し、この状態が誤っていることを示します(たとえば、:-Android.r.attr.state_Selected)、そうでなければ真です。
/** * set shape * * @param radius * @param fillcolor * @param width * @param strokecolor * @return */private gradientdrawable getDrawable(int radius、int fillcolor、int width、int strokecolor){gradientdrawable gradientdrawable = new gradientdrawable(); gradientdrawable.setCornerRadius(半径); gradientdrawable.setcolor(fillcolor); gradientdrawable.setstroke(width、strokecolor); GradientDrawableを返します;}コードで動的にGradientDrawableを作成します。これにより、描画可能なスタイルの形状スタイルの機能が実現できます。 SetColorは、塗りつぶしの色の塗りつぶしに等しくなります。 Setcornerradiusは、丸い角のラジアンを形状に設定することです。単一のコーナーのラジアンを設定する場合は、setCornerRadii()を使用して各コーナーのラジアンを設定できます。 SetStroke()はストロークであり、ストロークの幅とエッジの色を埋める必要があります。
最後に、簡単な使用:
GradientDrawable normorable(0、color.white、1、getResources()。getColor(r.color.app_line_color)); gradientdrawable press = getDrawable(0、color.white、1、getResours()。 press); textView.setBackground(selector);
要約します
上記は、さまざまな状態でセレクターの背景色を設定するために編集者によって導入されたJavaコードです。私はそれが誰にでも役立つことを願っています。ご質問がある場合は、メッセージを残してください。編集者は、すべての人に時間内に返信します。 wulin.comのウェブサイトへのご支援ありがとうございます!