Android學習之屬於自己的 GitHub UI 庫

無論是比賽還是畢設,設計 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. 效果

WeeklyDisplay

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. 效果

CircleDot

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();
    }
});

四、暫未更新

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章