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
11d4dc87
Commit
11d4dc87
authored
Jun 16, 2021
by
张建升
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1、新增開始結束時間選擇控件
parent
24b35f43
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
261 additions
and
4 deletions
+261
-4
component-main/src/main/java/com/gingersoft/gsa/cloud/main/mvp/ui/view/StartEndTimePickerView.java
+0
-1
config.gradle
+1
-1
library-common/build.gradle
+1
-1
library-qm-qmui/build.gradle
+1
-1
library-ui/src/main/java/com/gingersoft/gsa/cloud/ui/view/StartEndTimePickerView.java
+197
-0
library-ui/src/main/res/layout/layout_start_end_time_picker.xml
+51
-0
library-ui/src/main/res/values/attrs.xml
+10
-0
No files found.
component-main/src/main/java/com/gingersoft/gsa/cloud/main/mvp/ui/view/StartEndTimePickerView.java
View file @
11d4dc87
...
@@ -124,7 +124,6 @@ public class StartEndTimePickerView extends FrameLayout implements View.OnClickL
...
@@ -124,7 +124,6 @@ public class StartEndTimePickerView extends FrameLayout implements View.OnClickL
if
(
viewId
==
R
.
id
.
tv_start_time
||
viewId
==
R
.
id
.
iv_start_time_triangle
)
{
if
(
viewId
==
R
.
id
.
tv_start_time
||
viewId
==
R
.
id
.
iv_start_time_triangle
)
{
startTriangleView
.
toggle
();
startTriangleView
.
toggle
();
time
=
tvStartTime
.
getText
().
toString
();
time
=
tvStartTime
.
getText
().
toString
();
endTime
.
setTime
(
TimeUtils
.
DATE_FORMAT_DATE
.
parse
(
tvEndTime
.
getText
().
toString
()));
endTime
.
setTime
(
TimeUtils
.
DATE_FORMAT_DATE
.
parse
(
tvEndTime
.
getText
().
toString
()));
}
else
{
}
else
{
endTriangleView
.
toggle
();
endTriangleView
.
toggle
();
...
...
config.gradle
View file @
11d4dc87
...
@@ -66,7 +66,7 @@ ext {
...
@@ -66,7 +66,7 @@ ext {
"loadsir"
:
"com.kingja.loadsir:loadsir:1.3.8"
,
"loadsir"
:
"com.kingja.loadsir:loadsir:1.3.8"
,
"lottie"
:
"com.airbnb.android:lottie:3.6.1"
,
"lottie"
:
"com.airbnb.android:lottie:3.6.1"
,
"loadingIndicatorView"
:
"com.wang.avi:library:2.1.3"
,
"loadingIndicatorView"
:
"com.wang.avi:library:2.1.3"
,
"viewpager2"
:
"androidx.viewpager2:viewpager2:1.0.0
-alpha03
"
,
"viewpager2"
:
"androidx.viewpager2:viewpager2:1.0.0"
,
//rx1
//rx1
"rxandroid"
:
"io.reactivex:rxandroid:1.2.1"
,
"rxandroid"
:
"io.reactivex:rxandroid:1.2.1"
,
...
...
library-common/build.gradle
View file @
11d4dc87
...
@@ -75,7 +75,7 @@ dependencies {
...
@@ -75,7 +75,7 @@ dependencies {
compileOnly
rootProject
.
ext
.
dependencies
[
"canary-release"
]
compileOnly
rootProject
.
ext
.
dependencies
[
"canary-release"
]
compileOnly
rootProject
.
ext
.
dependencies
[
"canary-release"
]
compileOnly
rootProject
.
ext
.
dependencies
[
"canary-release"
]
}
}
api
'androidx.viewpager2:viewpager2:1.0.0-alpha03'
api
rootProject
.
ext
.
dependencies
[
"viewpager2"
]
implementation
files
(
'libs\\ecracalib.jar'
)
implementation
files
(
'libs\\ecracalib.jar'
)
testImplementation
rootProject
.
ext
.
dependencies
[
"junit"
]
testImplementation
rootProject
.
ext
.
dependencies
[
"junit"
]
debugImplementation
rootProject
.
ext
.
dependencies
[
"canary-debug"
]
debugImplementation
rootProject
.
ext
.
dependencies
[
"canary-debug"
]
...
...
library-qm-qmui/build.gradle
View file @
11d4dc87
...
@@ -68,7 +68,7 @@ dependencies {
...
@@ -68,7 +68,7 @@ dependencies {
//test
//test
testImplementation
'junit:junit:4.12'
testImplementation
'junit:junit:4.12'
api
'androidx.swiperefreshlayout:swiperefreshlayout:1.0.0'
api
'androidx.swiperefreshlayout:swiperefreshlayout:1.0.0'
//
compileOnly "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
compileOnly
"org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
}
// deploy
// deploy
...
...
library-ui/src/main/java/com/gingersoft/gsa/cloud/ui/view/StartEndTimePickerView.java
0 → 100644
View file @
11d4dc87
package
com
.
gingersoft
.
gsa
.
cloud
.
ui
.
view
;
import
android.content.Context
;
import
android.content.res.TypedArray
;
import
android.graphics.drawable.Drawable
;
import
android.util.AttributeSet
;
import
android.util.TypedValue
;
import
android.view.View
;
import
android.widget.FrameLayout
;
import
android.widget.LinearLayout
;
import
android.widget.TextView
;
import
androidx.annotation.NonNull
;
import
androidx.annotation.Nullable
;
import
androidx.core.content.ContextCompat
;
import
com.gingersoft.gsa.cloud.common.utils.time.TimeUtils
;
import
com.gingersoft.gsa.cloud.ui.R
;
import
com.gingersoft.gsa.cloud.ui.utils.TimePickerUtils
;
import
java.text.ParseException
;
import
java.util.Calendar
;
public
class
StartEndTimePickerView
extends
FrameLayout
implements
View
.
OnClickListener
{
private
TextView
tvStartTime
;
private
TriangleView
startTriangleView
;
private
TextView
tvEndTime
;
private
TriangleView
endTriangleView
;
private
onUpdateTimePicker
onUpdateTimePicker
;
private
int
mTextColor
;
private
float
mTextSize
;
private
float
mImgWidth
;
private
float
mImgHeight
;
private
Drawable
mArrowRes
;
private
boolean
showStartTime
;
private
boolean
showEndTime
;
public
StartEndTimePickerView
(
@NonNull
Context
context
)
{
this
(
context
,
null
,
-
1
);
}
public
StartEndTimePickerView
(
@NonNull
Context
context
,
onUpdateTimePicker
onUpdateTimePicker
)
{
this
(
context
);
this
.
onUpdateTimePicker
=
onUpdateTimePicker
;
}
public
StartEndTimePickerView
(
@NonNull
Context
context
,
@Nullable
AttributeSet
attrs
)
{
this
(
context
,
attrs
,
-
1
);
}
public
StartEndTimePickerView
(
@NonNull
Context
context
,
@Nullable
AttributeSet
attrs
,
int
defStyleAttr
)
{
super
(
context
,
attrs
,
defStyleAttr
);
init
(
context
,
attrs
);
}
public
void
setOnUpdateTimePicker
(
StartEndTimePickerView
.
onUpdateTimePicker
onUpdateTimePicker
)
{
this
.
onUpdateTimePicker
=
onUpdateTimePicker
;
}
private
void
init
(
Context
context
,
AttributeSet
attrs
)
{
initTypedArray
(
context
,
attrs
);
View
view
=
View
.
inflate
(
context
,
R
.
layout
.
layout_start_end_time_picker
,
null
);
tvStartTime
=
view
.
findViewById
(
R
.
id
.
tv_start_time
);
startTriangleView
=
view
.
findViewById
(
R
.
id
.
iv_start_time_triangle
);
tvEndTime
=
view
.
findViewById
(
R
.
id
.
tv_end_time
);
endTriangleView
=
view
.
findViewById
(
R
.
id
.
iv_end_time_triangle
);
tvStartTime
.
setTextColor
(
mTextColor
);
tvEndTime
.
setTextColor
(
mTextColor
);
tvStartTime
.
setTextSize
(
TypedValue
.
COMPLEX_UNIT_PX
,
mTextSize
);
tvEndTime
.
setTextSize
(
TypedValue
.
COMPLEX_UNIT_PX
,
mTextSize
);
TextView
tvInterval
=
view
.
findViewById
(
R
.
id
.
tv_time_interval
);
tvInterval
.
setTextSize
(
TypedValue
.
COMPLEX_UNIT_PX
,
mTextSize
);
tvStartTime
.
setVisibility
(
showStartTime
?
VISIBLE
:
GONE
);
tvEndTime
.
setVisibility
(
showEndTime
?
VISIBLE
:
GONE
);
if
(
mArrowRes
!=
null
)
{
startTriangleView
.
setImageDrawable
(
mArrowRes
);
endTriangleView
.
setImageDrawable
(
mArrowRes
);
}
LinearLayout
.
LayoutParams
layoutParams
=
(
LinearLayout
.
LayoutParams
)
startTriangleView
.
getLayoutParams
();
layoutParams
.
width
=
(
int
)
mImgWidth
;
layoutParams
.
height
=
(
int
)
mImgHeight
;
startTriangleView
.
setLayoutParams
(
layoutParams
);
endTriangleView
.
setLayoutParams
(
layoutParams
);
tvStartTime
.
setText
(
TimeUtils
.
getOldDate
(-
7
));
tvEndTime
.
setText
(
TimeUtils
.
getOldDate
(
0
));
tvStartTime
.
setOnClickListener
(
this
);
startTriangleView
.
setOnClickListener
(
this
);
tvEndTime
.
setOnClickListener
(
this
);
endTriangleView
.
setOnClickListener
(
this
);
updateTime
();
this
.
addView
(
view
);
}
private
void
initTypedArray
(
Context
context
,
AttributeSet
attrs
)
{
TypedArray
typedArray
=
context
.
obtainStyledAttributes
(
attrs
,
R
.
styleable
.
StartEndTimePickerView
);
mTextColor
=
typedArray
.
getColor
(
R
.
styleable
.
StartEndTimePickerView_textColor
,
ContextCompat
.
getColor
(
context
,
R
.
color
.
color_18
));
mTextSize
=
typedArray
.
getDimension
(
R
.
styleable
.
StartEndTimePickerView_textSize
,
getResources
().
getDimension
(
R
.
dimen
.
dp_10
));
mImgWidth
=
typedArray
.
getDimension
(
R
.
styleable
.
StartEndTimePickerView_imgWidth
,
getResources
().
getDimension
(
R
.
dimen
.
dp_8
));
mImgHeight
=
typedArray
.
getDimension
(
R
.
styleable
.
StartEndTimePickerView_imgHeight
,
getResources
().
getDimension
(
R
.
dimen
.
dp_5
));
mArrowRes
=
typedArray
.
getDrawable
(
R
.
styleable
.
StartEndTimePickerView_arrowRes
);
showStartTime
=
typedArray
.
getBoolean
(
R
.
styleable
.
StartEndTimePickerView_showStartTime
,
true
);
showEndTime
=
typedArray
.
getBoolean
(
R
.
styleable
.
StartEndTimePickerView_showEndTime
,
true
);
typedArray
.
recycle
();
}
@Override
public
void
onClick
(
View
v
)
{
int
viewId
=
v
.
getId
();
try
{
String
time
;
Calendar
startTime
=
Calendar
.
getInstance
();
startTime
.
set
(
Calendar
.
DAY_OF_YEAR
,
startTime
.
getActualMinimum
(
Calendar
.
DAY_OF_YEAR
));
//今年第一天
Calendar
endTime
=
Calendar
.
getInstance
();
if
(
viewId
==
R
.
id
.
tv_start_time
||
viewId
==
R
.
id
.
iv_start_time_triangle
)
{
startTriangleView
.
toggle
();
time
=
tvStartTime
.
getText
().
toString
();
endTime
.
setTime
(
TimeUtils
.
DATE_FORMAT_DATE
.
parse
(
tvEndTime
.
getText
().
toString
()));
}
else
{
endTriangleView
.
toggle
();
time
=
tvEndTime
.
getText
().
toString
();
startTime
.
setTime
(
TimeUtils
.
DATE_FORMAT_DATE
.
parse
(
tvStartTime
.
getText
().
toString
()));
}
Calendar
cal
=
Calendar
.
getInstance
();
try
{
//設置默認時間為當前的起止時間
cal
.
setTime
(
TimeUtils
.
DATE_FORMAT_DATE
.
parse
(
time
));
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
//打開時間選擇器
TimePickerUtils
.
showReportTimePicker
(
v
.
getContext
(),
startTime
,
endTime
,
cal
,
(
date
,
v1
)
->
{
if
(
viewId
==
R
.
id
.
tv_start_time
||
viewId
==
R
.
id
.
iv_start_time_triangle
)
{
tvStartTime
.
setText
(
TimeUtils
.
DATE_FORMAT_DATE
.
format
(
date
));
}
else
{
tvEndTime
.
setText
(
TimeUtils
.
DATE_FORMAT_DATE
.
format
(
date
));
}
updateTime
();
}).
setOnDismissListener
(
o
->
{
if
(
startTriangleView
.
isOpen
())
{
startTriangleView
.
toggle
();
}
else
if
(
endTriangleView
.
isOpen
())
{
endTriangleView
.
toggle
();
}
});
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
}
private
void
updateTime
()
{
if
(
onUpdateTimePicker
!=
null
)
{
onUpdateTimePicker
.
onUpdateTime
(
tvStartTime
.
getText
().
toString
(),
tvEndTime
.
getText
().
toString
());
}
}
public
interface
onUpdateTimePicker
{
void
onUpdateTime
(
String
startTime
,
String
endTime
);
}
public
StartEndTimePickerView
setStartTime
(
String
startTime
)
{
tvStartTime
.
setText
(
startTime
);
return
this
;
}
public
StartEndTimePickerView
setEndTime
(
String
endTime
)
{
tvEndTime
.
setText
(
endTime
);
return
this
;
}
public
String
getStartTime
()
{
if
(
tvStartTime
!=
null
)
{
return
tvStartTime
.
getText
().
toString
();
}
return
TimeUtils
.
getOldDate
(-
7
);
}
public
String
getEndTime
()
{
if
(
tvEndTime
!=
null
)
{
return
tvEndTime
.
getText
().
toString
();
}
return
TimeUtils
.
getOldDate
(
0
);
}
}
library-ui/src/main/res/layout/layout_start_end_time_picker.xml
0 → 100644
View file @
11d4dc87
<?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"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
xmlns:tools=
"http://schemas.android.com/tools"
android:gravity=
"center_vertical"
android:orientation=
"horizontal"
>
<TextView
android:id=
"@+id/tv_start_time"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:textColor=
"#181818"
tools:text=
"2020-02-14"
android:textSize=
"@dimen/sp_10"
/>
<com.gingersoft.gsa.cloud.ui.view.TriangleView
android:id=
"@+id/iv_start_time_triangle"
android:layout_width=
"@dimen/dp_10"
android:layout_height=
"@dimen/dp_5"
android:paddingLeft=
"@dimen/dp_2"
app:trv_direction=
"bottom"
/>
<TextView
android:id=
"@+id/tv_time_interval"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/dp_7"
android:text=
"到"
android:textColor=
"#999"
android:textSize=
"@dimen/sp_10"
/>
<TextView
android:id=
"@+id/tv_end_time"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"@dimen/dp_7"
tools:text=
"2020-02-14"
android:textColor=
"#181818"
android:textSize=
"@dimen/sp_10"
/>
<com.gingersoft.gsa.cloud.ui.view.TriangleView
android:id=
"@+id/iv_end_time_triangle"
android:layout_width=
"@dimen/dp_8"
android:layout_height=
"@dimen/dp_5"
android:layout_marginLeft=
"@dimen/dp_2"
app:trv_direction=
"bottom"
/>
</LinearLayout>
\ No newline at end of file
library-ui/src/main/res/values/attrs.xml
View file @
11d4dc87
...
@@ -812,4 +812,13 @@
...
@@ -812,4 +812,13 @@
<attr
name=
"sEditTextSize"
format=
"dimension"
/>
<attr
name=
"sEditTextSize"
format=
"dimension"
/>
<attr
name=
"sEditActiveLineColor"
format=
"color"
/>
<attr
name=
"sEditActiveLineColor"
format=
"color"
/>
</declare-styleable>
</declare-styleable>
<declare-styleable
name=
"StartEndTimePickerView"
>
<attr
name=
"textColor"
format=
"color"
/>
<attr
name=
"textSize"
format=
"dimension"
/>
<attr
name=
"imgWidth"
format=
"dimension"
/>
<attr
name=
"imgHeight"
format=
"dimension"
/>
<attr
name=
"arrowRes"
format=
"reference"
/>
<attr
name=
"showStartTime"
format=
"boolean"
/>
<attr
name=
"showEndTime"
format=
"boolean"
/>
</declare-styleable>
</resources>
</resources>
\ No newline at end of file
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