Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
supplier
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
王宇航
supplier
Commits
b3a5330a
Commit
b3a5330a
authored
Mar 25, 2020
by
Wyh
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
3-25 引導頁
parent
f8ac03e3
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
692 additions
and
1 deletions
+692
-1
main/src/main/res/drawable/shape_triangle.xml
+15
-0
public-base/src/main/java/com/gingersoft/gsa/cloud/ui/view/TriangleView.java
+93
-0
public-base/src/main/java/com/gingersoft/gsa/cloud/ui/widget/Indicator/UIndicator.java
+332
-0
public-base/src/main/res/anim/rotate_anticlockwise_anim.xml
+12
-0
public-base/src/main/res/anim/rotate_clockwise_anim.xml
+12
-0
public-base/src/main/res/drawable-xhdpi/ic_guide_close.png
+0
-0
public-base/src/main/res/layout/pager_navigator_layout.xml
+28
-0
public-base/src/main/res/layout/pager_navigator_layout_no_scroll.xml
+19
-0
user-login/src/main/java/com/gingersoft/gsa/cloud/user/login/mvp/bean/GuideBean.java
+40
-0
user-login/src/main/java/com/gingersoft/gsa/cloud/user/login/mvp/ui/adapter/GuideAdapter.java
+77
-0
user-login/src/main/res/anim/anim_alpha_hide.xml
+8
-0
user-login/src/main/res/anim/anim_alpha_show.xml
+8
-0
user-login/src/main/res/layout/item_guide.xml
+47
-0
user-login/src/main/res/layout/user_login_activity_login.xml
+1
-1
user-login/src/main/res/mipmap-xhdpi/img_start.jpg
+0
-0
user-login/src/main/res/mipmap-xhdpi/pic_guide_bg.png
+0
-0
user-login/src/main/res/mipmap-xhdpi/pic_guide_one.png
+0
-0
user-login/src/main/res/mipmap-xhdpi/pic_guide_three.png
+0
-0
user-login/src/main/res/mipmap-xhdpi/pic_guide_two.png
+0
-0
No files found.
main/src/main/res/drawable/shape_triangle.xml
0 → 100644
View file @
b3a5330a
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<item
android:id=
"@+id/shape_id"
>
<!-- 正三角 -->
<rotate
android:fromDegrees=
"45"
android:pivotX=
"80%"
android:pivotY=
"50%"
>
<shape
android:shape=
"rectangle"
>
<solid
android:color=
"#C8C8C8"
/>
</shape>
</rotate>
</item>
</layer-list>
\ No newline at end of file
public-base/src/main/java/com/gingersoft/gsa/cloud/ui/view/TriangleView.java
0 → 100644
View file @
b3a5330a
package
com
.
gingersoft
.
gsa
.
cloud
.
ui
.
view
;
import
android.content.Context
;
import
android.content.res.TypedArray
;
import
android.graphics.Canvas
;
import
android.graphics.Paint
;
import
android.graphics.Path
;
import
android.util.AttributeSet
;
import
android.view.animation.AnimationUtils
;
import
com.gingersoft.gsa.cloud.base.R
;
import
com.qmuiteam.qmui.alpha.QMUIAlphaImageButton
;
public
class
TriangleView
extends
QMUIAlphaImageButton
{
private
static
final
int
TOP
=
0
;
private
static
final
int
BOTTOM
=
1
;
private
static
final
int
RIGHT
=
2
;
private
static
final
int
LEFT
=
3
;
private
Paint
mPaint
;
private
Path
path
;
//三角形朝向
private
int
direction
;
private
int
color
;
private
boolean
isOpen
;
public
TriangleView
(
Context
context
)
{
this
(
context
,
null
);
}
public
TriangleView
(
Context
context
,
AttributeSet
attrs
)
{
this
(
context
,
attrs
,
0
);
}
public
TriangleView
(
Context
context
,
AttributeSet
attrs
,
int
defStyleAttr
)
{
super
(
context
,
attrs
,
defStyleAttr
);
TypedArray
typedArray
=
context
.
obtainStyledAttributes
(
attrs
,
R
.
styleable
.
TriangleView
,
0
,
0
);
color
=
typedArray
.
getColor
(
R
.
styleable
.
TriangleView_trv_color
,
context
.
getResources
().
getColor
(
R
.
color
.
color_c8
));
direction
=
typedArray
.
getInt
(
R
.
styleable
.
TriangleView_trv_direction
,
TOP
);
typedArray
.
recycle
();
init
();
}
//初始化畫筆
private
void
init
()
{
mPaint
=
new
Paint
();
//設置抗鋸齒
mPaint
.
setAntiAlias
(
true
);
mPaint
.
setStyle
(
Paint
.
Style
.
FILL
);
mPaint
.
setColor
(
color
);
path
=
new
Path
();
}
@Override
protected
void
onDraw
(
Canvas
canvas
)
{
super
.
onDraw
(
canvas
);
switch
(
direction
)
{
case
TOP:
path
.
moveTo
(
0
,
getHeight
());
path
.
lineTo
(
getWidth
(),
getHeight
());
path
.
lineTo
(
getWidth
()
/
2
,
0
);
break
;
case
BOTTOM:
path
.
moveTo
(
0
,
0
);
path
.
lineTo
(
getWidth
()
/
2
,
getHeight
());
path
.
lineTo
(
getWidth
(),
0
);
break
;
case
RIGHT:
path
.
moveTo
(
0
,
0
);
path
.
lineTo
(
0
,
getHeight
());
path
.
lineTo
(
getWidth
(),
getHeight
()
/
2
);
break
;
case
LEFT:
path
.
moveTo
(
0
,
getHeight
()
/
2
);
path
.
lineTo
(
getWidth
(),
getHeight
());
path
.
lineTo
(
getWidth
(),
0
);
break
;
}
path
.
close
();
canvas
.
drawPath
(
path
,
mPaint
);
}
public
void
toggle
(){
if
(
isOpen
){
startAnimation
(
AnimationUtils
.
loadAnimation
(
getContext
(),
R
.
anim
.
rotate_anticlockwise_anim
));
}
else
{
startAnimation
(
AnimationUtils
.
loadAnimation
(
getContext
(),
R
.
anim
.
rotate_clockwise_anim
));
}
isOpen
=
!
isOpen
;
}
}
public-base/src/main/java/com/gingersoft/gsa/cloud/ui/widget/Indicator/UIndicator.java
0 → 100644
View file @
b3a5330a
package
com
.
gingersoft
.
gsa
.
cloud
.
ui
.
widget
.
Indicator
;
import
android.content.Context
;
import
android.content.res.ColorStateList
;
import
android.content.res.TypedArray
;
import
android.graphics.Canvas
;
import
android.graphics.Color
;
import
android.graphics.Paint
;
import
android.graphics.RectF
;
import
android.util.AttributeSet
;
import
android.view.View
;
import
androidx.annotation.Nullable
;
import
androidx.recyclerview.widget.RecyclerView
;
import
androidx.viewpager2.widget.ViewPager2
;
import
androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback
;
import
com.gingersoft.gsa.cloud.base.R
;
/**
* 通用ViewPager指示器
*/
public
class
UIndicator
extends
View
{
private
static
final
String
TAG
=
"UIndicator"
;
//指示器样式一 选中未选中都是圆点
public
static
final
int
STYLE_CIRCLR_CIRCLE
=
0
;
//指示器样式二 选中未选中都是方形
public
static
final
int
STYLE_RECT_RECT
=
1
;
//指示器样式三 选中方形,未选中圆点
public
static
final
int
STYLE_CIRCLR_RECT
=
2
;
//横向排列
public
static
final
int
HORIZONTAL
=
0
;
//纵向排列
public
static
final
int
VERTICAL
=
1
;
private
Context
mContext
;
//指示器之间的间距
private
int
spacing
;
//指示器排列方向
private
int
orientation
=
HORIZONTAL
;
//选中与为选中的颜色
private
ColorStateList
selectedColor
,
normalColor
;
//指示器样式,默认都是圆点
private
int
mStyle
=
STYLE_CIRCLR_CIRCLE
;
//样式一 圆点半径大小
private
int
circleCircleRadius
=
0
;
//样式二 方形大小及圆角
private
int
rectRectItemWidth
=
0
,
rectRectItemHeight
=
0
,
rectRectCorner
=
0
;
//样式三 选中的方形大小及圆角
private
int
circleRectItemWidth
=
0
,
circleRectItemHeight
=
0
,
circleRectCorner
=
0
;
//样式三 未选中的圆点半径
private
int
circleRectRadius
=
0
;
//画笔
private
Paint
normalPaint
,
selectedPaint
;
//指示器item的区域
private
RectF
mRectF
;
//指示器大小
private
int
width
,
height
;
//指示器item个数
private
int
itemCount
=
0
;
//当前选中的位置
private
int
selection
=
0
;
private
ViewPager2
viewPager
;
public
UIndicator
(
Context
context
)
{
this
(
context
,
null
);
}
public
UIndicator
(
Context
context
,
@Nullable
AttributeSet
attrs
)
{
this
(
context
,
attrs
,
0
);
}
public
UIndicator
(
Context
context
,
@Nullable
AttributeSet
attrs
,
int
defStyleAttr
)
{
super
(
context
,
attrs
,
defStyleAttr
);
mContext
=
context
;
init
(
attrs
);
intPaint
();
checkItemCount
();
}
/**
* 加载自定义属性
*/
private
void
init
(
AttributeSet
attrs
)
{
// 加载自定义属性集合
TypedArray
ta
=
mContext
.
obtainStyledAttributes
(
attrs
,
R
.
styleable
.
Indicator
);
//- 第二个参数是默认设置颜色
selectedColor
=
ta
.
getColorStateList
(
R
.
styleable
.
Indicator_selected_color
);
normalColor
=
ta
.
getColorStateList
(
R
.
styleable
.
Indicator_normal_color
);
spacing
=
ta
.
getDimensionPixelSize
(
R
.
styleable
.
Indicator_spacing
,
dip2px
(
6
));
orientation
=
ta
.
getInt
(
R
.
styleable
.
Indicator_orientation
,
HORIZONTAL
);
mStyle
=
ta
.
getInt
(
R
.
styleable
.
Indicator_style
,
STYLE_CIRCLR_CIRCLE
);
circleCircleRadius
=
ta
.
getDimensionPixelSize
(
R
.
styleable
.
Indicator_circle_circle_radius
,
dip2px
(
3
));
rectRectCorner
=
ta
.
getDimensionPixelSize
(
R
.
styleable
.
Indicator_rect_rect_corner
,
0
);
rectRectItemHeight
=
ta
.
getDimensionPixelSize
(
R
.
styleable
.
Indicator_rect_rect_itemHeight
,
dip2px
(
3
));
rectRectItemWidth
=
ta
.
getDimensionPixelSize
(
R
.
styleable
.
Indicator_rect_rect_itemWidth
,
dip2px
(
15
));
circleRectCorner
=
ta
.
getDimensionPixelSize
(
R
.
styleable
.
Indicator_circle_rect_corner
,
0
);
circleRectRadius
=
ta
.
getDimensionPixelSize
(
R
.
styleable
.
Indicator_circle_rect_radius
,
dip2px
(
3
));
circleRectItemHeight
=
ta
.
getDimensionPixelSize
(
R
.
styleable
.
Indicator_circle_rect_itemHeight
,
dip2px
(
3
));
circleRectItemWidth
=
ta
.
getDimensionPixelSize
(
R
.
styleable
.
Indicator_circle_rect_itemWidth
,
dip2px
(
15
));
// 解析后释放资源
ta
.
recycle
();
}
private
void
intPaint
()
{
normalPaint
=
new
Paint
();
normalPaint
.
setStyle
(
Paint
.
Style
.
FILL
);
normalPaint
.
setAntiAlias
(
true
);
normalPaint
.
setColor
(
normalColor
==
null
?
Color
.
GRAY
:
normalColor
.
getDefaultColor
());
selectedPaint
=
new
Paint
();
selectedPaint
.
setStyle
(
Paint
.
Style
.
FILL
);
selectedPaint
.
setAntiAlias
(
true
);
selectedPaint
.
setColor
(
selectedColor
==
null
?
Color
.
RED
:
selectedColor
.
getDefaultColor
());
mRectF
=
new
RectF
();
}
@Override
protected
void
onMeasure
(
int
widthMeasureSpec
,
int
heightMeasureSpec
)
{
super
.
onMeasure
(
widthMeasureSpec
,
heightMeasureSpec
);
int
heightSize
=
MeasureSpec
.
getSize
(
heightMeasureSpec
);
int
widthSize
=
MeasureSpec
.
getSize
(
widthMeasureSpec
);
switch
(
mStyle
)
{
case
STYLE_CIRCLR_CIRCLE:
if
(
orientation
==
HORIZONTAL
)
{
width
=
2
*
circleCircleRadius
*
itemCount
+
(
itemCount
-
1
)
*
spacing
;
height
=
Math
.
max
(
heightSize
,
2
*
circleCircleRadius
);
}
else
{
height
=
2
*
circleCircleRadius
*
itemCount
+
(
itemCount
-
1
)
*
spacing
;
width
=
Math
.
max
(
widthSize
,
2
*
circleCircleRadius
);
}
break
;
case
STYLE_RECT_RECT:
if
(
orientation
==
HORIZONTAL
)
{
width
=
rectRectItemWidth
*
itemCount
+
(
itemCount
-
1
)
*
spacing
;
height
=
Math
.
max
(
heightSize
,
rectRectItemHeight
);
}
else
{
height
=
rectRectItemHeight
*
itemCount
+
(
itemCount
-
1
)
*
spacing
;
width
=
Math
.
max
(
widthSize
,
rectRectItemWidth
);
}
break
;
case
STYLE_CIRCLR_RECT:
if
(
orientation
==
HORIZONTAL
)
{
int
normalItemWidth
=
circleRectRadius
*
2
;
width
=
(
itemCount
-
1
)
*
normalItemWidth
+
circleRectItemWidth
+
(
itemCount
-
1
)
*
spacing
;
int
tempHeight
=
Math
.
max
(
circleRectItemHeight
,
circleRectRadius
*
2
);
height
=
Math
.
max
(
heightSize
,
tempHeight
);
}
else
{
int
normalItemHeight
=
circleRectRadius
*
2
;
height
=
(
itemCount
-
1
)
*
normalItemHeight
+
circleRectItemHeight
+
(
itemCount
-
1
)
*
spacing
;
int
tempWidth
=
Math
.
max
(
circleRectItemWidth
,
circleRectRadius
*
2
);
width
=
Math
.
max
(
widthSize
,
tempWidth
);
}
break
;
}
setMeasuredDimension
(
width
,
height
);
}
@Override
protected
void
onDraw
(
Canvas
canvas
)
{
super
.
onDraw
(
canvas
);
if
(
orientation
==
HORIZONTAL
)
{
switch
(
mStyle
)
{
case
STYLE_CIRCLR_CIRCLE:
float
cy
=
height
/
2
;
for
(
int
i
=
0
;
i
<
itemCount
;
i
++)
{
int
cx
=
(
i
+
1
)
*
circleCircleRadius
+
i
*
spacing
;
//全部绘制圆点,画笔的区别
canvas
.
drawCircle
(
cx
,
cy
,
circleCircleRadius
,
i
==
selection
?
selectedPaint
:
normalPaint
);
}
break
;
case
STYLE_RECT_RECT:
for
(
int
i
=
0
;
i
<
itemCount
;
i
++)
{
int
left
=
i
*
rectRectItemWidth
+
i
*
spacing
;
mRectF
.
set
(
left
,
0
,
left
+
rectRectItemWidth
,
rectRectItemHeight
);
//全部绘制圆角矩形,画笔的区别
canvas
.
drawRoundRect
(
mRectF
,
rectRectCorner
,
rectRectCorner
,
i
==
selection
?
selectedPaint
:
normalPaint
);
}
break
;
case
STYLE_CIRCLR_RECT:
for
(
int
i
=
0
;
i
<
itemCount
;
i
++)
{
int
left
=
selection
*
(
circleRectRadius
*
2
+
spacing
);
int
top
;
if
(
selection
==
i
)
{
//选中的绘制圆角矩形
top
=
(
height
-
circleRectItemHeight
)
/
2
;
mRectF
.
set
(
left
,
top
,
left
+
circleRectItemWidth
,
circleRectItemHeight
+
top
);
canvas
.
drawRoundRect
(
mRectF
,
circleRectCorner
,
circleRectCorner
,
selectedPaint
);
}
else
{
//未选中的绘制圆点,距离需要判断position在选中的左边或者右边,从而确定cx
top
=
(
height
-
circleRectRadius
*
2
)
/
2
;
int
cx
=
0
;
float
cy1
=
circleRectRadius
+
top
;
if
(
selection
<
i
)
{
cx
=
(
i
-
1
)
*
circleRectRadius
*
2
+
i
*
spacing
+
circleRectItemWidth
+
circleRectRadius
;
}
else
{
cx
=
i
*
(
circleRectRadius
*
2
)
+
i
*
spacing
+
circleRectRadius
;
}
canvas
.
drawCircle
(
cx
,
cy1
,
circleRectRadius
,
normalPaint
);
}
}
break
;
}
}
else
{
switch
(
mStyle
)
{
case
STYLE_CIRCLR_CIRCLE:
float
cx
=
width
/
2
;
for
(
int
i
=
0
;
i
<
itemCount
;
i
++)
{
int
cy
=
i
*
(
circleCircleRadius
*
2
+
spacing
)
+
circleCircleRadius
;
//全部绘制圆点,画笔的区别
canvas
.
drawCircle
(
cx
,
cy
,
circleCircleRadius
,
i
==
selection
?
selectedPaint
:
normalPaint
);
}
break
;
case
STYLE_RECT_RECT:
for
(
int
i
=
0
;
i
<
itemCount
;
i
++)
{
int
top
=
i
*
rectRectItemHeight
+
i
*
spacing
;
int
left
=
(
width
-
rectRectItemWidth
)
/
2
;
mRectF
.
set
(
left
,
top
,
left
+
rectRectItemWidth
,
top
+
rectRectItemHeight
);
//全部绘制圆角矩形,画笔的区别
canvas
.
drawRoundRect
(
mRectF
,
rectRectCorner
,
rectRectCorner
,
i
==
selection
?
selectedPaint
:
normalPaint
);
}
break
;
case
STYLE_CIRCLR_RECT:
for
(
int
i
=
0
;
i
<
itemCount
;
i
++)
{
if
(
selection
==
i
)
{
int
left
=
(
width
-
circleRectItemWidth
)
/
2
;
//选中的绘制圆角矩形
int
top
=
selection
*
(
circleRectRadius
*
2
+
spacing
);
mRectF
.
set
(
left
,
top
,
left
+
circleRectItemWidth
,
top
+
circleRectItemHeight
);
canvas
.
drawRoundRect
(
mRectF
,
circleRectCorner
,
circleRectCorner
,
selectedPaint
);
}
else
{
//未选中的绘制圆点,距离需要判断position在选中的左边或者右边,从而确定cx
int
cx1
=
(
width
-
2
*
circleRectRadius
)
/
2
+
circleRectRadius
;
float
cy1
=
0
;
if
(
selection
<
i
)
{
cy1
=
(
i
-
1
)
*
circleRectRadius
*
2
+
i
*
spacing
+
circleRectItemHeight
+
circleRectRadius
;
}
else
{
cy1
=
i
*
(
circleRectRadius
*
2
)
+
i
*
spacing
+
circleRectRadius
;
}
canvas
.
drawCircle
(
cx1
,
cy1
,
circleRectRadius
,
normalPaint
);
}
}
break
;
}
}
}
/**
* 关联ViewPager
*
* @param viewPager
*/
public
void
attachToViewPager
(
ViewPager2
viewPager
)
{
this
.
viewPager
=
viewPager
;
RecyclerView
.
Adapter
pagerAdapter
=
viewPager
.
getAdapter
();
if
(
pagerAdapter
!=
null
)
{
//TODO 如果项目使用了阿里开源库,UltraViewPager,想要兼容需要用以下方式获取 itemCount,否则去除这个if条件
// if (pagerAdapter instanceof UltraViewPagerAdapter) {
//从UltraViewPagerAdapter获取真实的个数
// itemCount = ((UltraViewPagerAdapter) pagerAdapter).getRealCount();
// } else {
itemCount
=
pagerAdapter
.
getItemCount
();
// }
selection
=
viewPager
.
getCurrentItem
()
%
itemCount
;
checkItemCount
();
}
viewPager
.
registerOnPageChangeCallback
(
new
OnPageChangeCallback
()
{
@Override
public
void
onPageScrolled
(
int
position
,
float
positionOffset
,
int
positionOffsetPixels
)
{
super
.
onPageScrolled
(
position
,
positionOffset
,
positionOffsetPixels
);
}
@Override
public
void
onPageSelected
(
int
position
)
{
super
.
onPageSelected
(
position
);
selection
=
viewPager
.
getCurrentItem
()
%
itemCount
;
postInvalidate
();
}
@Override
public
void
onPageScrollStateChanged
(
int
state
)
{
super
.
onPageScrollStateChanged
(
state
);
}
});
}
/**
* 设置选中的值,当ViewPager只有一个item不显示指示器
*/
private
void
checkItemCount
()
{
if
(
selection
>=
itemCount
)
{
selection
=
itemCount
-
1
;
}
setVisibility
((
itemCount
<=
1
)
?
GONE
:
VISIBLE
);
}
/**
* dp to px
*/
public
int
dip2px
(
float
dpValue
)
{
final
float
scale
=
getContext
().
getResources
().
getDisplayMetrics
().
density
;
return
(
int
)
(
dpValue
*
scale
+
0.5f
);
}
}
public-base/src/main/res/anim/rotate_anticlockwise_anim.xml
0 → 100644
View file @
b3a5330a
<?xml version="1.0" encoding="utf-8"?>
<rotate
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:duration=
"500"
android:fillAfter=
"true"
android:fromDegrees=
"180"
android:interpolator=
"@android:interpolator/decelerate_cubic"
android:pivotX=
"50%"
android:pivotY=
"50%"
android:toDegrees=
"359"
/>
<!-- android:repeatCount="0"-->
\ No newline at end of file
public-base/src/main/res/anim/rotate_clockwise_anim.xml
0 → 100644
View file @
b3a5330a
<?xml version="1.0" encoding="utf-8"?>
<rotate
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:duration=
"500"
android:fillAfter=
"true"
android:fromDegrees=
"0"
android:interpolator=
"@android:interpolator/decelerate_cubic"
android:pivotX=
"50%"
android:pivotY=
"50%"
android:toDegrees=
"180"
/>
<!-- android:repeatCount="0"-->
\ No newline at end of file
public-base/src/main/res/drawable-xhdpi/ic_guide_close.png
0 → 100644
View file @
b3a5330a
332 Bytes
public-base/src/main/res/layout/pager_navigator_layout.xml
0 → 100644
View file @
b3a5330a
<?xml version="1.0" encoding="utf-8"?>
<HorizontalScrollView
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:id=
"@+id/scroll_view"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:fadingEdge=
"none"
android:scrollbars=
"none"
>
<FrameLayout
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
>
<LinearLayout
android:id=
"@+id/indicator_container"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"horizontal"
/>
<LinearLayout
android:id=
"@+id/title_container"
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:orientation=
"horizontal"
/>
</FrameLayout>
</HorizontalScrollView>
\ No newline at end of file
public-base/src/main/res/layout/pager_navigator_layout_no_scroll.xml
0 → 100644
View file @
b3a5330a
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
<LinearLayout
android:id=
"@+id/indicator_container"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"horizontal"
/>
<LinearLayout
android:id=
"@+id/title_container"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"horizontal"
/>
</FrameLayout>
\ No newline at end of file
user-login/src/main/java/com/gingersoft/gsa/cloud/user/login/mvp/bean/GuideBean.java
0 → 100644
View file @
b3a5330a
package
com
.
gingersoft
.
gsa
.
cloud
.
user
.
login
.
mvp
.
bean
;
import
android.graphics.drawable.Drawable
;
public
class
GuideBean
{
private
String
title
;
private
String
details
;
private
Drawable
img
;
public
GuideBean
(
String
title
,
String
details
,
Drawable
img
)
{
this
.
title
=
title
;
this
.
details
=
details
;
this
.
img
=
img
;
}
public
String
getTitle
()
{
return
title
;
}
public
void
setTitle
(
String
title
)
{
this
.
title
=
title
;
}
public
String
getDetails
()
{
return
details
;
}
public
void
setDetails
(
String
details
)
{
this
.
details
=
details
;
}
public
Drawable
getImg
()
{
return
img
;
}
public
void
setImg
(
Drawable
img
)
{
this
.
img
=
img
;
}
}
user-login/src/main/java/com/gingersoft/gsa/cloud/user/login/mvp/ui/adapter/GuideAdapter.java
0 → 100644
View file @
b3a5330a
package
com
.
gingersoft
.
gsa
.
cloud
.
user
.
login
.
mvp
.
ui
.
adapter
;
import
android.content.Context
;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.widget.ImageView
;
import
android.widget.TextView
;
import
androidx.annotation.NonNull
;
import
androidx.recyclerview.widget.RecyclerView
;
import
com.gingersoft.gsa.cloud.user.login.R
;
import
com.gingersoft.gsa.cloud.user.login.mvp.bean.GuideBean
;
import
java.util.List
;
import
static
com
.
jess
.
arms
.
utils
.
DeviceUtils
.
getScreenWidth
;
public
class
GuideAdapter
extends
RecyclerView
.
Adapter
<
GuideAdapter
.
BaseViewHolder
>
{
private
List
<
GuideBean
>
guideBeanList
;
private
Context
mContext
;
public
GuideAdapter
(
Context
mContext
,
List
<
GuideBean
>
guideBeanList
)
{
this
.
guideBeanList
=
guideBeanList
;
this
.
mContext
=
mContext
;
}
@NonNull
@Override
public
BaseViewHolder
onCreateViewHolder
(
@NonNull
ViewGroup
parent
,
int
viewType
)
{
return
new
BaseViewHolder
(
LayoutInflater
.
from
(
parent
.
getContext
()).
inflate
(
R
.
layout
.
item_guide
,
parent
,
false
));
}
@Override
public
void
onBindViewHolder
(
@NonNull
BaseViewHolder
holder
,
int
position
)
{
GuideBean
item
=
guideBeanList
.
get
(
position
);
holder
.
title
.
setText
(
item
.
getTitle
());
holder
.
details
.
setText
(
item
.
getDetails
());
ViewGroup
.
LayoutParams
params
=
holder
.
img
.
getLayoutParams
();
if
(
position
==
0
)
{
params
.
width
=
(
int
)
(
getScreenWidth
(
mContext
)
*
0.75
);
params
.
height
=
(
int
)
(
params
.
width
*
1.04
);
}
else
if
(
position
==
1
)
{
params
.
width
=
ViewGroup
.
LayoutParams
.
MATCH_PARENT
;
params
.
height
=
(
int
)
(
params
.
width
*
1.04
);
}
else
if
(
position
==
2
)
{
params
.
width
=
(
int
)
(
getScreenWidth
(
mContext
)
*
0.8
);
params
.
height
=
(
int
)
(
params
.
width
*
1.1
);
}
holder
.
img
.
setLayoutParams
(
params
);
holder
.
img
.
setImageDrawable
(
item
.
getImg
());
}
@Override
public
int
getItemCount
()
{
return
guideBeanList
==
null
?
0
:
guideBeanList
.
size
();
}
public
class
BaseViewHolder
extends
RecyclerView
.
ViewHolder
{
private
TextView
title
;
private
TextView
details
;
private
ImageView
img
;
public
BaseViewHolder
(
@NonNull
View
itemView
)
{
super
(
itemView
);
title
=
itemView
.
findViewById
(
R
.
id
.
tv_title
);
details
=
itemView
.
findViewById
(
R
.
id
.
tv_details
);
img
=
itemView
.
findViewById
(
R
.
id
.
iv_guide_img
);
}
}
}
user-login/src/main/res/anim/anim_alpha_hide.xml
0 → 100644
View file @
b3a5330a
<?xml version="1.0" encoding="utf-8"?>
<alpha
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:duration=
"600"
android:fillAfter=
"true"
android:fillBefore=
"true"
android:fromAlpha=
"1"
android:toAlpha=
"0"
/>
user-login/src/main/res/anim/anim_alpha_show.xml
0 → 100644
View file @
b3a5330a
<?xml version="1.0" encoding="utf-8"?>
<alpha
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:duration=
"600"
android:fillAfter=
"true"
android:fillBefore=
"true"
android:fromAlpha=
"0"
android:toAlpha=
"1"
/>
user-login/src/main/res/layout/item_guide.xml
0 → 100644
View file @
b3a5330a
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
>
<TextView
android:id=
"@+id/tv_title"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/dp_18"
android:text=
"多终端云同步,轻松管理所有"
android:textColor=
"@color/white"
android:textSize=
"@dimen/dp_19"
android:visibility=
"gone"
app:layout_constraintBottom_toTopOf=
"@id/tv_details"
app:layout_constraintLeft_toLeftOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintVertical_bias=
"0.12"
app:layout_constraintVertical_chainStyle=
"packed"
/>
<TextView
android:id=
"@+id/tv_details"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_14"
android:text=
"為您搭建優良高效管理平台"
android:textColor=
"@color/white"
android:textSize=
"@dimen/dp_13"
android:visibility=
"gone"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintLeft_toLeftOf=
"@id/tv_title"
app:layout_constraintTop_toBottomOf=
"@id/tv_title"
/>
<ImageView
android:id=
"@+id/iv_guide_img"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintLeft_toLeftOf=
"parent"
app:layout_constraintRight_toRightOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
user-login/src/main/res/layout/user_login_activity_login.xml
View file @
b3a5330a
...
@@ -158,7 +158,7 @@
...
@@ -158,7 +158,7 @@
android:layout_width=
"@dimen/dp_30"
android:layout_width=
"@dimen/dp_30"
android:layout_height=
"@dimen/dp_30"
android:layout_height=
"@dimen/dp_30"
android:padding=
"@dimen/dp_5"
android:padding=
"@dimen/dp_5"
android:src=
"@
mipmap
/ic_clear_text"
android:src=
"@
drawable
/ic_clear_text"
android:visibility=
"gone"
android:visibility=
"gone"
app:layout_constraintBottom_toBottomOf=
"@id/ed_login_user_pwd"
app:layout_constraintBottom_toBottomOf=
"@id/ed_login_user_pwd"
app:layout_constraintRight_toRightOf=
"parent"
app:layout_constraintRight_toRightOf=
"parent"
...
...
user-login/src/main/res/mipmap-xhdpi/img_start.jpg
0 → 100644
View file @
b3a5330a
62.5 KB
user-login/src/main/res/mipmap-xhdpi/pic_guide_bg.png
0 → 100644
View file @
b3a5330a
16.2 KB
user-login/src/main/res/mipmap-xhdpi/pic_guide_one.png
0 → 100644
View file @
b3a5330a
24.2 KB
user-login/src/main/res/mipmap-xhdpi/pic_guide_three.png
0 → 100644
View file @
b3a5330a
33.7 KB
user-login/src/main/res/mipmap-xhdpi/pic_guide_two.png
0 → 100644
View file @
b3a5330a
67.7 KB
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