Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
R
RvApp
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
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
lify
RvApp
Commits
4ffa57a2
Commit
4ffa57a2
authored
Jul 05, 2019
by
linfeng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bug修复
parent
221b04cd
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
935 additions
and
0 deletions
+935
-0
SimpleLoadView.java
.../com/ruiwenliu/wrapper/weight/refresh/SimpleLoadView.java
+62
-0
view_load_foot.xml
RvWrapper/src/main/res/layout/view_load_foot.xml
+13
-0
ConsumeRecordActivity.java
...er/src/main/java/com/rv.member/ConsumeRecordActivity.java
+131
-0
ConsumeRecordListAdapter.java
.../java/com/rv.member/adapter/ConsumeRecordListAdapter.java
+78
-0
AllDayDetailFragment.java
...ain/java/com/rv.member/fragment/AllDayDetailFragment.java
+39
-0
GiveDetailFragment.java
.../main/java/com/rv.member/fragment/GiveDetailFragment.java
+39
-0
UserDetailFragment.java
.../main/java/com/rv.member/fragment/UserDetailFragment.java
+133
-0
FreeDayProgressView.java
...src/main/java/com/rv.member/view/FreeDayProgressView.java
+131
-0
activity_consume_record.xml
...in_member/src/main/res/layout/activity_consume_record.xml
+12
-0
activity_frees_day.xml
plugin_member/src/main/res/layout/activity_frees_day.xml
+142
-0
activity_purchase_record.xml
...n_member/src/main/res/layout/activity_purchase_record.xml
+11
-0
item_consume_record.xml
plugin_member/src/main/res/layout/item_consume_record.xml
+139
-0
colors.xml
plugin_member/src/main/res/values/colors.xml
+5
-0
No files found.
RvWrapper/src/main/java/com/ruiwenliu/wrapper/weight/refresh/SimpleLoadView.java
0 → 100644
View file @
4ffa57a2
package
com
.
ruiwenliu
.
wrapper
.
weight
.
refresh
;
import
android.content.Context
;
import
android.support.annotation.Nullable
;
import
android.util.AttributeSet
;
import
android.view.Gravity
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.widget.LinearLayout
;
import
android.widget.TextView
;
import
com.ruiwenliu.wrapper.R
;
public
class
SimpleLoadView
extends
LinearLayout
implements
IFooterWrapper
{
private
TextView
tvStatus
;
public
SimpleLoadView
(
Context
context
)
{
this
(
context
,
null
);
}
public
SimpleLoadView
(
Context
context
,
@Nullable
AttributeSet
attrs
)
{
this
(
context
,
attrs
,
0
);
}
public
SimpleLoadView
(
Context
context
,
@Nullable
AttributeSet
attrs
,
int
defStyleAttr
)
{
super
(
context
,
attrs
,
defStyleAttr
);
initView
();
}
private
void
initView
()
{
View
view
=
LayoutInflater
.
from
(
getContext
()).
inflate
(
R
.
layout
.
view_load_foot
,
this
,
false
);
tvStatus
=
view
.
findViewById
(
R
.
id
.
tv_status
);
addView
(
view
);
}
@Override
public
View
getFooterView
()
{
return
this
;
}
@Override
public
void
pullUp
()
{
tvStatus
.
setText
(
"加载更多"
);
}
@Override
public
void
pullUpReleasable
()
{
tvStatus
.
setText
(
"松手可加载更多"
);
}
@Override
public
void
pullUpRelease
()
{
tvStatus
.
setText
(
"正在加载..."
);
}
@Override
public
void
pullUpFinish
()
{
}
}
RvWrapper/src/main/res/layout/view_load_foot.xml
0 → 100644
View file @
4ffa57a2
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:gravity=
"center"
>
<TextView
android:id=
"@+id/tv_status"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"上拉加载更多..."
/>
</LinearLayout>
plugin_member/src/main/java/com/rv.member/ConsumeRecordActivity.java
0 → 100644
View file @
4ffa57a2
package
com
.
rv
.
member
;
import
android.content.Intent
;
import
android.os.Bundle
;
import
android.support.v7.widget.LinearLayoutManager
;
import
android.support.v7.widget.RecyclerView
;
import
com.chad.library.adapter.base.BaseQuickAdapter
;
import
com.frame.rv.config.RvFrameConfig
;
import
com.ruiwenliu.wrapper.base.BaseBean
;
import
com.ruiwenliu.wrapper.base.BaseStatusActivity
;
import
com.ruiwenliu.wrapper.weight.TitleView
;
import
com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshLayout
;
import
com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshView
;
import
com.rv.home.rv.module.ApiConfig
;
import
com.rv.home.rv.module.basic.presenter.CommonPresenter
;
import
com.rv.home.rv.module.ui.main.home.order.OrderDetailActivity
;
import
com.rv.home.rv.module.ui.main.home.order.bean.OrderListBean
;
import
com.rv.member.adapter.ConsumeRecordListAdapter
;
import
com.yuyife.okgo.OkGoUtil
;
import
java.util.ArrayList
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
import
butterknife.BindView
;
public
class
ConsumeRecordActivity
extends
BaseStatusActivity
<
CommonPresenter
>
implements
SimpleRefreshLayout
.
OnSimpleRefreshListener
,
BaseQuickAdapter
.
RequestLoadMoreListener
{
@BindView
(
R2
.
id
.
refresh
)
SimpleRefreshLayout
simpleRefreshLayout
;
@BindView
(
R2
.
id
.
recyclerView
)
RecyclerView
recyclerView
;
private
int
mPage
=
1
;
private
int
pageCount
;
private
List
<
OrderListBean
.
DataBeanX
.
DataBean
>
lists
=
new
ArrayList
<>();
private
ConsumeRecordListAdapter
adapter
=
null
;
@Override
protected
int
setLayout
()
{
return
R
.
layout
.
activity_consume_record
;
}
@Override
protected
void
initView
(
Bundle
savedInstanceState
,
TitleView
titleView
,
Intent
intent
)
{
titleView
.
setTitle
(
"消费记录"
);
recyclerView
.
setLayoutManager
(
new
LinearLayoutManager
(
mActivity
));
adapter
=
new
ConsumeRecordListAdapter
(
lists
,
mClickListener
);
adapter
.
setEmptyView
(
getEmptyView
(
recyclerView
,
-
1
,
getString
(
R
.
string
.
tv_no_consume_data
)));
adapter
.
setOnLoadMoreListener
(
this
,
recyclerView
);
recyclerView
.
setAdapter
(
adapter
);
simpleRefreshLayout
.
setHeaderView
(
new
SimpleRefreshView
(
this
));
// simpleRefreshLayout.setFooterView(new SimpleLoadView(this), 100);
simpleRefreshLayout
.
setOnSimpleRefreshListener
(
this
);
}
@Override
public
void
onShowResult
(
int
requestType
,
BaseBean
result
)
{
if
(
requestType
==
1
)
{
// 下拉刷新数据
lists
.
clear
();
simpleRefreshLayout
.
onRefreshComplete
();
}
else
if
(
requestType
==
2
)
{
// 上拉加载更多
simpleRefreshLayout
.
onLoadMoreComplete
();
}
OrderListBean
listBean
=
(
OrderListBean
)
result
;
if
(
listBean
!=
null
&&
listBean
.
getData
()
!=
null
)
{
pageCount
=
listBean
.
getData
().
getTotalPage
();
lists
.
addAll
(
listBean
.
getData
().
getData
());
// lists.add(new OrderListBean.DataBeanX.DataBean());
// lists.add(new OrderListBean.DataBeanX.DataBean());
// lists.add(new OrderListBean.DataBeanX.DataBean());
// lists.add(new OrderListBean.DataBeanX.DataBean());
// lists.add(new OrderListBean.DataBeanX.DataBean());
// lists.add(new OrderListBean.DataBeanX.DataBean());
// lists.add(new OrderListBean.DataBeanX.DataBean());
// lists.add(new OrderListBean.DataBeanX.DataBean());
// lists.add(new OrderListBean.DataBeanX.DataBean());
adapter
.
notifyDataSetChanged
();
}
}
@Override
protected
void
loadData
(
Bundle
savedInstanceState
,
Intent
intent
)
{
super
.
loadData
(
savedInstanceState
,
intent
);
getConsumeRecordData
(
0
);
}
private
void
getConsumeRecordData
(
int
position
)
{
Map
<
String
,
Object
>
headMap
=
new
LinkedHashMap
<>();
if
(
OkGoUtil
.
getToken
()
!=
null
)
headMap
.
put
(
"Authorization"
,
OkGoUtil
.
getToken
());
Map
<
String
,
Object
>
bodyMap
=
new
LinkedHashMap
<>();
bodyMap
.
put
(
"page"
,
mPage
);
bodyMap
.
put
(
"limit"
,
10
);
// bodyMap.put("status", "3");
bodyMap
.
put
(
"hasMemberRight"
,
1
);
bodyMap
.
put
(
"type"
,
1
);
bodyMap
.
put
(
"multiStatus"
,
"4,5,6"
);
mPresenter
.
getData
(
RvFrameConfig
.
VEHICLE_ORDER
,
position
,
ApiConfig
.
HTTP_URL_ORDER_LIST
,
OrderListBean
.
class
,
bodyMap
,
headMap
,
mPage
==
1
?
true
:
false
);
}
private
ConsumeRecordListAdapter
.
ConsumeListener
mClickListener
=
new
ConsumeRecordListAdapter
.
ConsumeListener
()
{
@Override
public
void
click
(
OrderListBean
.
DataBeanX
.
DataBean
bean
)
{
if
(
bean
!=
null
)
{
startActivity
(
OrderDetailActivity
.
getIntent
(
ConsumeRecordActivity
.
this
,
bean
));
}
}
};
@Override
public
void
onRefresh
()
{
mPage
=
1
;
getConsumeRecordData
(
1
);
}
@Override
public
void
onLoadMoreRequested
()
{
if
(
mPage
>=
pageCount
)
{
adapter
.
loadMoreEnd
();
}
else
{
mPage
+=
1
;
getConsumeRecordData
(
2
);
}
}
}
plugin_member/src/main/java/com/rv.member/adapter/ConsumeRecordListAdapter.java
0 → 100644
View file @
4ffa57a2
package
com
.
rv
.
member
.
adapter
;
import
android.text.TextUtils
;
import
android.view.View
;
import
android.widget.ImageView
;
import
com.chad.library.adapter.base.BaseQuickAdapter
;
import
com.chad.library.adapter.base.BaseViewHolder
;
import
com.ruiwenliu.wrapper.util.glide.GlideManager
;
import
com.rv.home.rv.module.ui.main.home.order.bean.OrderListBean
;
import
com.rv.member.R
;
import
java.util.List
;
public
class
ConsumeRecordListAdapter
extends
BaseQuickAdapter
<
OrderListBean
.
DataBeanX
.
DataBean
,
BaseViewHolder
>
{
private
ConsumeListener
mListener
;
public
interface
ConsumeListener
{
void
click
(
OrderListBean
.
DataBeanX
.
DataBean
bean
);
}
public
ConsumeRecordListAdapter
(
List
<
OrderListBean
.
DataBeanX
.
DataBean
>
dataBeans
,
ConsumeListener
mClickListener
)
{
super
(
R
.
layout
.
item_consume_record
,
dataBeans
);
this
.
mListener
=
mClickListener
;
}
@Override
protected
void
convert
(
BaseViewHolder
helper
,
final
OrderListBean
.
DataBeanX
.
DataBean
bean
)
{
ImageView
imgCarType
=
helper
.
itemView
.
findViewById
(
R
.
id
.
img_car_type
);
GlideManager
.
getInstance
(
mContext
).
loadImage
(
"https://xxtest.upyuns.com/image/admin/2019-06-27/4.png"
,
imgCarType
,
160
,
160
);
if
(
bean
!=
null
)
{
if
(!
TextUtils
.
isEmpty
(
bean
.
getCrtTime
()))
{
helper
.
setText
(
R
.
id
.
tv_consume_time
,
"下单时间: "
+
bean
.
getCrtTime
());
if
(
bean
.
getStatusX
()
==
4
)
{
helper
.
setText
(
R
.
id
.
tv_state
,
"待出行"
);
}
else
if
(
bean
.
getStatusX
()
==
5
)
{
helper
.
setText
(
R
.
id
.
tv_state
,
"出行中"
);
}
else
if
(
bean
.
getStatusX
()
==
6
)
{
helper
.
setText
(
R
.
id
.
tv_state
,
"已完成"
);
}
if
(!
TextUtils
.
isEmpty
(
bean
.
getName
()))
{
helper
.
setText
(
R
.
id
.
tv_car_type
,
bean
.
getName
());
}
helper
.
setText
(
R
.
id
.
tv_price
,
"¥"
+
bean
.
getOrderAmount
());
if
(!
TextUtils
.
isEmpty
(
bean
.
getPicture
()))
{
// ImageView imgCarType = helper.itemView.findViewById(R.id.img_car_type);
GlideManager
.
getInstance
(
mContext
).
loadImage
(
bean
.
getPicture
(),
imgCarType
);
}
}
OrderListBean
.
DataBeanX
.
DataBean
.
OrderRentVehicleDetail
vehicleDetail
=
bean
.
getOrderRentVehicleDetail
();
if
(
vehicleDetail
!=
null
)
{
helper
.
setText
(
R
.
id
.
tv_location
,
vehicleDetail
.
getStart_city_name
()
+
"-"
+
vehicleDetail
.
getEnd_city_name
());
helper
.
setText
(
R
.
id
.
tv_get_info
,
vehicleDetail
.
getStart_time
()
+
" "
+
vehicleDetail
.
getStart_addr
());
helper
.
setText
(
R
.
id
.
tv_return_info
,
vehicleDetail
.
getEnd_time
()
+
" "
+
vehicleDetail
.
getEnd_addr
());
if
(
vehicleDetail
.
getFreeDays
()
>
0
)
{
helper
.
setText
(
R
.
id
.
tv_member_right
,
"免费"
+
vehicleDetail
.
getFreeDays
()
+
"天"
);
}
else
if
(
vehicleDetail
.
getRebate
()
>
0
)
{
helper
.
setText
(
R
.
id
.
tv_member_right
,
((
int
)
vehicleDetail
.
getRebate
()
/
10
)
+
"折"
);
}
}
}
helper
.
itemView
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
view
)
{
if
(
mListener
!=
null
)
{
mListener
.
click
(
bean
);
}
}
});
}
}
plugin_member/src/main/java/com/rv.member/fragment/AllDayDetailFragment.java
0 → 100644
View file @
4ffa57a2
package
com
.
rv
.
member
.
fragment
;
import
android.os.Bundle
;
import
com.ruiwenliu.wrapper.base.BaseBean
;
import
com.ruiwenliu.wrapper.base.BaseFragment
;
import
com.rv.home.rv.module.basic.presenter.CommonPresenter
;
import
com.rv.member.R
;
/******
* 总天数明细
*/
public
class
AllDayDetailFragment
extends
BaseFragment
<
CommonPresenter
>
{
public
static
AllDayDetailFragment
getInstance
()
{
AllDayDetailFragment
fragment
=
new
AllDayDetailFragment
();
return
fragment
;
}
@Override
public
int
getViewLayout
()
{
return
R
.
layout
.
common_refresh
;
}
@Override
protected
void
initView
(
Bundle
savedInstanceState
)
{
}
@Override
protected
void
loadData
(
Bundle
savedInstanceState
)
{
}
@Override
public
void
onShowResult
(
int
requestType
,
BaseBean
result
)
{
}
}
plugin_member/src/main/java/com/rv.member/fragment/GiveDetailFragment.java
0 → 100644
View file @
4ffa57a2
package
com
.
rv
.
member
.
fragment
;
import
android.os.Bundle
;
import
com.ruiwenliu.wrapper.base.BaseBean
;
import
com.ruiwenliu.wrapper.base.BaseFragment
;
import
com.rv.home.rv.module.basic.presenter.CommonPresenter
;
import
com.rv.member.R
;
/*******
* 赠送明细
*/
public
class
GiveDetailFragment
extends
BaseFragment
<
CommonPresenter
>
{
public
static
GiveDetailFragment
getInstance
()
{
GiveDetailFragment
fragment
=
new
GiveDetailFragment
();
return
fragment
;
}
@Override
public
int
getViewLayout
()
{
return
R
.
layout
.
common_refresh
;
}
@Override
protected
void
initView
(
Bundle
savedInstanceState
)
{
}
@Override
protected
void
loadData
(
Bundle
savedInstanceState
)
{
}
@Override
public
void
onShowResult
(
int
requestType
,
BaseBean
result
)
{
}
}
plugin_member/src/main/java/com/rv.member/fragment/UserDetailFragment.java
0 → 100644
View file @
4ffa57a2
package
com
.
rv
.
member
.
fragment
;
import
android.os.Bundle
;
import
android.support.v7.widget.LinearLayoutManager
;
import
android.support.v7.widget.RecyclerView
;
import
com.chad.library.adapter.base.BaseQuickAdapter
;
import
com.frame.rv.config.RvFrameConfig
;
import
com.ruiwenliu.wrapper.base.BaseBean
;
import
com.ruiwenliu.wrapper.base.BaseFragment
;
import
com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshLayout
;
import
com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshView
;
import
com.rv.home.rv.module.ApiConfig
;
import
com.rv.home.rv.module.basic.presenter.CommonPresenter
;
import
com.rv.home.rv.module.ui.main.home.order.OrderDetailActivity
;
import
com.rv.home.rv.module.ui.main.home.order.bean.OrderListBean
;
import
com.rv.member.ConsumeRecordActivity
;
import
com.rv.member.R
;
import
com.rv.member.R2
;
import
com.rv.member.adapter.ConsumeRecordListAdapter
;
import
com.yuyife.okgo.OkGoUtil
;
import
java.util.ArrayList
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
import
butterknife.BindView
;
public
class
UserDetailFragment
extends
BaseFragment
<
CommonPresenter
>
implements
SimpleRefreshLayout
.
OnSimpleRefreshListener
,
BaseQuickAdapter
.
RequestLoadMoreListener
{
@BindView
(
R2
.
id
.
refresh
)
SimpleRefreshLayout
simpleRefreshLayout
;
@BindView
(
R2
.
id
.
recyclerView
)
RecyclerView
recyclerView
;
private
int
mPage
=
1
;
private
int
pageCount
;
private
ConsumeRecordListAdapter
adapter
=
null
;
private
List
<
OrderListBean
.
DataBeanX
.
DataBean
>
lists
=
new
ArrayList
<>();
public
static
UserDetailFragment
getInstance
()
{
UserDetailFragment
fragment
=
new
UserDetailFragment
();
return
fragment
;
}
@Override
public
int
getViewLayout
()
{
return
R
.
layout
.
common_refresh
;
}
@Override
protected
void
initView
(
Bundle
savedInstanceState
)
{
recyclerView
.
setLayoutManager
(
new
LinearLayoutManager
(
getContext
()));
adapter
=
new
ConsumeRecordListAdapter
(
lists
,
mClickListener
);
adapter
.
setEmptyView
(
getEmptyView
(
recyclerView
,
-
1
,
getString
(
R
.
string
.
tv_no_consume_data
)));
adapter
.
setOnLoadMoreListener
(
this
,
recyclerView
);
recyclerView
.
setAdapter
(
adapter
);
simpleRefreshLayout
.
setHeaderView
(
new
SimpleRefreshView
(
getContext
()));
simpleRefreshLayout
.
setOnSimpleRefreshListener
(
this
);
}
@Override
protected
void
loadData
(
Bundle
savedInstanceState
)
{
getConsumeRecordData
(
0
);
}
@Override
public
void
onShowResult
(
int
requestType
,
BaseBean
result
)
{
if
(
requestType
==
1
)
{
// 下拉刷新数据
lists
.
clear
();
simpleRefreshLayout
.
onRefreshComplete
();
}
else
if
(
requestType
==
2
)
{
// 上拉加载更多
simpleRefreshLayout
.
onLoadMoreComplete
();
}
OrderListBean
listBean
=
(
OrderListBean
)
result
;
if
(
listBean
!=
null
&&
listBean
.
getData
()
!=
null
)
{
// pageCount = listBean.getData().getTotalPage();
// lists.addAll(listBean.getData().getData());
lists
.
add
(
new
OrderListBean
.
DataBeanX
.
DataBean
());
lists
.
add
(
new
OrderListBean
.
DataBeanX
.
DataBean
());
lists
.
add
(
new
OrderListBean
.
DataBeanX
.
DataBean
());
lists
.
add
(
new
OrderListBean
.
DataBeanX
.
DataBean
());
lists
.
add
(
new
OrderListBean
.
DataBeanX
.
DataBean
());
lists
.
add
(
new
OrderListBean
.
DataBeanX
.
DataBean
());
lists
.
add
(
new
OrderListBean
.
DataBeanX
.
DataBean
());
lists
.
add
(
new
OrderListBean
.
DataBeanX
.
DataBean
());
lists
.
add
(
new
OrderListBean
.
DataBeanX
.
DataBean
());
adapter
.
notifyDataSetChanged
();
}
}
private
void
getConsumeRecordData
(
int
position
)
{
Map
<
String
,
Object
>
headMap
=
new
LinkedHashMap
<>();
if
(
OkGoUtil
.
getToken
()
!=
null
)
headMap
.
put
(
"Authorization"
,
OkGoUtil
.
getToken
());
Map
<
String
,
Object
>
bodyMap
=
new
LinkedHashMap
<>();
bodyMap
.
put
(
"page"
,
mPage
);
bodyMap
.
put
(
"limit"
,
10
);
// bodyMap.put("status", "3");
bodyMap
.
put
(
"hasMemberRight"
,
1
);
bodyMap
.
put
(
"type"
,
1
);
bodyMap
.
put
(
"multiStatus"
,
"4,5,6"
);
mPresenter
.
getData
(
RvFrameConfig
.
VEHICLE_ORDER
,
position
,
ApiConfig
.
HTTP_URL_ORDER_LIST
,
OrderListBean
.
class
,
bodyMap
,
headMap
,
mPage
==
1
?
true
:
false
);
}
@Override
public
void
onRefresh
()
{
mPage
=
1
;
getConsumeRecordData
(
1
);
}
@Override
public
void
onLoadMoreRequested
()
{
if
(
mPage
>=
pageCount
)
{
adapter
.
loadMoreEnd
();
}
else
{
mPage
+=
1
;
getConsumeRecordData
(
2
);
}
}
private
ConsumeRecordListAdapter
.
ConsumeListener
mClickListener
=
new
ConsumeRecordListAdapter
.
ConsumeListener
()
{
@Override
public
void
click
(
OrderListBean
.
DataBeanX
.
DataBean
bean
)
{
if
(
bean
!=
null
)
{
startActivity
(
OrderDetailActivity
.
getIntent
(
getContext
(),
bean
));
}
}
};
}
plugin_member/src/main/java/com/rv.member/view/FreeDayProgressView.java
0 → 100644
View file @
4ffa57a2
package
com
.
rv
.
member
.
view
;
import
android.content.Context
;
import
android.graphics.Canvas
;
import
android.graphics.Color
;
import
android.graphics.Paint
;
import
android.util.AttributeSet
;
import
android.view.View
;
import
com.ruiwenliu.wrapper.util.ScaleUtils
;
/***********
* 大概逻辑
* 1 计算出view的宽度
* 2 画圆(左圆和右圆)
* 3 根据进度(progress)计算出黄线起始坐标和结束左边,画黄色
* 4 画灰线
* 5 在左边和右边绘制文字
* 6 提供进度的水平位置
*/
public
class
FreeDayProgressView
extends
View
{
private
int
total
=
0
;
private
int
progress
=
0
;
private
int
width
;
private
int
height
;
private
Paint
cirPaint
;
// 圆的画笔
private
Paint
remPaint
;
// 剩余天数画笔
private
float
progressWidth
=
0
;
private
int
cicleRidius
;
// 圆半径
private
int
lineWidth
;
private
float
drawLength
;
private
DrawListener
mDrawListener
;
public
FreeDayProgressView
(
Context
context
)
{
super
(
context
);
}
public
FreeDayProgressView
(
Context
context
,
AttributeSet
attrs
)
{
super
(
context
,
attrs
);
initParameter
();
initPaint
();
}
/******
*
*/
private
void
initParameter
()
{
cicleRidius
=
ScaleUtils
.
dip2px
(
getContext
(),
5
);
lineWidth
=
ScaleUtils
.
dip2px
(
getContext
(),
2
);
}
/********
* 初始化画笔
*/
private
void
initPaint
()
{
cirPaint
=
new
Paint
();
cirPaint
.
setColor
(
Color
.
parseColor
(
"#FFB74B"
));
cirPaint
.
setStrokeWidth
(
lineWidth
);
cirPaint
.
setAntiAlias
(
true
);
remPaint
=
new
Paint
();
remPaint
.
setColor
(
Color
.
parseColor
(
"#cccccc"
));
remPaint
.
setStrokeWidth
(
lineWidth
);
remPaint
.
setTextSize
(
ScaleUtils
.
sp2px
(
getContext
(),
12
));
remPaint
.
setAntiAlias
(
true
);
}
@Override
protected
void
onMeasure
(
int
widthMeasureSpec
,
int
heightMeasureSpec
)
{
super
.
onMeasure
(
widthMeasureSpec
,
heightMeasureSpec
);
width
=
MeasureSpec
.
getSize
(
widthMeasureSpec
);
height
=
MeasureSpec
.
getSize
(
heightMeasureSpec
);
}
@Override
protected
void
onDraw
(
Canvas
canvas
)
{
super
.
onDraw
(
canvas
);
canvas
.
drawCircle
(
cicleRidius
,
cicleRidius
,
cicleRidius
,
cirPaint
);
// 画起始圆
canvas
.
drawCircle
(
width
-
cicleRidius
,
cicleRidius
,
cicleRidius
,
cirPaint
);
// 画结束的圆
canvas
.
drawLine
(
cicleRidius
*
2
,
cicleRidius
,
drawLength
+
cicleRidius
*
2
,
cicleRidius
,
cirPaint
);
canvas
.
drawLine
(
drawLength
+
cicleRidius
*
2
,
cicleRidius
,
width
-
cicleRidius
*
2
,
cicleRidius
,
remPaint
);
canvas
.
drawText
(
"0"
,
0
,
cicleRidius
*
2
+
ScaleUtils
.
dip2px
(
getContext
(),
12
),
remPaint
);
canvas
.
drawText
(
total
+
""
,
width
-
remPaint
.
measureText
(
total
+
""
),
cicleRidius
*
2
+
ScaleUtils
.
dip2px
(
getContext
(),
12
),
remPaint
);
observeDraw
();
}
/**********
* 观察绘制流程
*/
private
void
observeDraw
()
{
if
(
drawLength
<
progressWidth
)
{
drawLength
=
drawLength
+
5
;
drawLength
=
drawLength
>
progressWidth
?
progressWidth
:
drawLength
;
invalidate
();
return
;
}
if
(
mDrawListener
!=
null
)
{
mDrawListener
.
drawFinish
((
int
)
progressWidth
);
}
}
/******
* 设置进度
* @param progress
*/
public
void
setData
(
int
total
,
int
progress
)
{
this
.
total
=
total
>
0
?
total
:
0
;
this
.
progress
=
progress
>
total
?
total
:
(
progress
<
0
?
0
:
progress
);
if
(
total
!=
0
)
{
progressWidth
=
progress
/
(
total
*
1.0f
)
*
width
;
}
invalidate
();
}
/******
* 设置进度
* @param progress
*/
public
void
setData
(
int
total
,
int
progress
,
DrawListener
listener
)
{
this
.
mDrawListener
=
listener
;
setData
(
total
,
progress
);
}
public
interface
DrawListener
{
void
drawFinish
(
int
progressWidth
);
}
}
plugin_member/src/main/res/layout/activity_consume_record.xml
0 → 100644
View file @
4ffa57a2
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@color/gray_EEEEEE"
android:orientation=
"vertical"
tools:context=
".ConsumeRecordActivity"
>
<include
layout=
"@layout/common_refresh"
/>
</LinearLayout>
\ No newline at end of file
plugin_member/src/main/res/layout/activity_frees_day.xml
0 → 100644
View file @
4ffa57a2
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
tools:context=
".FreesDayActivity"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/colorMain"
android:gravity=
"center_horizontal"
android:orientation=
"vertical"
>
<com.base.utils.ui.image.round.RoundImageView
android:id=
"@+id/iv_avatar"
android:layout_width=
"@dimen/size_60"
android:layout_height=
"@dimen/size_60"
android:layout_marginTop=
"@dimen/size_20"
android:src=
"@drawable/common_icon_avatar_default"
/>
<TextView
android:id=
"@+id/tv_nickname"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/size_10"
android:textColor=
"@color/colorYellow"
android:textSize=
"@dimen/text_16"
/>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
>
<TextView
android:id=
"@+id/tv_has_use_day"
android:layout_width=
"@dimen/size_60"
android:layout_height=
"@dimen/size_25"
android:layout_gravity=
"left"
android:gravity=
"center"
android:textColor=
"@color/white"
android:textSize=
"@dimen/sp_12"
android:visibility=
"gone"
/>
</LinearLayout>
<com.rv.member.view.FreeDayProgressView
android:id=
"@+id/progress_view"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_30"
android:layout_marginLeft=
"@dimen/size_30"
android:layout_marginRight=
"@dimen/size_30"
/>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/size_20"
android:orientation=
"horizontal"
android:weightSum=
"3"
>
<TextView
android:id=
"@+id/tv_all_day"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:gravity=
"center"
android:textColor=
"@color/gray_EEEEEE"
android:textSize=
"@dimen/sp_14"
/>
<TextView
android:id=
"@+id/tv_use_day"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:gravity=
"center"
android:textColor=
"@color/gray_EEEEEE"
android:textSize=
"@dimen/sp_14"
/>
<TextView
android:id=
"@+id/tv_remain_day"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:gravity=
"center"
android:textColor=
"@color/gray_EEEEEE"
android:textSize=
"@dimen/sp_14"
/>
</LinearLayout>
</LinearLayout>
<RelativeLayout
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_48"
android:background=
"@color/white"
android:orientation=
"horizontal"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_alignParentLeft=
"true"
android:layout_centerVertical=
"true"
android:layout_marginLeft=
"@dimen/size_20"
android:gravity=
"center_vertical"
android:text=
"赠送好友免费用车"
android:textColor=
"@color/color_999"
/>
<Button
android:id=
"@+id/btn_give"
android:layout_width=
"@dimen/size_80"
android:layout_height=
"@dimen/size_25"
android:layout_alignParentRight=
"true"
android:layout_centerVertical=
"true"
android:layout_marginRight=
"@dimen/size_20"
android:background=
"@drawable/shape_rv_bg_dark_yellow"
android:gravity=
"center"
android:text=
"赠送"
android:textColor=
"@color/white"
android:textSize=
"@dimen/sp_12"
/>
</RelativeLayout>
<include
layout=
"@layout/common_line"
/>
<android.support.v7.widget.RecyclerView
android:id=
"@+id/recyclerview"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/colorWrite"
/>
<include
layout=
"@layout/common_line"
/>
<android.support.v4.view.ViewPager
android:id=
"@+id/viewpager"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
</LinearLayout>
\ No newline at end of file
plugin_member/src/main/res/layout/activity_purchase_record.xml
0 → 100644
View file @
4ffa57a2
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
tools:context=
".PurchaseRecordActivity"
>
<include
layout=
"@layout/common_refresh"
/>
</LinearLayout>
\ No newline at end of file
plugin_member/src/main/res/layout/item_consume_record.xml
0 → 100644
View file @
4ffa57a2
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/gray_EEEEEE"
android:orientation=
"vertical"
>
<TextView
android:id=
"@+id/tv_consume_time"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/size_30"
android:gravity=
"bottom"
android:paddingLeft=
"@dimen/dp_10"
android:paddingBottom=
"@dimen/size_3"
android:text=
"下单时间"
android:textColor=
"@color/color_999"
android:textSize=
"@dimen/sp_12"
/>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:background=
"@color/white"
android:orientation=
"vertical"
>
<RelativeLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/size_5"
android:paddingLeft=
"@dimen/dp_10"
android:paddingRight=
"@dimen/dp_10"
>
<TextView
android:id=
"@+id/tv_location"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_alignParentLeft=
"true"
android:text=
"东莞-东莞"
android:textColor=
"@color/color_999"
android:textSize=
"@dimen/sp_12"
/>
<TextView
android:id=
"@+id/tv_state"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_alignParentRight=
"true"
android:text=
"待出行"
android:textColor=
"@color/black"
android:textSize=
"@dimen/sp_12"
/>
</RelativeLayout>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/size_10"
android:layout_marginTop=
"@dimen/size_5"
android:layout_marginRight=
"@dimen/size_10"
android:layout_marginBottom=
"7dp"
android:orientation=
"horizontal"
>
<FrameLayout
android:layout_width=
"75dp"
android:layout_height=
"75dp"
>
<ImageView
android:id=
"@+id/img_car_type"
android:layout_width=
"75dp"
android:layout_height=
"75dp"
android:scaleType=
"fitXY"
/>
<TextView
android:id=
"@+id/tv_member_right"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:background=
"@drawable/bg_use_type"
android:paddingLeft=
"@dimen/size_5"
android:paddingTop=
"@dimen/size_3"
android:paddingRight=
"@dimen/size_5"
android:paddingBottom=
"@dimen/size_3"
android:text=
"免费3天"
android:textColor=
"@color/white"
android:textSize=
"@dimen/sp_12"
/>
</FrameLayout>
<LinearLayout
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/size_3"
android:orientation=
"vertical"
>
<TextView
android:id=
"@+id/tv_car_type"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"大通自行式C型房车"
android:textColor=
"@color/black"
android:textSize=
"@dimen/sp_16"
android:textStyle=
"normal"
/>
<TextView
android:id=
"@+id/tv_get_info"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/size_3"
android:drawableLeft=
"@drawable/rentingcar_icon_piccar"
android:drawablePadding=
"@dimen/size_3"
android:text=
"xxxxxxxx"
android:textColor=
"@color/color_999"
android:textSize=
"@dimen/size_10"
android:textStyle=
"bold"
/>
<TextView
android:id=
"@+id/tv_return_info"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:drawableLeft=
"@drawable/rentingcar_icon_retcar"
android:drawablePadding=
"@dimen/size_3"
android:text=
"xxxxxxxx"
android:textColor=
"@color/color_999"
android:textSize=
"@dimen/size_10"
android:textStyle=
"bold"
/>
<TextView
android:id=
"@+id/tv_price"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/size_5"
android:text=
"¥2000"
android:textColor=
"#f25b5b"
android:textSize=
"@dimen/sp_14"
android:textStyle=
"bold"
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
plugin_member/src/main/res/values/colors.xml
0 → 100644
View file @
4ffa57a2
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color
name=
"white"
>
#ffffff
</color>
<color
name=
"color_999"
>
#999999
</color>
</resources>
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