AndroidCustomViews
14085 ワード
AndroidCustomViews
Android開発者が使いやすいカスタムコントロールライブラリ
Gradle依存に加わる
カスタムコントロールのリスト NumberPickerViewデジタル選択コントロール、複数行および複数のオプションをサポートするデジタル選択コントロール QuickIndexView通信録右側アルファベット索引コントロール SuperEditTextはワンタッチでクリアでき、アイコンをクリックしてパスワードを表示/非表示にするEditText SingleTextView単行、中央、テキストは1行の末尾で省略されたTextView を超えている. ClearableEditText 0.2.0新たにクリアテキストのEditTextを追加し、AppCompatEditText を直接継承 PasswordEditText 0.2.0パスワードの表示/非表示をクリックまたはタッチするEditTextを追加し、AppCompatEditText を直接継承します.
スクリーンショット(GitHubを見てください.画像はいつもアップロードに失敗します)
使用と説明
NumberPickerView
元のコントロールプロパティ-NumberPicker表示ウィンドウには3つの代替オプションしか表示できません. fling時に抵抗が大きく、速くスライドできない. は、選択された状態と非選択の状態の切り替えが比較的硬い. オプションの内容を一括変更した場合、アニメーション効果はありません. wrapモードを動的に設定すると( 選択位置には文字の説明がありません. コードでは、オプションのスライドスクロールを制御できません.
カスタムコントロールプロパティ-NumberPickerView表示ウィンドウには、複数の代替オプションが表示されます. fling時の摺動速度は速く、摩擦力をデフォルト状態の2倍の とするコードのように設定することができる.非選択の状態でスライドすると、文字の拡大縮小や色のグラデーションなど、グラデーションのアニメーション効果があります. オプションの内容を一括変更する場合、友好的なスライド効果を採用するかどうかを選択することができる. は、wrapかどうか、すなわち、スクロールを循環するかどうかを動的に設定することができる. 選択位置は文字説明を追加することができ、文字フォントのサイズや色などを制御することができる. は、コード内である位置に動的にスライドする機能を有する. は をサポートする.は様々な属性を提供し、UI効果 を最適化する.スライド中に に応答する.上下セルをクリックすると、対応するクリック対象に自動的にスライドします. は、 NumberPickerに対応する重要な方法とインタフェース 互換性のある方法は次のとおりです.
NumberPickerViewの使用方法レイアウト宣言NumberPickerView Javaコードで使用:1)設定データ(String[]mDisplayedValues)が変更されない場合は、(NumberPickerの設定方式と一致) を使用して設定できます.
2)設定データ(String[]mDisplayedValues)が変更された場合は、(NumberPickerの変更データ方式と一致)
あるいはNumberPickerViewが提供する方法:
4.さらに、NumberPickerViewは、スムーズにスクロールする方法を提供する:
また、このメソッドを使用する場合や間接的に呼び出す場合は、scrollアニメーションに一定の時間がかかるため、
5.各カスタム属性の説明
QuickIndexView
レイアウトファイルにQuickIndexViewを追加し、カスタム属性を追加するか、コードにカスタム属性を動的に作成して設定すればよい
APIドキュメント
カスタム属性テーブル
SuperEditText
APIドキュメント
カスタム属性テーブル
ClearableEditText
APIドキュメント
カスタム属性テーブル
PasswordEditText
APIドキュメント
カスタム属性テーブル
ChangeLog 0.1.0 NumberPickerView QuickIndexView SuperEditText SingleTextView
0.2.0 ClearableEditText PasswordEditText
TODO SuperEditTextカスタム属性が多すぎて、 の最適化と再設計が必要です.カスタムView を追加カスタムTabLayout 試験用例(Espressoなどの試験に熟練した大神の意見や推薦資料を歓迎する) もっとカスタマイズしたいコントロールはGithub提IssueかPull Requestでお願いします!
ここまで見えましたので、スターを注文してください.ありがとうございます!
Android開発者が使いやすいカスタムコントロールライブラリ
Gradle依存に加わる
implementation 'com.ayvytr:custom-views:0.2.0'
compile 'com.ayvytr:custom-views:0.2.0'
カスタムコントロールのリスト
スクリーンショット(GitHubを見てください.画像はいつもアップロードに失敗します)
使用と説明
NumberPickerView
NumberPickerView
はandroid原生NumberPicker
と類似のインタフェースおよび類似の機能を有するView
である.主な機能は同様に複数の候補から上下スクロールで必要なオプションを選択するが、NumberPicker
と比較していくつかの主な相違点があり、以下は両者の相違点である.元のコントロールプロパティ-NumberPicker
setWrapSelectorWheel()
メソッド)、「一部のオプションが一時的に表示されない」という問題があります.カスタムコントロールプロパティ-NumberPickerView
mNumberPickerView.setFriction(2 * ViewConfiguration.get(mContext).getScrollFriction());
wrap_content
をサポートし、itemのpadding onValueChanged()
onValueChanged
などのコールバックインタフェースの実行スレッドを属性設定によって設定することができる.setOnValueChangedListener()
setOnScrollListener()
setDisplayedValues()/getDisplayedValues()
setWrapSelectorWheel()/getWrapSelectorWheel()
setMinValue()/getMinValue()
setMaxValue()/getMaxValue()
setValue()/getValue()
:
OnValueChangeListener
OnScrollListener
:
OnValueChangeListenerInScrolling// value change
NumberPickerViewの使用方法
picker.setMinValue(minValue);
picker.setMaxValue(maxValue);
picker.setValue(value);
2)設定データ(String[]mDisplayedValues)が変更された場合は、(NumberPickerの変更データ方式と一致)
int minValue = getMinValue();
int oldMaxValue = getMaxValue();
int oldSpan = oldMaxValue - minValue + 1;
int newMaxValue = display.length - 1;
int newSpan = newMaxValue - minValue + 1;
if (newSpan > oldSpan) {
setDisplayedValues(display);
setMaxValue(newMaxValue);
} else {
setMaxValue(newMaxValue);
setDisplayedValues(display);
}
あるいはNumberPickerViewが提供する方法:
refreshByNewDisplayedValues
(String[]display)この方法を使用する場合は、データの変更前後のminValue値が変わらないこと、および設定されたdisplayがnullでなく、長さが0でないことに注意する必要があります.3)スライド中にvalue changeに応答する関数を追加 picker.setOnValueChangeListenerInScrolling(...);
4.さらに、NumberPickerViewは、スムーズにスクロールする方法を提供する:
public void smoothScrollToValue(int fromValue, int toValue, boolean needRespond)
この方法は、setValue(int)
の方法と同様に、現在表示されているitemを動的に設定できる点であり、異なる点は、NumberPickerView
をスクロールから滑らかにすることができ、すなわち、fromValue
の値から最も近いパスを選択してtoValue
にスクロールすることができ、第3のパラメータneedRespond
は、スライドパスでonValueChanged
コールバック関数に応答するかどうかを識別するために使用される.複数のNumberPickerView
が連動している場合、異なるNumberPickerView
の停止時間が異なる可能性が高いため、このときにonValueChanged
コールバックに応答すると、再び連動してデータが不正確になる可能性があり、needRespond
をfalse
に設定することで、スライド中にコールバック関数に応答することを回避することができる.また、このメソッドを使用する場合や間接的に呼び出す場合は、scrollアニメーションに一定の時間がかかるため、
onCreate(Bundle savedInstanceState)
で呼び出す必要がある場合は、次の方法を使用してください. @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//
mNumberPickerView.post(new Runnable() {
@Override
public void run() {
// smoothScrollToValue()
}
});
}
5.各カスタム属性の説明
// , 3
// divider,
// divider
//divider
//divider
//divider
//
//
//
//
//
//
// ,stringarray
// , setMinValue()
// , setMaxValue()
// wrap, setWrapSelectorWheel
//
// , 。 WrapSelectorWheel==false
// ," " array item
//
//item padding, wrap_content
//item padding, wrap_content
// detach NumberPickerView ,
// onValueChange , Dialog/PopupWindow ,
// 。 Dialog/PopupWindow , false
// `onValueChanged` 。
// `true`, 。 `false` 。
// wrap_content , array " ",
// , , String
// , , String + + marginstart + marginend
//
QuickIndexView
レイアウトファイルにQuickIndexViewを追加し、カスタム属性を追加するか、コードにカスタム属性を動的に作成して設定すればよい
APIドキュメント
clearIndexList() .
getGravity() indexList Gravity
getIndexList() indexList
getLineSpacing()
getTextColor() textColor
getTextSize()
setGravity(int gravity) , Gravity.TOP, Gravity.CENTER,Gravity.CENTER_VERTICAL , .
setIndexArray(String[] letterArray) indexList
setIndexList(List indexList) indexList
setLineSpacing(int lineSpacing)
setOnLetterChangeListener(OnLetterChangeListener onLetterChangeListener)
setTextColor(int textColor) textColor
setTextSize(int textSize) , , 0, .
カスタム属性テーブル
android:textColor
android:textSize
android:background
android:gravity ( )
android:lineSpacingExtra
indexArray
SuperEditText
APIドキュメント
addTextChangedListener(TextWatcher watcher)
getText()
setClearIcon(Drawable drawable)
setClearIcon(int id)
setFocusChangeListener(View.OnFocusChangeListener l)
setHint(int id)
setHint(String hint)
setKeyListener(KeyListener keyListener)
setSelection(int index)
setText(int id)
setText(String text)
カスタム属性テーブル
ClearableEditText
APIドキュメント
getClearTextDrawable() Drawable
isShowClearDrawableNoFocus() Drawable
setClearTextDrawable(Drawable clearTextDrawable) Drawable
setClearTextDrawable(int drawableId) Drawable
setShowClearDrawableNoFocus(boolean showClearDrawableNoFocus) Drawable
カスタム属性テーブル
Drawable
PasswordEditText
APIドキュメント
getHidePasswordDrawable() Drawable
getShowPasswordDrawable() Drawable
isPasswordInputType(int inputType) .
isShowDrawableNoFocus() Drawable.
setClickMode(boolean clickMode) / Drawable
setHidePasswordDrawable(Drawable hidePasswordDrawable) Drawable
setHidePasswordDrawable(int hidePasswordDrawableId) Drawable
setShowDrawableNoFocus(boolean showDrawableNoFocus) Drawable
setShowPasswordDrawable(android.graphics.drawable.Drawable showPasswordDrawable) Drawable
setShowPasswordDrawable(int showPasswordDrawableId) Drawable
カスタム属性テーブル
Drawable
Drawable
Drawable
,true: , ;false: ,
Drawable
ChangeLog
TODO
ここまで見えましたので、スターを注文してください.ありがとうございます!