RatioButton(一个带有大小单位转换功能的数量修改控件)
RatioButton
- 带有大小单位转换功能的数量修改控件,常用于商品管理app。
- Quantity modification control with size unit conversion function, commonly used in commodity management app
详细介绍
- 我们开发过程中,部分类型的商品管理app会经常用到大小单位转换,如酒类中的1箱=6瓶的转换。RatioButton就是将大小单位转换的逻辑,库存判断逻辑,越界判断逻辑进行了封装,避免了重复造轮子。目前的v1.0.0还是一个基础版本,后期还需要进行优化。
文章图片
dialog.gif
文章图片
ratio.gif
文章图片
yj.gif
文章图片
zero.gif 关键代码
public void setDisplayCount(int tempSmallCount, int tempBigCount) {
if (ratio > 0) {//ratio为转换率,ratio>0是当有大单位的时候
if (tempBigCount * ratio + tempSmallCount > maxCount) {
ToastUtils.showToast(context, ERRORTIP);
bigCount = maxCount / ratio;
//取整运算
smallCount = maxCount % ratio;
//取余运算
} else {
if (tempSmallCount > ratio) {//当小单位数量大于ratio的时候需要进位
smallCount = tempSmallCount % ratio;
bigCount = tempBigCount + tempSmallCount / ratio;
} else {
smallCount = tempSmallCount;
bigCount = tempBigCount;
}
}
} else {
smallCount = tempSmallCount;
bigCount = tempBigCount;
}
if (smallCount == 0) {//越界判断,当数量为0时,减按钮不能点击并置灰
btnSmallSub.setEnabled(false);
} else {
btnSmallSub.setEnabled(true);
}
if (bigCount == 0) {
btnBigSub.setEnabled(false);
} else {
btnBigSub.setEnabled(true);
}
tvSmallCount.setText(String.valueOf(smallCount));
tvBigCount.setText(String.valueOf(bigCount));
}
属性
属性 | 属性名称 | 类型 | 默认值 |
---|---|---|---|
btnHeight | 控件的高度 | dimension | 0 |
btnWidth | 控件的高度 | dimension | 0 |
tvTextSize | 数量的字体大小 | dimension | 0 |
editable | 是否可以直接编辑 | boolean | false |
haveBigUnit | 是否有大单位 | boolean | false |
minAmount | 最小数量 | integer | 0 |
margin | 小单位按钮距离大单位按钮的距离 | dimension | 10 |
- 1.Add it in your root build.gradle at the end of repositories:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
- 2.Add the dependency
dependencies {
implementation 'com.github.lintianlin:RatioButton:v1.0.0'
}
- 3.edit xml
- 4.edit java
ratioBtn.setRatio(item.getRatio());
ratioBtn.setMaxCount(item.getStorage());
ratioBtn.setUnit(item.getSmallUnit(), item.getBigUnit());
ratioBtn.setDisplayCount(item.getSmallcount(), item.getBigCount());
ratioBtn.setOnCountChangedLisener(new OnCountChangedListener() {
@Override
public void onCountChange(View view, int bigCount, int smallCount) {}
});
推荐阅读
- 一个人的旅行,三亚
- 一个小故事,我的思考。
- 一个人的碎碎念
- 七年之痒之后
- 我从来不做坏事
- 异地恋中,逐渐适应一个人到底意味着什么()
- 迷失的世界(二十七)
- live|live to inspire 一个普通上班族的流水账0723
- 遗憾是生活的常态,但孝顺这件事,我希望每一个人都不留遗憾
- NO.38|NO.38 我不是嫁不出去,而是不想嫁