Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
S
Scan QR Code Barcode Reader
Project
Project
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
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wanglei
Scan QR Code Barcode Reader
Commits
ccaa799c
Commit
ccaa799c
authored
Dec 24, 2024
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
...
parent
b3568d25
Show whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
433 additions
and
17 deletions
+433
-17
EmailUIBean.kt
app/src/main/java/com/base/scanqr/bean/EmailUIBean.kt
+3
-1
HomeTabUIBean.kt
app/src/main/java/com/base/scanqr/bean/HomeTabUIBean.kt
+3
-3
ScanBean.kt
app/src/main/java/com/base/scanqr/bean/ScanBean.kt
+7
-0
TextUIBean.kt
app/src/main/java/com/base/scanqr/bean/TextUIBean.kt
+7
-0
WifiUIBean.kt
app/src/main/java/com/base/scanqr/bean/WifiUIBean.kt
+3
-1
EmailCodeActivity.kt
...c/main/java/com/base/scanqr/ui/email/EmailCodeActivity.kt
+7
-0
HistoryAdapter.kt
app/src/main/java/com/base/scanqr/ui/main/HistoryAdapter.kt
+71
-0
HistoryFragment.kt
app/src/main/java/com/base/scanqr/ui/main/HistoryFragment.kt
+10
-0
TextCodeActivity.kt
...src/main/java/com/base/scanqr/ui/text/TextCodeActivity.kt
+14
-5
WifiCodeActivity.kt
...src/main/java/com/base/scanqr/ui/wifi/WifiCodeActivity.kt
+4
-0
SpJsonUtils.kt
app/src/main/java/com/base/scanqr/utils/SpJsonUtils.kt
+40
-0
SpStringUtils.kt
app/src/main/java/com/base/scanqr/utils/SpStringUtils.kt
+1
-1
bg_6473f8_10.xml
app/src/main/res/drawable/bg_6473f8_10.xml
+5
-0
bg_ecf6ee_10.xml
app/src/main/res/drawable/bg_ecf6ee_10.xml
+5
-0
bg_eeefff_10.xml
app/src/main/res/drawable/bg_eeefff_10.xml
+5
-0
bg_f4f4f4_10.xml
app/src/main/res/drawable/bg_f4f4f4_10.xml
+5
-0
bg_f8e4e6_10.xml
app/src/main/res/drawable/bg_f8e4e6_10.xml
+5
-0
bg_transparent.xml
app/src/main/res/drawable/bg_transparent.xml
+5
-0
fragment_history.xml
app/src/main/res/layout/fragment_history.xml
+162
-6
item_history.xml
app/src/main/res/layout/item_history.xml
+68
-0
genduo.png
app/src/main/res/mipmap-xxhdpi/genduo.png
+0
-0
h_delete.png
app/src/main/res/mipmap-xxhdpi/h_delete.png
+0
-0
h_export.png
app/src/main/res/mipmap-xxhdpi/h_export.png
+0
-0
h_sort.png
app/src/main/res/mipmap-xxhdpi/h_sort.png
+0
-0
strings.xml
app/src/main/res/values/strings.xml
+3
-0
No files found.
app/src/main/java/com/base/scanqr/bean/EmailUIBean.kt
View file @
ccaa799c
package
com.base.scanqr.bean
import
com.base.scanqr.bean.FunctionUIBean.Companion.KEY_EMAIL
data class
EmailUIBean
(
var
address
:
String
=
""
,
var
subject
:
String
=
""
,
var
message
:
String
=
""
)
\ No newline at end of file
):
ScanBean
(
KEY_EMAIL
)
\ No newline at end of file
app/src/main/java/com/base/scanqr/bean/HomeTabUIBean.kt
View file @
ccaa799c
package
com.base.scanqr.bean
data class
HomeTabUIBean
(
val
icon
:
Int
,
val
tab
:
String
)
\ No newline at end of file
val
icon
:
Int
,
val
tab
:
String
)
:
ScanBean
()
\ No newline at end of file
app/src/main/java/com/base/scanqr/bean/ScanBean.kt
0 → 100644
View file @
ccaa799c
package
com.base.scanqr.bean
abstract
class
ScanBean
(
val
scanType
:
String
=
""
)
{
var
createTime
=
0L
}
\ No newline at end of file
app/src/main/java/com/base/scanqr/bean/TextUIBean.kt
0 → 100644
View file @
ccaa799c
package
com.base.scanqr.bean
import
com.base.scanqr.bean.FunctionUIBean.Companion.KEY_TEXT
data class
TextUIBean
(
var
content
:
String
=
""
)
:
ScanBean
(
KEY_TEXT
)
\ No newline at end of file
app/src/main/java/com/base/scanqr/bean/WifiUIBean.kt
View file @
ccaa799c
package
com.base.scanqr.bean
import
com.base.scanqr.bean.FunctionUIBean.Companion.KEY_WIFI
data class
WifiUIBean
(
var
ssid
:
String
=
""
,
var
bssid
:
String
=
""
,
var
securityTypes
:
IntArray
=
intArrayOf
(),
var
securityId
:
Int
=
0
)
{
)
:
ScanBean
(
KEY_WIFI
)
{
var
password
:
String
=
""
var
hidden
:
Boolean
=
false
}
\ No newline at end of file
app/src/main/java/com/base/scanqr/ui/email/EmailCodeActivity.kt
View file @
ccaa799c
...
...
@@ -6,6 +6,7 @@ import androidx.core.view.updatePadding
import
com.base.scanqr.R
import
com.base.scanqr.base.BaseActivity
import
com.base.scanqr.bean.EmailUIBean
import
com.base.scanqr.bean.ScanBean
import
com.base.scanqr.databinding.ActivityEmailCodeBinding
import
com.base.scanqr.ui.widget.InputNameDialog.showInputNameDialog
import
com.base.scanqr.utils.BarUtils
...
...
@@ -14,6 +15,8 @@ import com.base.scanqr.utils.ClipboardUtils.copyText
import
com.base.scanqr.utils.IntentUtils.intentShareImage
import
com.base.scanqr.utils.LogEx
import
com.base.scanqr.utils.QRCodeGenerator.generateQRCode
import
com.base.scanqr.utils.SpJsonUtils
import
com.base.scanqr.utils.SpJsonUtils.SCAN_HISTORY_KEY
import
com.base.scanqr.utils.ToastUtils.toast
import
com.google.gson.Gson
import
java.io.File
...
...
@@ -40,11 +43,15 @@ class EmailCodeActivity : BaseActivity<ActivityEmailCodeBinding>(ActivityEmailCo
qrContent
.
append
(
"BODY:"
).
append
(
email
.
message
).
append
(
";"
)
content
=
qrContent
.
toString
()
Thread
{
SpJsonUtils
.
addJsonBean
<
ScanBean
>(
SCAN_HISTORY_KEY
,
email
)
val
bitmap
=
generateQRCode
(
content
,
735
,
735
,
5
)
runOnUiThread
{
binding
.
ivQr
.
setImageBitmap
(
bitmap
)
val
file
=
File
(
cacheDir
,
System
.
currentTimeMillis
().
toString
()
+
".jpg"
)
bitmap
?.
let
{
if
(
email
.
createTime
==
0L
)
{
email
.
createTime
=
System
.
currentTimeMillis
()
}
val
flag
=
saveBitmapToFile
(
it
,
file
.
absolutePath
)
LogEx
.
logDebug
(
TAG
,
"flag=$flag tempImage=${file.absolutePath}"
)
if
(
flag
)
{
...
...
app/src/main/java/com/base/scanqr/ui/main/HistoryAdapter.kt
0 → 100644
View file @
ccaa799c
package
com.base.scanqr.ui.main
import
android.content.Context
import
android.view.ViewGroup
import
com.base.scanqr.R
import
com.base.scanqr.bean.FunctionUIBean.Companion.KEY_CONTACT
import
com.base.scanqr.bean.FunctionUIBean.Companion.KEY_EMAIL
import
com.base.scanqr.bean.FunctionUIBean.Companion.KEY_EVENT
import
com.base.scanqr.bean.FunctionUIBean.Companion.KEY_LOCATION
import
com.base.scanqr.bean.FunctionUIBean.Companion.KEY_MESSAGE
import
com.base.scanqr.bean.FunctionUIBean.Companion.KEY_TELEPHONE
import
com.base.scanqr.bean.FunctionUIBean.Companion.KEY_TEXT
import
com.base.scanqr.bean.FunctionUIBean.Companion.KEY_WEBSITE
import
com.base.scanqr.bean.FunctionUIBean.Companion.KEY_WIFI
import
com.base.scanqr.bean.ScanBean
import
com.base.scanqr.bean.WifiUIBean
import
com.base.scanqr.databinding.ItemHistoryBinding
import
com.base.scanqr.ui.adapter.CommonViewHolder
import
com.base.scanqr.utils.XmlEx.inflate
import
com.chad.library.adapter4.BaseQuickAdapter
class
HistoryAdapter
:
BaseQuickAdapter
<
ScanBean
,
CommonViewHolder
>()
{
override
fun
onBindViewHolder
(
holder
:
CommonViewHolder
,
position
:
Int
,
item
:
ScanBean
?)
{
item
?:
return
val
binding
=
ItemHistoryBinding
.
bind
(
holder
.
itemView
)
when
(
item
.
scanType
)
{
KEY_WIFI
->
{
if
(
item
is
WifiUIBean
)
{
binding
.
tvDesc
.
text
=
item
.
ssid
}
}
KEY_TEXT
->
{
}
KEY_EMAIL
->
{
}
KEY_EVENT
->
{
}
KEY_CONTACT
->
{
}
KEY_WEBSITE
->
{
}
KEY_LOCATION
->
{
}
KEY_TELEPHONE
->
{
}
KEY_MESSAGE
->
{}
}
}
override
fun
onCreateViewHolder
(
context
:
Context
,
parent
:
ViewGroup
,
viewType
:
Int
):
CommonViewHolder
{
return
CommonViewHolder
(
R
.
layout
.
item_history
.
inflate
(
parent
))
}
}
\ No newline at end of file
app/src/main/java/com/base/scanqr/ui/main/HistoryFragment.kt
View file @
ccaa799c
package
com.base.scanqr.ui.main
import
androidx.core.view.updatePadding
import
com.base.scanqr.base.BaseFragment
import
com.base.scanqr.databinding.FragmentHistoryBinding
import
com.base.scanqr.utils.BarUtils
class
HistoryFragment
:
BaseFragment
<
FragmentHistoryBinding
>(
FragmentHistoryBinding
::
inflate
)
{
override
fun
initView
()
{
super
.
initView
()
binding
.
flTop
.
updatePadding
(
top
=
BarUtils
.
getStatusBarHeight
())
}
override
fun
initListener
()
{
super
.
initListener
()
}
}
\ No newline at end of file
app/src/main/java/com/base/scanqr/ui/text/TextCodeActivity.kt
View file @
ccaa799c
...
...
@@ -5,6 +5,8 @@ import androidx.activity.addCallback
import
androidx.core.view.updatePadding
import
com.base.scanqr.R
import
com.base.scanqr.base.BaseActivity
import
com.base.scanqr.bean.ScanBean
import
com.base.scanqr.bean.TextUIBean
import
com.base.scanqr.databinding.ActivityTextCodeBinding
import
com.base.scanqr.ui.widget.InputNameDialog.showInputNameDialog
import
com.base.scanqr.utils.BarUtils
...
...
@@ -13,12 +15,14 @@ import com.base.scanqr.utils.ClipboardUtils.copyText
import
com.base.scanqr.utils.IntentUtils.intentShareText
import
com.base.scanqr.utils.LogEx
import
com.base.scanqr.utils.QRCodeGenerator.generateQRCode
import
com.base.scanqr.utils.SpJsonUtils
import
com.base.scanqr.utils.SpJsonUtils.SCAN_HISTORY_KEY
import
com.base.scanqr.utils.ToastUtils.toast
import
java.io.File
class
TextCodeActivity
:
BaseActivity
<
ActivityTextCodeBinding
>(
ActivityTextCodeBinding
::
inflate
)
{
private
var
content
:
String
=
""
private
var
textUIBean
=
TextUIBean
()
private
var
tempImage
:
String
=
""
override
fun
initView
()
{
super
.
initView
()
...
...
@@ -26,15 +30,20 @@ class TextCodeActivity : BaseActivity<ActivityTextCodeBinding>(ActivityTextCodeB
binding
.
clTop
.
updatePadding
(
top
=
BarUtils
.
getStatusBarHeight
())
val
data
=
intent
.
extras
?.
getString
(
"data"
)
?:
""
content
=
data
textUIBean
.
content
=
data
binding
.
tvContent
.
text
=
data
Thread
{
val
bitmap
=
generateQRCode
(
content
,
735
,
735
,
5
)
val
bitmap
=
generateQRCode
(
textUIBean
.
content
,
735
,
735
,
5
)
SpJsonUtils
.
addJsonBean
<
ScanBean
>(
SCAN_HISTORY_KEY
,
textUIBean
)
runOnUiThread
{
binding
.
ivQr
.
setImageBitmap
(
bitmap
)
val
file
=
File
(
cacheDir
,
System
.
currentTimeMillis
().
toString
()
+
".jpg"
)
bitmap
?.
let
{
textUIBean
.
content
=
data
if
(
textUIBean
.
createTime
==
0L
)
{
textUIBean
.
createTime
=
System
.
currentTimeMillis
()
}
val
flag
=
saveBitmapToFile
(
it
,
file
.
absolutePath
)
LogEx
.
logDebug
(
TAG
,
"flag=$flag tempImage=${file.absolutePath}"
)
if
(
flag
)
{
...
...
@@ -54,7 +63,7 @@ class TextCodeActivity : BaseActivity<ActivityTextCodeBinding>(ActivityTextCodeB
onBackPressedDispatcher
.
onBackPressed
()
}
binding
.
llShare
.
setOnClickListener
{
val
intent
=
intentShareText
(
content
)
val
intent
=
intentShareText
(
textUIBean
.
content
)
runCatching
{
startActivity
(
intent
)
}
...
...
@@ -84,7 +93,7 @@ class TextCodeActivity : BaseActivity<ActivityTextCodeBinding>(ActivityTextCodeB
}
}
binding
.
llCopy
.
setOnClickListener
{
copyText
(
TAG
,
content
)
copyText
(
TAG
,
textUIBean
.
content
)
toast
(
"Copied to clipboard"
,
true
)
}
binding
.
flSearch
.
setOnClickListener
{
...
...
app/src/main/java/com/base/scanqr/ui/wifi/WifiCodeActivity.kt
View file @
ccaa799c
...
...
@@ -5,6 +5,7 @@ import androidx.activity.addCallback
import
androidx.core.view.updatePadding
import
com.base.scanqr.R
import
com.base.scanqr.base.BaseActivity
import
com.base.scanqr.bean.ScanBean
import
com.base.scanqr.bean.WifiUIBean
import
com.base.scanqr.databinding.ActivityWifiCodeBinding
import
com.base.scanqr.ui.widget.InputNameDialog.showInputNameDialog
...
...
@@ -14,6 +15,8 @@ import com.base.scanqr.utils.ClipboardUtils.copyText
import
com.base.scanqr.utils.IntentUtils.intentShareImage
import
com.base.scanqr.utils.LogEx
import
com.base.scanqr.utils.QRCodeGenerator.generateQRCode
import
com.base.scanqr.utils.SpJsonUtils
import
com.base.scanqr.utils.SpJsonUtils.SCAN_HISTORY_KEY
import
com.base.scanqr.utils.ToastUtils.toast
import
com.google.gson.Gson
import
com.gyf.immersionbar.ktx.immersionBar
...
...
@@ -64,6 +67,7 @@ class WifiCodeActivity : BaseActivity<ActivityWifiCodeBinding>(ActivityWifiCodeB
}
Thread
{
val
bitmap
=
generateQRCode
(
wifiContent
,
735
,
735
,
5
)
SpJsonUtils
.
addJsonBean
<
ScanBean
>(
SCAN_HISTORY_KEY
,
wifiBean
)
runOnUiThread
{
binding
.
ivQr
.
setImageBitmap
(
bitmap
)
val
file
=
File
(
cacheDir
,
System
.
currentTimeMillis
().
toString
()
+
".jpg"
)
...
...
app/src/main/java/com/base/scanqr/utils/SpJsonUtils.kt
0 → 100644
View file @
ccaa799c
package
com.base.scanqr.utils
import
com.google.gson.Gson
import
com.google.gson.reflect.TypeToken
object
SpJsonUtils
{
const
val
SCAN_HISTORY_KEY
=
"scan_history_key"
fun
<
T
>
getSpJsonList
(
key
:
String
):
List
<
T
>
{
val
sp
=
AppPreferences
.
getInstance
().
getString
(
key
,
""
)
return
if
(
sp
.
equals
(
""
))
{
listOf
()
}
else
{
val
listType
=
object
:
TypeToken
<
List
<
T
>>()
{}.
type
val
users
:
List
<
T
>
=
Gson
().
fromJson
(
sp
,
listType
)
return
users
}
}
fun
<
T
>
saveJsonBeanList
(
key
:
String
,
list
:
List
<
T
>)
{
val
json
=
Gson
().
toJson
(
list
)
AppPreferences
.
getInstance
().
put
(
key
,
json
)
}
fun
<
T
>
addJsonBean
(
key
:
String
,
bean
:
T
)
{
val
arrayList
=
arrayListOf
<
T
>()
val
list
=
getSpJsonList
<
T
>(
key
)
arrayList
.
addAll
(
list
)
arrayList
.
add
(
bean
)
saveJsonBeanList
(
key
,
arrayList
.
toList
())
}
fun
<
T
>
removeJsonBean
(
key
:
String
,
bean
:
T
,
removeIf
:
(
it1
:
T
,
it2
:
T
)
->
Boolean
)
{
val
list
=
getSpJsonList
<
T
>(
key
).
toMutableList
()
list
.
removeIf
{
removeIf
(
it
,
bean
)
}
saveJsonBeanList
(
key
,
list
)
}
}
\ No newline at end of file
app/src/main/java/com/base/scanqr/utils/SpStringUtils.kt
View file @
ccaa799c
...
...
@@ -5,7 +5,7 @@ object SpStringUtils {
private
val
TAG
=
"SpStringUtils"
const
val
_KEY
=
"
"
// const val KEY = "KEY
"
fun
getSpStringList
(
key
:
String
):
List
<
String
>
{
val
sp
=
AppPreferences
.
getInstance
().
getString
(
key
,
""
)
...
...
app/src/main/res/drawable/bg_6473f8_10.xml
0 → 100644
View file @
ccaa799c
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<solid
android:color=
"#6473F8"
/>
<corners
android:radius=
"10dp"
/>
</shape>
\ No newline at end of file
app/src/main/res/drawable/bg_ecf6ee_10.xml
0 → 100644
View file @
ccaa799c
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<solid
android:color=
"#ECF6EE"
/>
<corners
android:radius=
"10dp"
/>
</shape>
\ No newline at end of file
app/src/main/res/drawable/bg_eeefff_10.xml
0 → 100644
View file @
ccaa799c
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<solid
android:color=
"#EEEFFF"
/>
<corners
android:radius=
"10dp"
/>
</shape>
\ No newline at end of file
app/src/main/res/drawable/bg_f4f4f4_10.xml
0 → 100644
View file @
ccaa799c
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<solid
android:color=
"#F4F4F4"
/>
<corners
android:radius=
"10dp"
/>
</shape>
\ No newline at end of file
app/src/main/res/drawable/bg_f8e4e6_10.xml
0 → 100644
View file @
ccaa799c
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<solid
android:color=
"#F8E4E6"
/>
<corners
android:radius=
"10dp"
/>
</shape>
\ No newline at end of file
app/src/main/res/drawable/bg_transparent.xml
0 → 100644
View file @
ccaa799c
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<solid
android:color=
"@android:color/transparent"
/>
</shape>
\ No newline at end of file
app/src/main/res/layout/fragment_history.xml
View file @
ccaa799c
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
<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=
".ui.main.HistoryFragment"
>
<
!-- TODO: Update blank fragment layout -->
<TextView
<
FrameLayout
android:id=
"@+id/fl_top"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical|start"
android:layout_marginVertical=
"10dp"
android:layout_marginStart=
"16dp"
android:text=
"@string/history"
android:textSize=
"19sp"
android:textStyle=
"bold"
/>
<ImageView
android:id=
"@+id/iv_vip"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical|end"
android:layout_marginEnd=
"16dp"
android:src=
"@mipmap/h_vip"
tools:ignore=
"ContentDescription"
/>
</FrameLayout>
<LinearLayout
android:layout_width=
"265dp"
android:layout_height=
"45dp"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"10dp"
android:background=
"@drawable/bg_f4f4f4_10"
>
<TextView
android:id=
"@+id/tv_scan"
android:layout_width=
"0dp"
android:layout_height=
"match_parent"
android:text=
"@string/hello_blank_fragment"
/>
android:layout_marginVertical=
"3dp"
android:layout_marginStart=
"3dp"
android:layout_weight=
"1"
android:background=
"@drawable/bg_6473f8_10"
android:gravity=
"center"
android:text=
"@string/scan"
android:textColor=
"@color/white"
android:textSize=
"15sp"
android:textStyle=
"bold"
/>
<TextView
android:id=
"@+id/tv_create"
android:layout_width=
"0dp"
android:layout_height=
"match_parent"
android:layout_marginVertical=
"3dp"
android:layout_marginEnd=
"3dp"
android:layout_weight=
"1"
android:background=
"@drawable/bg_transparent"
android:gravity=
"center"
android:text=
"@string/create"
android:textColor=
"#666666"
android:textSize=
"15sp"
android:textStyle=
"bold"
/>
</LinearLayout>
<LinearLayout
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_horizontal"
android:layout_marginTop=
"20dp"
>
<LinearLayout
android:id=
"@+id/ll_sort"
android:layout_width=
"108dp"
android:layout_height=
"32dp"
android:layout_marginHorizontal=
"5dp"
android:background=
"@drawable/bg_eeefff_10"
android:gravity=
"center"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:src=
"@mipmap/h_sort"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginStart=
"6dp"
android:includeFontPadding=
"false"
android:text=
"@string/sort"
android:textColor=
"@color/black"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/ll_export"
android:layout_width=
"108dp"
android:layout_height=
"32dp"
android:layout_marginHorizontal=
"5dp"
android:background=
"@drawable/bg_ecf6ee_10"
android:gravity=
"center"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:src=
"@mipmap/h_export"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginStart=
"6dp"
android:includeFontPadding=
"false"
android:text=
"@string/export"
android:textColor=
"@color/black"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/ll_remove"
android:layout_width=
"108dp"
android:layout_height=
"32dp"
android:layout_marginHorizontal=
"5dp"
android:background=
"@drawable/bg_f8e4e6_10"
android:gravity=
"center"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:src=
"@mipmap/h_delete"
tools:ignore=
"ContentDescription"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginStart=
"6dp"
android:includeFontPadding=
"false"
android:text=
"@string/remove"
android:textColor=
"@color/black"
/>
</LinearLayout>
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"12dp"
tools:listitem=
"@layout/item_history"
app:layoutManager=
"androidx.recyclerview.widget.LinearLayoutManager"
/>
</FrameLayout>
\ No newline at end of file
</LinearLayout>
\ No newline at end of file
app/src/main/res/layout/item_history.xml
0 → 100644
View file @
ccaa799c
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"62dp"
android:layout_marginHorizontal=
"16dp"
android:layout_marginVertical=
"8dp"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"horizontal"
>
<ImageView
android:id=
"@+id/iv_icon"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginStart=
"15dp"
android:src=
"@mipmap/h_wifi"
tools:ignore=
"ContentDescription"
/>
<LinearLayout
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:layout_marginStart=
"12dp"
android:layout_marginEnd=
"2dp"
android:layout_weight=
"1"
android:orientation=
"vertical"
>
<TextView
android:id=
"@+id/tv_desc"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:singleLine=
"true"
android:textColor=
"@color/black"
android:textSize=
"16sp"
tools:text=
"65X1069490602713"
/>
<TextView
android:id=
"@+id/tv_time"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"3dp"
android:textColor=
"#999999"
android:textSize=
"14sp"
tools:text=
"20 seconds ago"
/>
</LinearLayout>
<FrameLayout
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center_vertical"
android:padding=
"10dp"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:src=
"@mipmap/genduo"
tools:ignore=
"ContentDescription"
/>
</FrameLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
\ No newline at end of file
app/src/main/res/mipmap-xxhdpi/genduo.png
0 → 100644
View file @
ccaa799c
479 Bytes
app/src/main/res/mipmap-xxhdpi/h_delete.png
0 → 100644
View file @
ccaa799c
1.38 KB
app/src/main/res/mipmap-xxhdpi/h_export.png
0 → 100644
View file @
ccaa799c
1.59 KB
app/src/main/res/mipmap-xxhdpi/h_sort.png
0 → 100644
View file @
ccaa799c
1.45 KB
app/src/main/res/values/strings.xml
View file @
ccaa799c
...
...
@@ -42,4 +42,7 @@
<string
name=
"enter_address_email"
>
Enter address email
</string>
<string
name=
"subject"
>
Subject
</string>
<string
name=
"enter_your_message_here"
>
Enter your message here...
</string>
<string
name=
"sort"
>
Sort
</string>
<string
name=
"export"
>
Export
</string>
<string
name=
"remove"
>
Remove
</string>
</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