Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
YDL-Component-Medical
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
杨凯
YDL-Component-Medical
Commits
653de592
Commit
653de592
authored
May 09, 2022
by
范玉宾
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
quit meditation dialog done
parent
eccc3d06
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
537 additions
and
13 deletions
+537
-13
AndroidManifest.xml
m-muse/src/main/AndroidManifest.xml
+4
-0
MeditationTimeOffActivity.kt
m-muse/src/main/java/com/yidianling/muse/activity/MeditationTimeOffActivity.kt
+59
-0
PlayMeditationActivity.kt
m-muse/src/main/java/com/yidianling/muse/activity/PlayMeditationActivity.kt
+26
-2
PlayPureMusicActivity.kt
m-muse/src/main/java/com/yidianling/muse/activity/PlayPureMusicActivity.kt
+138
-0
MediaPlayerHelper.kt
m-muse/src/main/java/com/yidianling/muse/helper/MediaPlayerHelper.kt
+78
-0
DisplayUtil.kt
m-muse/src/main/java/com/yidianling/muse/utils/DisplayUtil.kt
+18
-0
QuitMeditationDialog.kt
m-muse/src/main/java/com/yidianling/muse/widget/QuitMeditationDialog.kt
+90
-0
ShareMeditationDialog.kt
m-muse/src/main/java/com/yidianling/muse/widget/ShareMeditationDialog.kt
+0
-1
bg_meditation_quit.xml
m-muse/src/main/res/drawable/bg_meditation_quit.xml
+9
-0
icon_meditation_collected.xml
m-muse/src/main/res/drawable/icon_meditation_collected.xml
+24
-0
activity_play_meditation.xml
m-muse/src/main/res/layout/activity_play_meditation.xml
+10
-0
activity_play_meditation_time_off.xml
m-muse/src/main/res/layout/activity_play_meditation_time_off.xml
+2
-10
layout_quit_meditation.xml
m-muse/src/main/res/layout/layout_quit_meditation.xml
+58
-0
layout_wheel_item.xml
m-muse/src/main/res/layout/layout_wheel_item.xml
+21
-0
No files found.
m-muse/src/main/AndroidManifest.xml
View file @
653de592
...
...
@@ -13,5 +13,9 @@
<activity
android:name=
".activity.PlayMeditationActivity"
android:screenOrientation=
"portrait"
android:theme=
"@style/platform_NoTitleTheme"
/>
<activity
android:name=
".activity.PlayPureMusicActivity"
android:screenOrientation=
"portrait"
android:theme=
"@style/platform_NoTitleTheme"
/>
<activity
android:name=
".activity.MeditationTimeOffActivity"
/>
</application>
</manifest>
m-muse/src/main/java/com/yidianling/muse/activity/MeditationTimeOffActivity.kt
0 → 100644
View file @
653de592
package
com.yidianling.muse.activity
import
android.os.Bundle
import
com.ydl.ydlcommon.base.BaseActivity
import
com.ydl.ydlcommon.bean.StatusBarOptions
import
com.ydl.ydlcommon.utils.StatusBarUtils
import
com.ydl.ydlcommon.utils.remind.ToastHelper
import
com.yidianling.muse.R
import
kotlinx.android.synthetic.main.activity_play_meditation_time_off.*
class
MeditationTimeOffActivity
:
BaseActivity
()
{
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
StatusBarUtils
.
setTransparentForImageView
(
this
,
null
)
StatusBarUtils
.
statusBarLightMode
(
this
)
super
.
onCreate
(
savedInstanceState
)
initView
()
}
private
fun
initView
()
{
iv_close
?.
setOnClickListener
{
finish
()
}
tv_save_setting
?.
setOnClickListener
{
ToastHelper
.
show
(
"保存设置"
)
finish
()
}
tv_cancel_time_off
?.
setOnClickListener
{
ToastHelper
.
show
(
"关闭定时"
)
finish
()
}
initWheel
()
}
private
fun
initWheel
()
{
}
override
fun
getStatusViewOptions
():
StatusBarOptions
{
return
StatusBarOptions
(
true
,
false
)
}
override
fun
initDataAndEvent
()
{
}
override
fun
layoutResId
():
Int
{
return
R
.
layout
.
activity_play_meditation_time_off
}
}
\ No newline at end of file
m-muse/src/main/java/com/yidianling/muse/activity/PlayMeditationActivity.kt
View file @
653de592
...
...
@@ -14,6 +14,8 @@ import com.ydl.ydlcommon.utils.StatusBarUtils.Companion.setTransparentForImageVi
import
com.ydl.ydlcommon.utils.StatusBarUtils.Companion.statusBarLightMode
import
com.ydl.ydlcommon.utils.remind.ToastHelper
import
com.yidianling.muse.R
import
com.yidianling.muse.helper.MediaPlayerHelper
import
com.yidianling.muse.widget.QuitMeditationDialog
import
com.yidianling.muse.widget.ShareMeditationDialog
import
kotlinx.android.synthetic.main.activity_play_meditation.*
import
kotlin.properties.Delegates
...
...
@@ -28,6 +30,7 @@ class PlayMeditationActivity : BaseActivity() {
private
var
collected
=
false
private
var
shareDialog
:
ShareMeditationDialog
?
=
null
private
var
quitDialog
:
QuitMeditationDialog
?
=
null
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
setTransparentForImageView
(
this
,
null
)
...
...
@@ -56,8 +59,19 @@ class PlayMeditationActivity : BaseActivity() {
.
into
(
iv_bg
)
iv_close
.
setOnClickListener
{
if
(
quitDialog
==
null
){
quitDialog
=
QuitMeditationDialog
.
newInstance
()
}
if
(
quitDialog
!=
null
&&
quitDialog
?.
isAdded
==
false
){
quitDialog
?.
setListener
(
object
:
QuitMeditationDialog
.
ClickListener
{
override
fun
quit
()
{
ToastHelper
.
show
(
"结束练习"
)
finish
()
}
})
quitDialog
?.
show
(
supportFragmentManager
,
QuitMeditationDialog
.
TAG
)
}
}
iv_back
.
setOnClickListener
{
finish
()
...
...
@@ -79,12 +93,11 @@ class PlayMeditationActivity : BaseActivity() {
tv_title
.
text
=
"这是一首简单的冥想BGM"
tv_content
.
text
=
"写着人们心疼的曲折,我想我很快乐,做一个旁观者"
iv_collect
.
setOnClickListener
{
collected
=
!
collected
if
(
collected
)
{
ToastHelper
.
show
(
"收藏成功!"
)
iv_collect
.
setImageResource
(
R
.
drawable
.
icon_
play_meditation_collect
)
iv_collect
.
setImageResource
(
R
.
drawable
.
icon_
meditation_collected
)
}
else
{
ToastHelper
.
show
(
"取消收藏!"
)
iv_collect
.
setImageResource
(
R
.
drawable
.
icon_play_meditation_collect
)
...
...
@@ -132,6 +145,16 @@ class PlayMeditationActivity : BaseActivity() {
}
}
// MediaPlayerHelper.getInstance(this).setPath(
// "https://storage.googleapis.com/exoplayer-test-media-0/play.mp3"
// )
}
private
fun
initPlayer
(){
}
}
\ No newline at end of file
m-muse/src/main/java/com/yidianling/muse/activity/PlayPureMusicActivity.kt
0 → 100644
View file @
653de592
package
com.yidianling.muse.activity
import
android.os.Build
import
android.os.Bundle
import
android.widget.ImageView
import
android.widget.TextView
import
androidx.appcompat.widget.AppCompatSeekBar
import
androidx.constraintlayout.widget.ConstraintLayout
import
com.alibaba.android.arouter.facade.annotation.Route
import
com.bumptech.glide.Glide
import
com.ydl.ydlcommon.base.BaseActivity
import
com.ydl.ydlcommon.bean.StatusBarOptions
import
com.ydl.ydlcommon.utils.StatusBarUtils.Companion.setTransparentForImageView
import
com.ydl.ydlcommon.utils.StatusBarUtils.Companion.statusBarLightMode
import
com.ydl.ydlcommon.utils.remind.ToastHelper
import
com.yidianling.muse.R
import
com.yidianling.muse.widget.ShareMeditationDialog
import
kotlinx.android.synthetic.main.activity_play_meditation.*
import
kotlin.properties.Delegates
@Route
(
path
=
"/muse/play_pure_music"
)
class
PlayPureMusicActivity
:
BaseActivity
()
{
private
var
bgUrl
=
"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fcuimianxinli.com%2Fupload%2F2016-07%2F16072613412794.jpg&refer=http%3A%2F%2Fcuimianxinli.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1654150276&t=393628420414c371b4b00540943cf0c7"
private
var
collected
=
false
private
var
shareDialog
:
ShareMeditationDialog
?
=
null
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
setTransparentForImageView
(
this
,
null
)
statusBarLightMode
(
this
)
super
.
onCreate
(
savedInstanceState
)
initView
()
}
override
fun
initDataAndEvent
()
{
}
override
fun
layoutResId
():
Int
{
return
R
.
layout
.
activity_play_pure_music
}
override
fun
getStatusViewOptions
():
StatusBarOptions
{
return
StatusBarOptions
(
true
,
false
)
}
private
fun
initView
()
{
Glide
.
with
(
this
)
.
load
(
bgUrl
)
.
into
(
iv_bg
)
iv_close
.
setOnClickListener
{
finish
()
}
iv_back
.
setOnClickListener
{
finish
()
}
iv_share
.
setOnClickListener
{
if
(
shareDialog
==
null
)
{
shareDialog
=
ShareMeditationDialog
.
newInstance
(
shareImageUrl
=
bgUrl
,
shareContent
=
"老铁,我是你要分享的内容"
)
}
if
(
shareDialog
!=
null
&&
shareDialog
?.
isAdded
==
false
)
{
shareDialog
?.
show
(
supportFragmentManager
,
ShareMeditationDialog
.
TAG
)
}
}
tv_title
.
text
=
"这是一首简单的冥想BGM"
tv_content
.
text
=
"写着人们心疼的曲折,我想我很快乐,做一个旁观者"
iv_collect
.
setOnClickListener
{
collected
=
!
collected
if
(
collected
)
{
ToastHelper
.
show
(
"收藏成功!"
)
iv_collect
.
setImageResource
(
R
.
drawable
.
icon_play_meditation_collect
)
}
else
{
ToastHelper
.
show
(
"取消收藏!"
)
iv_collect
.
setImageResource
(
R
.
drawable
.
icon_play_meditation_collect
)
}
}
iv_time_off
.
setOnClickListener
{
ToastHelper
.
show
(
"设置定时关闭!"
)
}
iv_play_or_pause
.
setOnClickListener
{
}
iv_previous
.
setOnClickListener
{
ToastHelper
.
show
(
"上一首!"
)
}
iv_next
.
setOnClickListener
{
ToastHelper
.
show
(
"下一首!"
)
}
iv_rewind
.
setOnClickListener
{
val
currentProgress
=
seekbar_play_progress
.
progress
val
progress
=
0
.
coerceAtLeast
(
currentProgress
-
15
)
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
N
)
{
seekbar_play_progress
.
setProgress
(
progress
,
true
)
}
else
{
seekbar_play_progress
.
progress
=
progress
}
}
iv_fast_forward
.
setOnClickListener
{
val
currentProgress
=
seekbar_play_progress
.
progress
val
progress
=
100
.
coerceAtMost
(
currentProgress
+
15
)
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
N
)
{
seekbar_play_progress
.
setProgress
(
progress
,
true
)
}
else
{
seekbar_play_progress
.
progress
=
progress
}
}
}
}
\ No newline at end of file
m-muse/src/main/java/com/yidianling/muse/helper/MediaPlayerHelper.kt
0 → 100644
View file @
653de592
package
com.yidianling.muse.helper
import
android.content.Context
import
android.media.MediaPlayer
import
android.net.Uri
import
kotlin.properties.Delegates
class
MediaPlayerHelper
private
constructor
(
private
var
mContext
:
Context
)
{
private
var
listener
:
OnMediaPlayerHelperListener
by
Delegates
.
notNull
()
companion
object
{
private
var
mContext
:
Context
by
Delegates
.
notNull
()
private
var
mMediaPlayer
:
MediaPlayer
by
Delegates
.
notNull
()
private
var
mPath
:
String
by
Delegates
.
notNull
()
@Volatile
private
var
instance
:
MediaPlayerHelper
?
=
null
fun
getInstance
(
context
:
Context
):
MediaPlayerHelper
{
return
when
{
instance
!=
null
->
instance
!!
else
->
synchronized
(
this
)
{
if
(
instance
==
null
)
{
mContext
=
context
mMediaPlayer
=
MediaPlayer
()
instance
=
MediaPlayerHelper
(
context
)
}
instance
!!
}
}
}
}
fun
setPath
(
path
:
String
)
{
mPath
=
path
if
(
mMediaPlayer
.
isPlaying
)
{
mMediaPlayer
.
reset
()
}
mMediaPlayer
.
setDataSource
(
Companion
.
mContext
,
Uri
.
parse
(
path
))
mMediaPlayer
.
prepareAsync
()
mMediaPlayer
.
setOnPreparedListener
{
listener
?.
onPrepared
(
it
)
}
}
fun
getPath
():
String
{
return
mPath
}
fun
play
()
{
if
(
mMediaPlayer
.
isPlaying
)
return
mMediaPlayer
.
start
()
}
fun
pause
()
{
if
(
mMediaPlayer
.
isPlaying
)
{
mMediaPlayer
.
pause
()
}
}
fun
setOnPreparedListener
(
listener
:
OnMediaPlayerHelperListener
)
{
this
.
listener
=
listener
}
interface
OnMediaPlayerHelperListener
{
fun
onPrepared
(
mediaPlayer
:
MediaPlayer
)
}
}
\ No newline at end of file
m-muse/src/main/java/com/yidianling/muse/utils/DisplayUtil.kt
0 → 100644
View file @
653de592
package
com.yidianling.muse.utils
import
android.content.Context
import
android.util.DisplayMetrics
class
DisplayUtil
{
companion
object
{
fun
dp2px
(
displayMetrics
:
DisplayMetrics
,
dpValue
:
Float
):
Int
{
val
scale
=
displayMetrics
.
density
return
(
dpValue
*
scale
+
0.5F
).
toInt
()
}
}
}
\ No newline at end of file
m-muse/src/main/java/com/yidianling/muse/widget/QuitMeditationDialog.kt
0 → 100644
View file @
653de592
package
com.yidianling.muse.widget
import
android.os.Bundle
import
android.util.DisplayMetrics
import
android.view.Gravity
import
android.view.LayoutInflater
import
android.view.View
import
android.view.ViewGroup
import
android.view.ViewGroup.LayoutParams.WRAP_CONTENT
import
android.widget.TextView
import
androidx.fragment.app.DialogFragment
import
com.yidianling.muse.R
import
com.yidianling.muse.utils.DisplayUtil
class
QuitMeditationDialog
:
DialogFragment
()
{
private
var
tvQuit
:
TextView
?
=
null
private
var
tvCancel
:
TextView
?
=
null
private
var
mListener
:
ClickListener
?=
null
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
setStyle
(
STYLE_NO_TITLE
,
R
.
style
.
share_meditation_dialog
)
}
override
fun
onStart
()
{
super
.
onStart
()
val
displayMetrics
=
DisplayMetrics
()
activity
?.
windowManager
?.
defaultDisplay
?.
getMetrics
(
displayMetrics
)
val
window
=
dialog
?.
window
window
?.
setGravity
(
Gravity
.
CENTER
)
window
?.
setLayout
(
DisplayUtil
.
dp2px
(
displayMetrics
,
300F
),
WRAP_CONTENT
)
}
override
fun
onCreateView
(
inflater
:
LayoutInflater
,
container
:
ViewGroup
?,
savedInstanceState
:
Bundle
?
):
View
?
{
val
view
=
inflater
.
inflate
(
R
.
layout
.
layout_quit_meditation
,
container
)
initView
(
view
)
return
view
}
private
fun
initView
(
view
:
View
?)
{
tvQuit
=
view
?.
findViewById
(
R
.
id
.
tv_sure_quit
)
tvCancel
=
view
?.
findViewById
(
R
.
id
.
tv_cancel_quit
)
tvQuit
?.
setOnClickListener
{
mListener
?.
quit
()
dismiss
()
}
tvCancel
?.
setOnClickListener
{
dismiss
()
}
}
fun
setListener
(
listener
:
ClickListener
):
QuitMeditationDialog
{
mListener
=
listener
return
this
}
interface
ClickListener
{
fun
quit
()
{}
}
companion
object
{
const
val
TAG
=
"QuitMeditationDialog"
fun
newInstance
():
QuitMeditationDialog
{
val
args
=
Bundle
()
val
fragment
=
QuitMeditationDialog
()
fragment
.
arguments
=
args
return
fragment
}
}
}
\ No newline at end of file
m-muse/src/main/java/com/yidianling/muse/widget/ShareMeditationDialog.kt
View file @
653de592
...
...
@@ -16,7 +16,6 @@ import com.ydl.ydlcommon.utils.remind.ToastHelper
import
com.yidianling.muse.R
class
ShareMeditationDialog
:
DialogFragment
()
{
private
var
ivSharePicture
:
ImageView
?=
null
...
...
m-muse/src/main/res/drawable/bg_meditation_quit.xml
0 → 100644
View file @
653de592
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:shape=
"rectangle"
>
<corners
android:radius=
"8dp"
/>
<solid
android:color=
"@color/white"
/>
</shape>
\ No newline at end of file
m-muse/src/main/res/drawable/icon_meditation_collected.xml
0 → 100644
View file @
653de592
<vector
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:aapt=
"http://schemas.android.com/aapt"
android:width=
"26dp"
android:height=
"26dp"
android:viewportWidth=
"26"
android:viewportHeight=
"26"
>
<path
android:pathData=
"M17.8139,3C15.4366,3 13.7337,5.173 12.9998,6.3222C12.2651,5.173 10.5629,3 8.1857,3C4.7744,3 2,6.1183 2,9.9507C2,11.7428 3.1983,14.312 4.653,15.6566C6.6652,18.2791 12.3223,23 13.0207,23C13.7314,23 19.2671,18.3708 21.3157,15.688C22.7959,14.3198 24,11.7472 24,9.9507C24,6.1182 21.2252,3 17.8139,3"
android:strokeWidth=
"1"
android:fillType=
"nonZero"
android:strokeColor=
"#00000000"
>
<aapt:attr
name=
"android:fillColor"
>
<gradient
android:startY=
"4.735537"
android:startX=
"8.220921"
android:endY=
"18.2729"
android:endX=
"17.016783"
android:type=
"linear"
>
<item
android:offset=
"0"
android:color=
"#FFFFB5A5"
/>
<item
android:offset=
"1"
android:color=
"#FFFF7366"
/>
</gradient>
</aapt:attr>
</path>
</vector>
m-muse/src/main/res/layout/activity_play_meditation.xml
View file @
653de592
...
...
@@ -213,6 +213,15 @@
app:layout_constraintBottom_toTopOf=
"@id/seekbar_play_progress"
app:layout_constraintStart_toEndOf=
"@id/guide_line"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"8dp"
tools:text=
"56:32"
app:layout_constraintTop_toBottomOf=
"@id/iv_time_off"
app:layout_constraintStart_toStartOf=
"@id/iv_time_off"
app:layout_constraintEnd_toEndOf=
"@id/iv_time_off"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</FrameLayout>
\ No newline at end of file
m-muse/src/main/res/layout/activity_play_meditation_time_off.xml
View file @
653de592
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
xmlns:tools=
"http://schemas.android.com/tools"
...
...
@@ -30,15 +31,6 @@
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/iv_close"
/>
<com.contrarywind.view.WheelView
android:id=
"@+id/wv_hour"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"40dp"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/tv_title"
/>
<TextView
android:id=
"@+id/tv_cancel_time_off"
android:layout_width=
"match_parent"
...
...
m-muse/src/main/res/layout/layout_quit_meditation.xml
0 → 100644
View file @
653de592
<?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:layout_marginHorizontal=
"38dp"
android:background=
"@drawable/bg_meditation_quit"
android:orientation=
"vertical"
>
<TextView
android:id=
"@+id/tv_title"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginVertical=
"28dp"
android:text=
"确定要结束联系吗?"
android:textColor=
"#FF242424"
android:textSize=
"16sp"
android:layout_gravity=
"center_horizontal"
/>
<View
android:layout_width=
"match_parent"
android:layout_height=
"0.5dp"
android:background=
"#FFD8D8D8"
/>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"44dp"
android:orientation=
"horizontal"
>
<TextView
android:id=
"@+id/tv_sure_quit"
android:layout_width=
"0dp"
android:layout_weight=
"1"
android:layout_height=
"match_parent"
android:gravity=
"center"
android:text=
"结束练习"
android:textColor=
"#FF666666"
android:textSize=
"18sp"
/>
<View
android:layout_width=
"0.5dp"
android:layout_height=
"match_parent"
android:background=
"#FFD8D8D8"
/>
<TextView
android:id=
"@+id/tv_cancel_quit"
android:layout_width=
"0dp"
android:layout_weight=
"1"
android:layout_height=
"match_parent"
android:gravity=
"center"
android:text=
"再练一会"
android:textColor=
"#FF1DA1F2"
android:textSize=
"18sp"
/>
</LinearLayout>
</LinearLayout>
\ No newline at end of file
m-muse/src/main/res/layout/layout_wheel_item.xml
0 → 100644
View file @
653de592
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
>
<TextView
android:id=
"@+id/tv_item_name"
android:layout_width=
"wrap_content"
android:layout_height=
"30dp"
android:gravity=
"center"
android:layout_margin=
"10dp"
android:textSize=
"30sp"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintBottom_toBottomOf=
"parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ 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