無論是比賽還是畢設,設計 app 時有不少重複使用的 UI 控件,爲了不每次都重寫或者複製粘貼,於是將自己常用的 UI 控件封裝成輪子,放在自己的 GitHub 上,方便使用。不定期更新
導入依賴
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.NicholasHzf:HongUI:2.0.0'
}
GitHub地址
一、SearchWidget
1. 簡介
一款搜索框控件,支持自定義圖標,保存搜索歷史,自動補全文字等功能。
2. 效果
3. 使用
1.) 導入依賴
2.)在佈局文件中使用
屬性 | 默認值 | 功能 |
---|---|---|
app:history | 歷史記錄 | 歷史記錄標籤標題 |
app:title_hint | 搜索 | 搜索框提示文字 |
app:left_icon_iv | 搜索圖標 | 搜索圖標 |
app:right_icon_iv | 語音圖標 | 語音圖標 |
app:empty_icon_iv | 清空圖標 | 清空圖標 |
<!--樣例-->
<com.hzf.nicholas.custom_ui.SearchWidget
android:id="@+id/search_widget"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:history="History Record"
app:title_hint="hint text" />
3.)在 Java 中使用
//設置搜索框提示信息
mSearchWidget.setSearchHint("修改搜索框默認提示信息");
//設置搜索框歷史記錄標題
mSearchWidget.setHistoryTVText("修改搜索歷史記錄標題");
//設置點擊事件
mSearchWidget.setOnIconClickListener(new SearchWidget.OnIconClickListener() {
@Override
public void onRightClick() {
Toast.makeText(SearchWidgetActivity.this,"語音暫未實現!",Toast.LENGTH_SHORT).show();
}
@Override
public void onHistoryRecordClick(int position) {
String content = SearchRecordLab.get(SearchWidgetActivity.this).getSearchRecords().get(position).getContent();
Intent intent = new Intent(SearchWidgetActivity.this,TestActivity.class);
intent.putExtra("INFO",content);
startActivity(intent);
Toast.makeText(SearchWidgetActivity.this,"點擊:"+content,Toast.LENGTH_SHORT).show();
}
@Override
public void onSearchAction(String content) {
Intent intent = new Intent(SearchWidgetActivity.this,TestActivity.class);
intent.putExtra("INFO",content);
startActivity(intent);
Toast.makeText(SearchWidgetActivity.this,"點擊鍵盤搜索!"+content,Toast.LENGTH_SHORT).show();
}
});
二、WeeklyDisplay
1. 簡介
一個用於展示當前一週或最近七天的周曆,支持單選中某天
2. 效果
3. 使用
1.) 導入依賴
2.)在佈局文件中使用
屬性 | 默認值 | 功能 |
---|---|---|
app:bg_color | Color.WHITE(未選中) Color.BLUE(選中) | item的圓角背景,可用selector |
app:text_day_color | Color.BLUE(未選中) Color.WHITE(選中) | 星期的文字顏色,可用selector |
app:text_date_color | Color.BLUE(未選中) Color.WHITE(選中) | 日期的文字顏色,可用selector |
app:dot_color | Color.YELLOW | 提示點顏色 |
app:with_data | false | 不帶提示點 |
app:padding_day_lr | 0 | 圓角矩形左右內邊距 |
app:padding_day_tb | 0 | 圓角矩形上下內邊距 |
app:padding_date_dot | 0 | 提示點與圓角矩形內邊距 |
app:mode | MODE_NORMAL_THIS_WEEK | 6種模式 |
可供選擇的模式:
<enum name = "MODE_NORMAL_THIS_WEEK" value="0" />
<enum name = "MODE_ENGLISH_THREE_THIS_WEEK" value="1" />
<enum name = "MODE_ENGLISH_SINGLE_THIS_WEEK" value="2" />
<enum name = "MODE_NORMAL" value="3" />
<enum name = "MODE_ENGLISH_THREE" value="4" />
<enum name = "MODE_ENGLISH_SINGLE" value="5" />
<!--樣例-->
<com.hzf.nicholas.custom_ui.week_display.WeekDisplay
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="14dp"
android:layout_marginLeft="14dp"
android:layout_marginRight="14dp"
app:padding_day_lr="20dp"
app:padding_day_tb="30dp"
app:bg_color="@drawable/selector_week_display_bg"
app:text_date_color="@drawable/selector_week_display_date"
app:text_day_color="@drawable/selector_week_display_day"
app:mode="MODE_ENGLISH_SINGLE"/>
3.)在 Java 中使用
//獲取控件
WeekDisplay weekDisplay = findViewById(R.id.second);
//設置提示點顏色
weekDisplay.setDotColor(R.color.fc_blue_for_label);
//設置模式
weekDisplay.setMode(2);
//設置數據(至多三個提示點,data爲長度是七的int數組,值 0 無 1 一個提示點 2 兩個提示點 3|>3 三個提示點)
weekDisplay.setData(data);
//設置點擊事件
weekDisplay.setOnItemClickListener(new WeekDisplay.OnItemClickListener() {
@Override
public void onClick(int position, String day, String date) {
Toast.makeText(WeeklyDisplayActivity.this,"onClick"+position,Toast.LENGTH_SHORT).show();
}
});
三、CircleDot
1. 簡介
一個圓點控件,可用於無序列表的圓點,或者可選擇的一橫排圓點。
2. 效果
3. 使用
1.) 導入依賴
2.)在佈局文件中使用
屬性 | 默認值 | 功能 |
---|---|---|
app:inner_color | #ff0000 | 圓內部顏色 |
app:stroke_color | #0000ff | 圓邊沿顏色,需設置able_select爲true |
app:able_select | false | 能否選中 |
app:selected | false | 是否選中 |
app:radius | 12 | 圓的半徑 |
app:stroke_ratio | 0.02 | 邊線佔半徑的比例 |
<!--樣例-->
<com.hzf.nicholas.custom_ui.circle_dot.CircleDot
android:id="@+id/circle_dot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="14dp"
app:stroke_color="#ff0000"
app:inner_color="#1089ee"
app:able_select="true"
app:selected="true"
app:radius="50"
app:stroke_ratio="0.2"/>
3.)在 Java 中使用
//獲取控件
mCircleDot = findViewById(R.id.circle_dot);
//設置能否選中
mCircleDot.setAbleSelect(true);
設置內部顏色
mCircleDot.setColorStringInner("#1089EE");
//設置邊沿顏色
mCircleDot.setColorStringStroke("#ff0000");
//設置半徑
mCircleDot.setRadius(24);
//設置邊線佔半徑的比例
mCircleDot.setStrokeRatio(0.2f);
//設置選中狀態
mCircleDot.setSelected(true);
//設置點擊事件
mCircleDot.setOnClickListener(new CircleDot.OnClickListener() {
@Override
public void onClick() {
Toast.makeText(CircleDotActivity.this,"點擊了CircleDot!",Toast.LENGTH_SHORT).show();
}
});