Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
T
TangKuPos
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
王海
TangKuPos
Commits
6c1feb88
Commit
6c1feb88
authored
Jan 05, 2018
by
zhang_z
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
营销方案;
parent
8afa25ee
Changes
15
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
491 additions
and
78 deletions
+491
-78
app/src/main/java/com/xingdata/zzdpos/base/BaseDialog.java
app/src/main/java/com/xingdata/zzdpos/base/BaseDialog.java
+1
-2
app/src/main/java/com/xingdata/zzdpos/ui/marketing/ms/fragment/EditorFragment.java
...gdata/zzdpos/ui/marketing/ms/fragment/EditorFragment.java
+146
-29
app/src/main/java/com/xingdata/zzdpos/ui/settle/fragment/SettleFragment.java
...om/xingdata/zzdpos/ui/settle/fragment/SettleFragment.java
+12
-0
app/src/main/java/com/xingdata/zzdpos/ui/store/StoreContract.java
...main/java/com/xingdata/zzdpos/ui/store/StoreContract.java
+2
-2
app/src/main/java/com/xingdata/zzdpos/ui/store/StorePresenter.java
...ain/java/com/xingdata/zzdpos/ui/store/StorePresenter.java
+5
-4
app/src/main/java/com/xingdata/zzdpos/ui/store/adapter/SkuAdapter.java
...java/com/xingdata/zzdpos/ui/store/adapter/SkuAdapter.java
+2
-11
app/src/main/java/com/xingdata/zzdpos/ui/store/fragment/SearchFragment.java
...com/xingdata/zzdpos/ui/store/fragment/SearchFragment.java
+3
-3
app/src/main/java/com/xingdata/zzdpos/ui/store/fragment/StoreFragment.java
.../com/xingdata/zzdpos/ui/store/fragment/StoreFragment.java
+109
-5
app/src/main/res/layout/fragment_ms_editor.xml
app/src/main/res/layout/fragment_ms_editor.xml
+18
-8
app/src/main/res/layout/fragment_pay_result.xml
app/src/main/res/layout/fragment_pay_result.xml
+6
-2
app/src/main/res/layout/fragment_store.xml
app/src/main/res/layout/fragment_store.xml
+17
-9
app/src/main/res/layout/item_store_sku.xml
app/src/main/res/layout/item_store_sku.xml
+0
-1
app/src/main/res/layout/view_time_detail.xml
app/src/main/res/layout/view_time_detail.xml
+161
-0
app/src/main/res/values/dimens.xml
app/src/main/res/values/dimens.xml
+4
-0
app/src/main/res/values/strings.xml
app/src/main/res/values/strings.xml
+5
-2
No files found.
app/src/main/java/com/xingdata/zzdpos/base/BaseDialog.java
View file @
6c1feb88
...
...
@@ -101,8 +101,7 @@ public abstract class BaseDialog<P extends BasePresenter, B extends ViewDataBind
mBaseBinding
=
DataBindingUtil
.
inflate
(
inflater
,
R
.
layout
.
dialog_base
,
container
,
false
);
mBaseBinding
.
vsCenter
.
getViewStub
().
setLayoutResource
(
getLayoutId
());
mBaseBinding
.
vsCenter
.
getViewStub
().
setOnInflateListener
((
viewStub
,
view
)
->
mViewBinding
=
DataBindingUtil
.
bind
(
view
));
mBaseBinding
.
vsCenter
.
getViewStub
().
setOnInflateListener
((
viewStub
,
view
)
->
mViewBinding
=
DataBindingUtil
.
bind
(
view
));
mBaseBinding
.
vsCenter
.
getViewStub
().
inflate
();
if
(!
isShowTitle
()
||
getTitle
()
<
0
)
mBaseBinding
.
tvTitle
.
setVisibility
(
View
.
GONE
);
...
...
app/src/main/java/com/xingdata/zzdpos/ui/marketing/ms/fragment/EditorFragment.java
View file @
6c1feb88
package
com
.
xingdata
.
zzdpos
.
ui
.
marketing
.
ms
.
fragment
;
import
android.app.DatePickerDialog
;
import
android.app.TimePickerDialog
;
import
android.content.DialogInterface
;
import
android.databinding.DataBindingUtil
;
import
android.os.Build
;
import
android.support.v7.app.AlertDialog
;
import
android.support.v7.widget.LinearLayoutManager
;
import
android.view.View
;
import
com.xingdata.zzdpos.C
;
import
com.xingdata.zzdpos.R
;
import
com.xingdata.zzdpos.base.BaseFragment
;
import
com.xingdata.zzdpos.databinding.FragmentMsEditorBinding
;
import
com.xingdata.zzdpos.databinding.ViewTimeDetailBinding
;
import
com.xingdata.zzdpos.model.Ms
;
import
com.xingdata.zzdpos.ui.marketing.ms.MsPresenter
;
import
com.xingdata.zzdpos.ui.marketing.ms.adapter.BeanAdapter
;
...
...
@@ -29,6 +34,9 @@ public class EditorFragment extends BaseFragment<MsPresenter, FragmentMsEditorBi
private
BeanAdapter
<
User
>
mUserAdapter
;
private
DatePickerDialog
mDateStartDialog
,
mDateEndDialog
;
private
TimePickerDialog
mTimeStartDialog
,
mTimeEndDialog
;
private
ViewTimeDetailBinding
mTimeDetailBinding
;
@Override
public
int
getLayoutId
()
{
...
...
@@ -50,6 +58,9 @@ public class EditorFragment extends BaseFragment<MsPresenter, FragmentMsEditorBi
mMs
=
new
Ms
();
mMs
.
setMsDateBegin
(
20170105L
);
mMs
.
setMsDateEnd
(
20170115L
);
mMs
.
setMsTimeBegin
(
000000
L
);
mMs
.
setMsTimeEnd
(
235959L
);
mMs
.
setMsWeekPlan
(
"1,2,3,5"
);
}
private
void
setF
()
{
...
...
@@ -82,16 +93,73 @@ public class EditorFragment extends BaseFragment<MsPresenter, FragmentMsEditorBi
* 初始化时间信息界面
*/
private
void
initTimeViews
()
{
//init
mViewBinding
.
setDateStart
(
new
StringBuffer
(
mMs
.
getMsDateBegin
().
toString
()).
insert
(
8
,
"日"
).
insert
(
6
,
"月"
).
insert
(
4
,
"年"
).
toString
());
mViewBinding
.
setDateEnd
(
new
StringBuffer
(
mMs
.
getMsDateEnd
().
toString
()).
insert
(
8
,
"日"
).
insert
(
6
,
"月"
).
insert
(
4
,
"年"
).
toString
());
mTimeDetailBinding
=
null
;
mViewBinding
.
tvTimeMore
.
setOnClickListener
(
view
->
{
}
);
// view stub
mViewBinding
.
vsTimeDetail
.
getViewStub
().
setOnInflateListener
((
viewStub
,
view
)
->
initTimeDetailViews
(
view
)
);
//date
mViewBinding
.
llDateStart
.
setOnClickListener
(
view
->
{
showDatePickerDialog
();
if
(
mDateStartDialog
==
null
)
initDateStartDialog
();
mDateStartDialog
.
show
();
});
mViewBinding
.
llDateEnd
.
setOnClickListener
(
view
->
{
if
(
mDateEndDialog
==
null
)
initDateEndDialog
();
mDateEndDialog
.
show
();
});
// listener
mViewBinding
.
tvTimeMore
.
setOnClickListener
(
view
->
{
if
(
mTimeDetailBinding
==
null
)
{
mViewBinding
.
vsTimeDetail
.
getViewStub
().
inflate
();
}
else
if
(
mTimeDetailBinding
.
getRoot
().
getVisibility
()
==
View
.
VISIBLE
)
{
mTimeDetailBinding
.
getRoot
().
setVisibility
(
View
.
GONE
);
}
else
{
mTimeDetailBinding
.
getRoot
().
setVisibility
(
View
.
VISIBLE
);
}
});
}
/**
* 初始化时间信息详情界面
*
* @param v viewStub的parent
*/
private
void
initTimeDetailViews
(
View
v
)
{
mTimeDetailBinding
=
DataBindingUtil
.
bind
(
v
);
//time
StringBuilder
strTimeBegin
=
new
StringBuilder
(
mMs
.
getMsTimeBegin
().
toString
());
StringBuilder
strTimeEnd
=
new
StringBuilder
(
mMs
.
getMsTimeEnd
().
toString
());
for
(
int
i
=
strTimeBegin
.
length
();
i
<
6
;
i
++)
{
strTimeBegin
.
insert
(
0
,
"0"
);
}
for
(
int
i
=
strTimeEnd
.
length
();
i
<
6
;
i
++)
{
strTimeEnd
.
insert
(
0
,
"0"
);
}
mTimeDetailBinding
.
setTimeStart
(
strTimeBegin
.
delete
(
4
,
6
).
insert
(
2
,
":"
).
toString
());
mTimeDetailBinding
.
setTimeEnd
(
strTimeEnd
.
delete
(
4
,
6
).
insert
(
2
,
":"
).
toString
());
// week
mTimeDetailBinding
.
cbSun
.
setChecked
(
mMs
.
getMsWeekPlan
().
contains
(
"1"
));
mTimeDetailBinding
.
cbMon
.
setChecked
(
mMs
.
getMsWeekPlan
().
contains
(
"2"
));
mTimeDetailBinding
.
cbTue
.
setChecked
(
mMs
.
getMsWeekPlan
().
contains
(
"3"
));
mTimeDetailBinding
.
cbWed
.
setChecked
(
mMs
.
getMsWeekPlan
().
contains
(
"4"
));
mTimeDetailBinding
.
cbThu
.
setChecked
(
mMs
.
getMsWeekPlan
().
contains
(
"5"
));
mTimeDetailBinding
.
cbFri
.
setChecked
(
mMs
.
getMsWeekPlan
().
contains
(
"6"
));
mTimeDetailBinding
.
cbSat
.
setChecked
(
mMs
.
getMsWeekPlan
().
contains
(
"7"
));
// listener
mTimeDetailBinding
.
tvTimeStart
.
setOnClickListener
(
view
->
{
if
(
mTimeStartDialog
==
null
)
initTimeStartDialog
();
mTimeStartDialog
.
show
();
});
mTimeDetailBinding
.
tvTimeEnd
.
setOnClickListener
(
view
->
{
if
(
mTimeEndDialog
==
null
)
initTimeEndDialog
();
mTimeEndDialog
.
show
();
});
}
...
...
@@ -113,8 +181,6 @@ public class EditorFragment extends BaseFragment<MsPresenter, FragmentMsEditorBi
// listener
mGroupAdapter
.
setOnItemClickListener
((
adapter
,
view
,
position
)
->
{
});
mViewBinding
.
llArea
.
setOnClickListener
(
view
->
showSelectorDialog
(
R
.
string
.
ms_editor_area
,
mAreaAdapter
,
(
dialog1
,
which
)
->
{
mViewBinding
.
setArea
(
mAreaAdapter
.
getStrs
()[
which
]);
mAreaAdapter
.
setSelectedPosition
(
which
);
...
...
@@ -130,37 +196,88 @@ public class EditorFragment extends BaseFragment<MsPresenter, FragmentMsEditorBi
}
private
void
showDatePickerDialog
()
{
/**
* 初始化开始日期选择对话框
*/
private
void
initDateStartDialog
()
{
String
[]
strings
=
mViewBinding
.
getDateStart
().
split
(
"[^x00-xff]"
);
DatePickerDialog
dialog
=
new
DatePickerDialog
(
mContext
,
0
,
(
datePicker
,
year
,
month
,
day
)
->
{
mDateStartDialog
=
new
DatePickerDialog
(
mContext
,
0
,
(
datePicker
,
year
,
month
,
day
)
->
{
String
m
=
String
.
valueOf
(
month
+
1
).
length
()
>=
2
?
String
.
valueOf
(
month
+
1
)
:
"0"
+
String
.
valueOf
(
month
+
1
);
String
d
=
String
.
valueOf
(
day
).
length
()
>=
2
?
String
.
valueOf
(
day
)
:
"0"
+
String
.
valueOf
(
day
);
mViewBinding
.
setDateStart
(
year
+
"年"
+
(
month
+
1
)
+
"月"
+
day
+
"日"
);
mMs
.
setMsDateBegin
(
ConvertUtil
.
stringToLong
(
year
+
""
+
month
+
1
+
""
+
day
));
// if (textView.getId() == R.id.tv_date_end &&
// Integer.valueOf(mViewBinding.tvDateStart.getText().toString().replace("-", "")) >
// Integer.valueOf(mViewBinding.tvDateEnd.getText().toString().replace("-", ""))) {
// mViewBinding.tvDateStart.setText(mViewBinding.tvDateEnd.getText());
// String[] stringEnds = mViewBinding.tvDateEnd.getText().toString().split("-");
// mDateStartBinding.dp.updateDate(Integer.valueOf(stringEnds[0]), Integer.valueOf(stringEnds[1]) - 1, Integer.valueOf(stringEnds[2]));
// }
// if (textView.getId() == R.id.tv_date_start &&
// Integer.valueOf(mViewBinding.tvDateStart.getText().toString().replace("-", "")) >
// Integer.valueOf(mViewBinding.tvDateEnd.getText().toString().replace("-", ""))) {
// mViewBinding.tvDateEnd.setText(mViewBinding.tvDateStart.getText());
// String[] stringStarts = mViewBinding.tvDateStart.getText().toString().split("-");
// mDateEndBinding.dp.updateDate(Integer.valueOf(stringStarts[0]), Integer.valueOf(stringStarts[1]) - 1, Integer.valueOf(stringStarts[2]));
// }
},
Integer
.
valueOf
(
strings
[
0
]),
Integer
.
valueOf
(
strings
[
1
])
-
1
,
Integer
.
valueOf
(
strings
[
2
]));
//后边三个参数为显示dialog时默认的日期,月份从0开始,0-11对应1-12个月
dialog
.
show
();
mMs
.
setMsDateBegin
(
ConvertUtil
.
stringToLong
(
year
+
m
+
d
));
if
(
mMs
.
getMsDateBegin
()
>
mMs
.
getMsDateEnd
())
{
mViewBinding
.
setDateEnd
(
mViewBinding
.
getDateStart
());
if
(
mDateEndDialog
!=
null
)
mDateEndDialog
.
updateDate
(
year
,
month
,
day
);
}
},
Integer
.
valueOf
(
strings
[
0
]),
Integer
.
valueOf
(
strings
[
1
])
-
1
,
Integer
.
valueOf
(
strings
[
2
]));
}
/**
* 初始化结束日期选择对话框
*/
private
void
initDateEndDialog
()
{
String
[]
strings
=
mViewBinding
.
getDateEnd
().
split
(
"[^x00-xff]"
);
mDateEndDialog
=
new
DatePickerDialog
(
mContext
,
(
datePicker
,
year
,
month
,
day
)
->
{
String
m
=
String
.
valueOf
(
month
+
1
).
length
()
>=
2
?
String
.
valueOf
(
month
+
1
)
:
"0"
+
String
.
valueOf
(
month
+
1
);
String
d
=
String
.
valueOf
(
day
).
length
()
>=
2
?
String
.
valueOf
(
day
)
:
"0"
+
String
.
valueOf
(
day
);
mViewBinding
.
setDateEnd
(
year
+
"年"
+
(
month
+
1
)
+
"月"
+
day
+
"日"
);
mMs
.
setMsDateEnd
(
ConvertUtil
.
stringToLong
(
year
+
m
+
d
));
if
(
mMs
.
getMsDateBegin
()
>
mMs
.
getMsDateEnd
())
{
mViewBinding
.
setDateStart
(
mViewBinding
.
getDateEnd
());
if
(
mDateStartDialog
!=
null
)
mDateStartDialog
.
updateDate
(
year
,
month
,
day
);
private
void
initDatePickerDialog
(
String
date
)
{
String
[]
strings
=
date
.
split
(
"[^x00-xff]"
);
}
},
Integer
.
valueOf
(
strings
[
0
]),
Integer
.
valueOf
(
strings
[
1
])
-
1
,
Integer
.
valueOf
(
strings
[
2
])
);
}
/**
* 初始化开始时间选择对话框
*/
private
void
initTimeStartDialog
()
{
String
[]
strings
=
mTimeDetailBinding
.
getTimeStart
().
split
(
":"
);
mTimeStartDialog
=
new
TimePickerDialog
(
mContext
,
(
timePicker
,
hourOfDay
,
minute
)
->
{
String
h
=
String
.
valueOf
(
hourOfDay
).
length
()
>=
2
?
String
.
valueOf
(
hourOfDay
)
:
"0"
+
String
.
valueOf
(
hourOfDay
);
String
m
=
String
.
valueOf
(
minute
).
length
()
>=
2
?
String
.
valueOf
(
minute
)
:
"0"
+
String
.
valueOf
(
minute
);
mTimeDetailBinding
.
setTimeStart
(
h
+
":"
+
m
);
mMs
.
setMsTimeBegin
(
ConvertUtil
.
stringToLong
(
h
+
""
+
m
+
59
));
if
(
mMs
.
getMsTimeBegin
()
>
mMs
.
getMsTimeEnd
())
{
mTimeDetailBinding
.
setTimeEnd
(
mTimeDetailBinding
.
getTimeStart
());
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
M
&&
mTimeEndDialog
!=
null
)
{
mTimeEndDialog
.
updateTime
(
hourOfDay
,
minute
);
}
}
},
Integer
.
valueOf
(
strings
[
0
]),
Integer
.
valueOf
(
strings
[
1
]),
true
);
}
/**
* 初始化结束时间选择对话框
*/
private
void
initTimeEndDialog
()
{
String
[]
strings
=
mTimeDetailBinding
.
getTimeEnd
().
split
(
":"
);
mTimeEndDialog
=
new
TimePickerDialog
(
mContext
,
(
timePicker
,
hourOfDay
,
minute
)
->
{
String
h
=
String
.
valueOf
(
hourOfDay
).
length
()
>=
2
?
String
.
valueOf
(
hourOfDay
)
:
"0"
+
String
.
valueOf
(
hourOfDay
);
String
m
=
String
.
valueOf
(
minute
).
length
()
>=
2
?
String
.
valueOf
(
minute
)
:
"0"
+
String
.
valueOf
(
minute
);
mTimeDetailBinding
.
setTimeEnd
(
h
+
":"
+
m
);
mMs
.
setMsTimeEnd
(
ConvertUtil
.
stringToLong
(
h
+
""
+
m
+
59
));
if
(
mMs
.
getMsTimeBegin
()
>
mMs
.
getMsTimeEnd
())
{
mTimeDetailBinding
.
setTimeStart
(
mTimeDetailBinding
.
getTimeEnd
());
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
M
&&
mTimeStartDialog
!=
null
)
{
mTimeStartDialog
.
updateTime
(
hourOfDay
,
minute
);
}
}
},
Integer
.
valueOf
(
strings
[
0
]),
Integer
.
valueOf
(
strings
[
1
]),
true
);
}
/**
* 显示选择对话框
...
...
app/src/main/java/com/xingdata/zzdpos/ui/settle/fragment/SettleFragment.java
View file @
6c1feb88
package
com
.
xingdata
.
zzdpos
.
ui
.
settle
.
fragment
;
import
android.support.annotation.NonNull
;
import
android.support.design.widget.BottomSheetBehavior
;
import
android.support.v7.widget.GridLayoutManager
;
import
android.support.v7.widget.LinearLayoutManager
;
...
...
@@ -58,6 +59,17 @@ public class SettleFragment extends BaseFragment<SettlePresenter, FragmentSettle
mViewBinding
.
cbPoint
.
setButtonDrawable
(
b
?
R
.
mipmap
.
but_elect01
:
R
.
mipmap
.
but_elect02
);
mPresenter
.
changePointState
(
b
);
});
BottomSheetBehavior
.
from
(
mViewBinding
.
llSheet
).
setBottomSheetCallback
(
new
BottomSheetBehavior
.
BottomSheetCallback
()
{
@Override
public
void
onStateChanged
(
@NonNull
View
bottomSheet
,
int
newState
)
{
}
@Override
public
void
onSlide
(
@NonNull
View
bottomSheet
,
float
slideOffset
)
{
mViewBinding
.
tvSettle
.
setAlpha
(
1
-
slideOffset
);
}
});
// init
mPresenter
.
initSettle
();
...
...
app/src/main/java/com/xingdata/zzdpos/ui/store/StoreContract.java
View file @
6c1feb88
...
...
@@ -163,7 +163,7 @@ interface StoreContract {
* @param sku 商品
* @param <Sku> 商品类型
*/
public
abstract
<
Sku
extends
BaseSku
>
void
clickAddSku
(
Sku
sku
);
public
abstract
<
Sku
extends
BaseSku
>
void
clickAddSku
(
Sku
sku
,
int
value
);
/**
* 商店页面 - 点击删除商品
...
...
@@ -171,7 +171,7 @@ interface StoreContract {
* @param sku 商品
* @param <Sku> 商品类型
*/
public
abstract
<
Sku
extends
BaseSku
>
void
clickRemoveSku
(
Sku
sku
);
public
abstract
<
Sku
extends
BaseSku
>
void
clickRemoveSku
(
Sku
sku
,
int
value
);
/**
* 购物车页面 - 购物车发生变化
...
...
app/src/main/java/com/xingdata/zzdpos/ui/store/StorePresenter.java
View file @
6c1feb88
...
...
@@ -126,9 +126,9 @@ public class StorePresenter extends StoreContract.Presenter {
}
@Override
public
<
Sku
extends
BaseSku
>
void
clickAddSku
(
Sku
sku
)
{
public
<
Sku
extends
BaseSku
>
void
clickAddSku
(
Sku
sku
,
int
value
)
{
//更新购物车信息
updateCart
(
sku
,
1
);
updateCart
(
sku
,
value
);
//发送购物车信息(不需要刷新页面)
mView
.
loadSaledetails
(
mSaledetails
,
false
);
//购物车发生变化
...
...
@@ -136,15 +136,16 @@ public class StorePresenter extends StoreContract.Presenter {
}
@Override
public
<
Sku
extends
BaseSku
>
void
clickRemoveSku
(
Sku
sku
)
{
public
<
Sku
extends
BaseSku
>
void
clickRemoveSku
(
Sku
sku
,
int
value
)
{
//更新购物车信息
updateCart
(
sku
,
-
1
);
updateCart
(
sku
,
value
);
//发送购物车信息(不需要刷新页面)
mView
.
loadSaledetails
(
mSaledetails
,
false
);
//购物车发生变化
this
.
cartChanged
();
}
@Override
public
void
cartChanged
()
{
//设置订单信息
...
...
app/src/main/java/com/xingdata/zzdpos/ui/store/adapter/SkuAdapter.java
View file @
6c1feb88
package
com
.
xingdata
.
zzdpos
.
ui
.
store
.
adapter
;
import
android.support.annotation.Nullable
;
import
android.view.View
;
import
com.xingdata.zzdpos.R
;
...
...
@@ -39,24 +38,22 @@ public class SkuAdapter<T extends BaseSku> extends BaseAdapter<T, ItemStoreSkuBi
mViewBinding
.
tvName
.
setText
(
item
.
getSpuName
());
mViewBinding
.
tvAmt
.
setText
(
ConvertUtil
.
fenToYuan
(
item
.
getSkuRetailPrice1
()));
mViewBinding
.
ivIncrease
.
setOnClickListener
(
view
->
{
if
(
mViewBinding
.
getCount
()
>=
99
)
return
;
mViewBinding
.
setCount
(
mViewBinding
.
getCount
()
+
1
);
setViewByCount
(
mViewBinding
);
if
(
mOnCountChangeListener
!=
null
)
{
mOnCountChangeListener
.
onCountChange
(
item
,
1
);
mOnCountChangeListener
.
onCountChange
(
mViewBinding
.
ivPic
,
item
,
1
);
}
});
mViewBinding
.
ivReduce
.
setOnClickListener
(
view
->
{
mViewBinding
.
setCount
(
mViewBinding
.
getCount
()
-
1
);
setViewByCount
(
mViewBinding
);
if
(
mOnCountChangeListener
!=
null
)
{
mOnCountChangeListener
.
onCountChange
(
item
,
-
1
);
mOnCountChangeListener
.
onCountChange
(
mViewBinding
.
ivPic
,
item
,
-
1
);
}
});
mViewBinding
.
setCount
(
0
);
for
(
int
i
=
0
;
i
<
mSaledetails
.
size
();
i
++)
{
if
(
mSaledetails
.
get
(
i
).
getSkuId
().
longValue
()
==
item
.
getSkuId
())
{
...
...
@@ -77,12 +74,6 @@ public class SkuAdapter<T extends BaseSku> extends BaseAdapter<T, ItemStoreSkuBi
mViewBinding
.
ivReduce
.
setVisibility
(
View
.
GONE
);
mViewBinding
.
tvCount
.
setVisibility
(
View
.
GONE
);
}
}
@Override
public
void
setOnItemClickListener
(
@Nullable
OnItemClickListener
listener
)
{
super
.
setOnItemClickListener
(
listener
);
}
}
app/src/main/java/com/xingdata/zzdpos/ui/store/fragment/SearchFragment.java
View file @
6c1feb88
...
...
@@ -35,9 +35,9 @@ public class SearchFragment extends BaseFragment<StorePresenter, FragmentStoreSe
// set sku listener
mSkuAdapter
.
setOnLoadMoreListener
(
this
::
loadMoreSku
,
mViewBinding
.
rlSku
);
mSkuAdapter
.
setOnCountChangeListener
((
sku
,
value
)
->
{
if
(
value
>
0
)
mPresenter
.
clickAddSku
(
sku
);
else
mPresenter
.
clickRemoveSku
(
sku
);
mSkuAdapter
.
setOnCountChangeListener
((
view
,
sku
,
value
)
->
{
if
(
value
>
0
)
mPresenter
.
clickAddSku
(
sku
,
value
);
else
mPresenter
.
clickRemoveSku
(
sku
,
value
);
});
// set empty
...
...
app/src/main/java/com/xingdata/zzdpos/ui/store/fragment/StoreFragment.java
View file @
6c1feb88
package
com
.
xingdata
.
zzdpos
.
ui
.
store
.
fragment
;
import
android.animation.Animator
;
import
android.animation.ValueAnimator
;
import
android.annotation.SuppressLint
;
import
android.graphics.Path
;
import
android.graphics.PathMeasure
;
import
android.support.constraint.ConstraintLayout
;
import
android.support.v7.widget.LinearLayoutManager
;
import
android.view.View
;
import
android.view.animation.LinearInterpolator
;
import
android.widget.ImageView
;
import
com.blankj.utilcode.util.ScreenUtils
;
import
com.blankj.utilcode.util.StringUtils
;
import
com.xingdata.zzdpos.C
;
import
com.xingdata.zzdpos.R
;
...
...
@@ -26,10 +34,12 @@ public class StoreFragment extends BaseFragment<StorePresenter, FragmentStoreBin
private
SkugrpAdapter
mSkugrpAdapter
;
private
SkuAdapter
mSkuAdapter
;
public
interface
OnCountChangeListener
{
void
onCountChange
(
BaseSku
sku
,
int
value
);
void
onCountChange
(
View
view
,
BaseSku
sku
,
int
value
);
}
@Override
public
int
getLayoutId
()
{
return
R
.
layout
.
fragment_store
;
...
...
@@ -50,11 +60,11 @@ public class StoreFragment extends BaseFragment<StorePresenter, FragmentStoreBin
// set sku listener
mViewBinding
.
srlSku
.
setOnRefreshListener
(
this
::
refreshSku
);
mSkuAdapter
.
setOnLoadMoreListener
(
this
::
loadMoreSku
,
mViewBinding
.
rlSku
);
mSkuAdapter
.
setOnCountChangeListener
((
sku
,
value
)
->
{
if
(
value
>
0
)
mPresenter
.
clickAddSku
(
sku
);
else
mPresenter
.
clickRemoveSku
(
sku
);
});
mSkuAdapter
.
setOnCountChangeListener
((
view
,
sku
,
value
)
->
{
if
(
value
>
0
)
this
.
clickAdd
(
view
,
sku
,
value
);
else
mPresenter
.
clickRemoveSku
(
sku
,
value
);
});
// set grp listener
mSkugrpAdapter
.
setOnItemClickListener
((
adapter
,
view
,
position
)
->
mPresenter
.
clickSkugrp
(
mSkugrpAdapter
.
getData
().
get
(
position
)));
...
...
@@ -71,6 +81,7 @@ public class StoreFragment extends BaseFragment<StorePresenter, FragmentStoreBin
mPresenter
.
initStore
();
}
/**
* 刷新商品
*/
...
...
@@ -218,4 +229,97 @@ public class StoreFragment extends BaseFragment<StorePresenter, FragmentStoreBin
}
/**
* 点击添加按钮
*
* @param view 按钮
* @param sku 商品信息
* @param value 数量
*/
private
void
clickAdd
(
View
view
,
BaseSku
sku
,
int
value
)
{
// 路径测量
PathMeasure
mPathMeasure
;
// 贝塞尔曲线中间过程点坐标
float
[]
mCurrentPosition
=
new
float
[
2
];
final
ImageView
icon
=
new
ImageView
(
mContext
);
icon
.
setImageDrawable
(((
ImageView
)
view
).
getDrawable
());
ConstraintLayout
.
LayoutParams
params
=
new
ConstraintLayout
.
LayoutParams
(
view
.
getWidth
(),
view
.
getHeight
());
mViewBinding
.
clStore
.
addView
(
icon
,
params
);
int
[]
parentLocation
=
new
int
[
2
];
mViewBinding
.
clStore
.
getLocationInWindow
(
parentLocation
);
int
startLoc
[]
=
new
int
[
2
];
view
.
getLocationInWindow
(
startLoc
);
// 得到购物车图片的坐标(用于计算动画结束后的坐标)
int
endLoc
[]
=
new
int
[]{
0
,
ScreenUtils
.
getScreenHeight
()};
float
startX
=
startLoc
[
0
]
-
parentLocation
[
0
];
float
startY
=
startLoc
[
1
]
-
parentLocation
[
1
];
// 商品掉落后的终点坐标:购物车起始点-父布局起始点+购物车图片的1/5
float
toX
=
endLoc
[
0
]
-
parentLocation
[
0
];
float
toY
=
endLoc
[
1
]
-
parentLocation
[
1
];
// 开始绘制贝塞尔曲线
Path
path
=
new
Path
();
// 移动到起始点(贝塞尔曲线的起点)
path
.
moveTo
(
startX
,
startY
);
// 使用二阶贝塞尔曲线:注意第一个起始坐标越大,贝塞尔曲线的横向距离就会越大,一般按照下面的式子取即可
path
.
quadTo
((
startX
+
toX
)
/
2
,
startY
,
toX
,
toY
);
// mPathMeasure用来计算贝塞尔曲线的曲线长度和贝塞尔曲线中间插值的坐标,如果是true,path会形成一个闭环
mPathMeasure
=
new
PathMeasure
(
path
,
false
);
// 属性动画实现(从0到贝塞尔曲线的长度之间进行插值计算,获取中间过程的距离值)
ValueAnimator
valueAnimator
=
ValueAnimator
.
ofFloat
(
0
,
mPathMeasure
.
getLength
());
valueAnimator
.
setDuration
(
500
);
// 匀速线性插值器
valueAnimator
.
setInterpolator
(
new
LinearInterpolator
());
valueAnimator
.
addUpdateListener
(
new
ValueAnimator
.
AnimatorUpdateListener
()
{
@Override
public
void
onAnimationUpdate
(
ValueAnimator
animation
)
{
// 当插值计算进行时,获取中间的每个值,
// 这里这个值是中间过程中的曲线长度(下面根据这个值来得出中间点的坐标值)
float
value
=
(
Float
)
animation
.
getAnimatedValue
();
// 获取当前点坐标封装到mCurrentPosition
// boolean getPosTan(float distance, float[] pos, float[] tan) :
// 传入一个距离distance(0<=distance<=getLength()),然后会计算当前距离的坐标点和切线,pos会自动填充上坐标,这个方法很重要。
// mCurrentPosition此时就是中间距离点的坐标值
mPathMeasure
.
getPosTan
(
value
,
mCurrentPosition
,
null
);
// 移动的商品图片(动画图片)的坐标设置为该中间点的坐标
icon
.
setTranslationX
(
mCurrentPosition
[
0
]);
icon
.
setTranslationY
(
mCurrentPosition
[
1
]);
}
});
// 开始执行动画
valueAnimator
.
start
();
// 动画结束后的处理
valueAnimator
.
addListener
(
new
Animator
.
AnimatorListener
()
{
@Override
public
void
onAnimationStart
(
Animator
animation
)
{
}
@Override
public
void
onAnimationEnd
(
Animator
animation
)
{
mPresenter
.
clickAddSku
(
sku
,
value
);
// 把执行动画的商品图片从父布局中移除
mViewBinding
.
clStore
.
removeView
(
icon
);
}
@Override
public
void
onAnimationCancel
(
Animator
animation
)
{
}
@Override
public
void
onAnimationRepeat
(
Animator
animation
)
{
}
});
}
}
app/src/main/res/layout/fragment_ms_editor.xml
View file @
6c1feb88
...
...
@@ -15,14 +15,6 @@
name=
"dateEnd"
type=
"String"
/>
<variable
name=
"timeStart"
type=
"String"
/>
<variable
name=
"timeEnd"
type=
"String"
/>
<variable
name=
"user"
type=
"String"
/>
...
...
@@ -192,6 +184,12 @@
android:textSize=
"@dimen/all_text_size"
/>
</LinearLayout>
<ViewStub
android:id=
"@+id/vs_time_detail"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout=
"@layout/view_time_detail"
/>
<View
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/all_line_width"
...
...
@@ -328,6 +326,18 @@
android:layout_marginBottom=
"@dimen/all_margin"
android:background=
"@color/gray_huanggai"
/>
<Button
android:id=
"@+id/btn_confirm"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"@dimen/all_margin"
android:layout_marginEnd=
"@dimen/all_margin"
android:layout_marginStart=
"@dimen/all_margin"
android:background=
"@drawable/shape_red_r1"
android:foreground=
"?android:attr/selectableItemBackground"
android:text=
"@string/all_confirm"
android:textColor=
"@color/white_caocao"
android:textSize=
"@dimen/all_text_size"
/>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
</layout>
\ No newline at end of file
app/src/main/res/layout/fragment_pay_result.xml
View file @
6c1feb88
...
...
@@ -157,12 +157,16 @@
<Button
android:id=
"@+id/btn_confirm"
style=
"@style/button_positive"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginBottom=
"@dimen/all_margin"
android:layout_marginEnd=
"@dimen/all_margin"
android:layout_marginStart=
"@dimen/all_margin"
android:background=
"@drawable/shape_red_r1"
android:foreground=
"?android:attr/selectableItemBackground"
android:text=
"@{payResult?@string/settle_complete:@string/settle_retry}"
/>
android:text=
"@{payResult?@string/settle_complete:@string/settle_retry}"
android:textColor=
"@color/white_caocao"
android:textSize=
"@dimen/all_text_size"
/>
</LinearLayout>
</layout>
\ No newline at end of file
app/src/main/res/layout/fragment_store.xml
View file @
6c1feb88
...
...
@@ -82,30 +82,38 @@
android:layout_marginTop=
"@dimen/all_margin"
android:background=
"@color/gray_huanggai"
/>
<LinearLayout
<android.support.constraint.ConstraintLayout
android:id=
"@+id/cl_store"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"horizontal"
>
android:layout_height=
"match_parent"
>
<android.support.v7.widget.RecyclerView
android:id=
"@+id/rl_skugrp"
android:layout_width=
"0dp"
android:layout_height=
"match_parent"
android:layout_weight=
"1"
/>
android:layout_height=
"0dp"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintHorizontal_weight=
"1"
app:layout_constraintLeft_toLeftOf=
"parent"
app:layout_constraintRight_toLeftOf=
"@id/srl_sku"
app:layout_constraintTop_toTopOf=
"parent"
/>
<android.support.v4.widget.SwipeRefreshLayout
android:id=
"@+id/srl_sku"
android:layout_width=
"0dp"
android:layout_height=
"match_parent"
android:layout_weight=
"3"
android:background=
"@color/white_caocao"
>
android:layout_height=
"0dp"
android:background=
"@color/white_caocao"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintHorizontal_weight=
"3"
app:layout_constraintLeft_toRightOf=
"@id/rl_skugrp"
app:layout_constraintRight_toRightOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
>
<android.support.v7.widget.RecyclerView
android:id=
"@+id/rl_sku"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
</android.support.v4.widget.SwipeRefreshLayout>
</
Linear
Layout>
</
android.support.constraint.Constraint
Layout>
</LinearLayout>
</layout>
\ No newline at end of file
app/src/main/res/layout/item_store_sku.xml
View file @
6c1feb88
...
...
@@ -9,7 +9,6 @@
<variable
name=
"count"
type=
"int"
/>
</data>
<android.support.constraint.ConstraintLayout
...
...
app/src/main/res/layout/view_time_detail.xml
0 → 100644
View file @
6c1feb88
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
>
<data>
<variable
name=
"timeStart"
type=
"String"
/>
<variable
name=
"timeEnd"
type=
"String"
/>
</data>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
>
<View
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/all_line_width"
android:layout_marginEnd=
"@dimen/all_margin"
android:layout_marginStart=
"@dimen/all_margin"
android:background=
"@color/gray_kongming"
/>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"?attr/actionBarSize"
android:background=
"@color/white_caocao"
android:gravity=
"center_vertical"
android:paddingEnd=
"@dimen/all_margin"
android:paddingStart=
"@dimen/all_margin"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:gravity=
"center_vertical"
android:text=
"@string/ms_editor_time"
android:textColor=
"@color/black_baozheng"
android:textSize=
"@dimen/all_text_size"
/>
<TextView
android:id=
"@+id/tv_time_start"
android:layout_width=
"0dp"
android:layout_height=
"match_parent"
android:layout_marginStart=
"@dimen/all_margin"
android:layout_weight=
"1"
android:foreground=
"?android:attr/selectableItemBackground"
android:gravity=
"center"
android:text=
"@{timeStart}"
android:textColor=
"@color/black_likui"
android:textSize=
"@dimen/all_text_size"
/>
<View
android:layout_width=
"@dimen/view_line_L1"
android:layout_height=
"match_parent"
android:layout_margin=
"@dimen/all_margin"
android:background=
"@color/golden_yuji"
/>
<TextView
android:id=
"@+id/tv_time_end"
android:layout_width=
"0dp"
android:layout_height=
"match_parent"
android:layout_weight=
"1"
android:foreground=
"?android:attr/selectableItemBackground"
android:gravity=
"center"
android:text=
"@{timeEnd}"
android:textColor=
"@color/black_likui"
android:textSize=
"@dimen/all_text_size"
/>
</LinearLayout>
<View
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/all_line_width"
android:layout_marginEnd=
"@dimen/all_margin"
android:layout_marginStart=
"@dimen/all_margin"
android:background=
"@color/gray_kongming"
/>
<TextView
android:layout_width=
"match_parent"
android:layout_height=
"?attr/actionBarSize"
android:background=
"@color/white_caocao"
android:gravity=
"center_vertical"
android:paddingEnd=
"@dimen/all_margin"
android:paddingStart=
"@dimen/all_margin"
android:text=
"@string/ms_editor_week"
android:textColor=
"@color/black_baozheng"
android:textSize=
"@dimen/all_text_size"
/>
<android.support.constraint.ConstraintLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/white_caocao"
android:paddingEnd=
"@dimen/all_margin"
android:paddingStart=
"@dimen/all_margin"
>
<CheckBox
android:id=
"@+id/cb_mon"
android:layout_width=
"wrap_content"
android:layout_height=
"?attr/actionBarSize"
android:text=
"@string/week_mon"
app:layout_constraintHorizontal_chainStyle=
"spread_inside"
app:layout_constraintLeft_toLeftOf=
"parent"
app:layout_constraintRight_toLeftOf=
"@id/cb_tue"
app:layout_constraintTop_toTopOf=
"parent"
/>
<CheckBox
android:id=
"@+id/cb_tue"
android:layout_width=
"wrap_content"
android:layout_height=
"?attr/actionBarSize"
android:text=
"@string/week_tue"
app:layout_constraintLeft_toRightOf=
"@id/cb_mon"
app:layout_constraintRight_toLeftOf=
"@id/cb_wed"
app:layout_constraintTop_toTopOf=
"@id/cb_mon"
/>
<CheckBox
android:id=
"@+id/cb_wed"
android:layout_width=
"wrap_content"
android:layout_height=
"?attr/actionBarSize"
android:text=
"@string/week_wed"
app:layout_constraintLeft_toRightOf=
"@id/cb_tue"
app:layout_constraintRight_toRightOf=
"parent"
app:layout_constraintTop_toTopOf=
"@id/cb_mon"
/>
<CheckBox
android:id=
"@+id/cb_thu"
android:layout_width=
"wrap_content"
android:layout_height=
"?attr/actionBarSize"
android:text=
"@string/week_thu"
app:layout_constraintLeft_toLeftOf=
"@id/cb_mon"
app:layout_constraintTop_toBottomOf=
"@id/cb_mon"
/>
<CheckBox
android:id=
"@+id/cb_fri"
android:layout_width=
"wrap_content"
android:layout_height=
"?attr/actionBarSize"
android:text=
"@string/week_fri"
app:layout_constraintLeft_toLeftOf=
"@id/cb_tue"
app:layout_constraintTop_toTopOf=
"@id/cb_thu"
/>
<CheckBox
android:id=
"@+id/cb_sat"
android:layout_width=
"wrap_content"
android:layout_height=
"?attr/actionBarSize"
android:text=
"@string/week_sat"
app:layout_constraintLeft_toLeftOf=
"@id/cb_wed"
app:layout_constraintTop_toTopOf=
"@id/cb_thu"
/>
<CheckBox
android:id=
"@+id/cb_sun"
android:layout_width=
"wrap_content"
android:layout_height=
"?attr/actionBarSize"
android:text=
"@string/week_sun"
app:layout_constraintTop_toBottomOf=
"@id/cb_thu"
/>
</android.support.constraint.ConstraintLayout>
</LinearLayout>
</layout>
\ No newline at end of file
app/src/main/res/values/dimens.xml
View file @
6c1feb88
...
...
@@ -203,4 +203,8 @@
<dimen
name=
"store_cart_count"
>
20dp
</dimen>
<!--新标准-->
<dimen
name=
"headline"
>
20dp
</dimen>
</resources>
app/src/main/res/values/strings.xml
View file @
6c1feb88
...
...
@@ -333,8 +333,8 @@
<string
name=
"ms_editor_date"
>
起止时间:
</string>
<string
name=
"ms_editor_date_start"
>
开始时间
</string>
<string
name=
"ms_editor_date_end"
>
结束时间
</string>
<string
name=
"ms_editor_time"
>
限定时段
:
</string>
<string
name=
"ms_editor_week"
>
限定星期
:
</string>
<string
name=
"ms_editor_time"
>
限定时段
</string>
<string
name=
"ms_editor_week"
>
限定星期
</string>
<string
name=
"ms_editor_subtitle_ms"
>
活动信息
</string>
<string
name=
"ms_editor_type"
>
营销方式:
</string>
<string
name=
"ms_editor_group"
>
营销主体
</string>
...
...
@@ -365,6 +365,9 @@
<string
name=
"ms_editor_type_gift_hint"
>
条码:请扫码或输入条码
</string>
<string
name=
"ms_editor_type_gift_name"
>
品名:
</string>
<string
name=
"ms_editor_type_gift_price"
>
售价:
</string>
<string
name=
"ms_editor_date_format"
>
%s年%s月%s日
</string>
<string
name=
"ms_editor_time_format"
>
%s:%s
</string>
<!--商品管理-->
<string
name=
"sssku_title"
>
商品维护
</string>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment