# ohos-betterpickers **Repository Path**: hihopeorg/ohos-betterpickers ## Basic Information - **Project Name**: ohos-betterpickers - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-05-12 - **Last Updated**: 2024-05-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ohos-betterpickers **本项目是基于开源项目betterpickers进行ohos化的移植和开发的,可以通过项目标签以及github地址( https://github.com/code-troopers/android-betterpickers )追踪到原项目版本** #### 项目介绍 - 项目名称:ohos-betterpickers - 所属系列:ohos的第三方组件适配移植 - 功能:日历、时间、市区等UI Dialog 弹框框架,提供可定制主题的日历选择器。 - 项目移植状态:完成 - 调用差异:无差异。 - 项目作者和维护人:hihope - 联系方式:hihope@hoperun.com - 原项目Doc地址:https://github.com/code-troopers/android-betterpickers - 基线release版本:V3.1.0,SHA1:c7cd2c4e930c21287aee85a54e57cb05a5df8b5f - 编程语言:Java - 外部库依赖:无 #### 展示效果 ![avatar](screenshot/preview.gif) #### 安装教程 ##### 方案一: 1. 下载服务库har包ohos-betterpickers_ohos.har。 2. 启动 DevEco Studio,将下载的har包,导入工程目录“entry->libs”下。 3. 在moudle级别下的build.gradle文件中添加依赖,在dependences标签中增加对libs目录下har包的引用。 ``` dependencies { implementation fileTree(dir: 'libs', include: ['*.jar', '*.har']) …… } ``` 4. 在导入的har包上点击右键,选择“Add as Library”对包进行引用,选择需要引用的模块,并点击“OK”即引用成功。 ##### 方案二: 1. 在工程的build.gradle的allprojects中,添加HAR所在的Maven仓地址: ``` repositories { maven { url 'http://106.15.92.248:8081/repository/Releases/' } } ``` 2. 在应用模块的build.gradle的dependencies闭包中,添加如下代码: ``` dependencies { implementation 'com.codetroopers.ohos:betterpickers:1.0.0' } ``` #### 使用说明: 有关该项目的业务实现,请参见“entry”文件夹. ### Calendar Date Picker ```java button.setClickedListener(c -> { CalendarDatePickerDialog dpd = CalendarDatePickerDialog.newInstance(getContext(), this); dpd.setOnDismissListener(onDismissListener); dpd.setFirstDayOfWeek(Calendar.SUNDAY); dpd.setPreselectedDate(now.get(Calendar.YEAR), now.get(Calendar.MONTH) - 1, now.get(Calendar.DAY_OF_MONTH) - 2); dpd.setDateRange(null, maxDate); dpd.setAccentColor(Color.getIntColor("#9C27B0")); dpd.setThemeDark(true); // dpd.setThemeLight(true); dpd.show(); }); ``` ### Radial Time Picker ```java button.setClickedListener(c -> { TimePickerDialog tpd12 = TimePickerDialog.newInstance(getContext(), this, false); // 最后一个参数:是否是24小时制 tpd12.setOnDismissListener(onDismissListener); tpd12.setForced12hFormat(); tpd12.setStartTime(10, 10); tpd12.setAccentColor(Color.getIntColor("#9C27B0")); tpd12.setThemeDark(true); // tpd12.setThemeLight(true); tpd12.show(); }); ``` ### Recurrence Picker ```java button.setClickedListener(c -> { RecurrencePickerDialog rpd = new RecurrencePickerDialog(SampleRecurrenceBasicUsage.this); rpd.setOnRecurrenceSetListener(SampleRecurrenceBasicUsage.this); rpd.show(); }); ``` ### Timezone Picker ```java button.setClickedListener(new Component.ClickedListener() { @Override public void onClick(Component v) { TimeZonePickerDialog tzpg = new TimeZonePickerDialog(getContext()); tzpg.setOnTimeZoneSetListener(SampleTimeZoneBasicUsage.this); tzpg.show(); } }); ``` ### Date Picker ```java button.setClickedListener(new Component.ClickedListener() { @Override public void onClick(Component v) { DatePickerBuilder dpb = new DatePickerBuilder() .setContext(getContext()) .addDatePickerDialogHandler(DateBasicUsageAbility.this) .setDayOfMonth(d) .setMonthOfYear(m-1) .setYear(y) .setReference(BUTTON_ONE_REFERENCE) .setTheme(mTitleColor,mDividerColor,mTextColor,mBgColor); dpb.show(); } }); ``` ### Expiration Picker ```java button.setClickedListener(new Component.ClickedListener() { @Override public void onClick(Component v) { ExpirationPickerBuilder builder = new ExpirationPickerBuilder() .setContext(getContext()) .setMinYear(3000) .setOnDismissListener(ExpirationDissListenerAbility.this) .addExpirationPickerDialogHandler(ExpirBasicUsageAbility.this); builder.show(); } }); ``` ### HMS Picker ```java button.setClickedListener(new Component.ClickedListener() { @Override public void onClick(Component v) { HmsPickerBuilder builder = new HmsPickerBuilder() .setContext(getContext()) .setReference(BUTTON_TWO_REFERENCE) .setBgColor(Color.getIntColor("#323266")) .setTextColor(Color.BLACK.getValue()) .setlineColor(Color.BLACK.getValue()) .setOnDismissListener(HmsDismissListerAbility.this) .addHmsPickerDialogHandler(HmsBasicUsageAbility.this); builder.show(); } }); ``` ### Number Picker ```java button.setClickedListener(new Component.ClickedListener() { @Override public void onClick(Component v) { NumberPickerDialog dialog = new NumberPickerDialog(getContext()); dialog.setCurrentNumber(item); Vector tmp = new Vector<>(); tmp.add(SampleNumberDoubleListAdapter.this); dialog.setNumberPickerDialogHandlersV2(tmp); dialog.setReference(i); dialog.show(); } }); ``` ### Time Picker ```java button.setClickedListener(new Component.ClickedListener() { @Override public void onClick(Component v) { TimePickerBuilder tpb = new TimePickerBuilder() .setContext(getContext()) .setBgColor(Color.WHITE.getValue()) .setTextColor(Color.BLACK.getValue()) .setOnDismissListener(SampleTimeDismissListener.this) .addTimePickerDialogHandler(SampleTimeBasicUsage.this); tpb.show(); } }); ``` #### 版本迭代 - v1.0.0 1.目前支持功能如下: ``` - 日历选择器 UI 效果 - 时分秒输入设置 UI 效果 - 时间选择器设置 UI 效果 - 数字控制,最大值、最小值、浮点数等 UI 效果 - 时区模糊查询 - 按小时、按天、按周、按月份、按年份重复类似于闹钟设置功能 ``` #### 版权和许可信息 Apache License, Version 2.0