Skip to content

Commit

Permalink
optimization
Browse files Browse the repository at this point in the history
  • Loading branch information
Brazesh Tamang committed Sep 8, 2022
1 parent fb4ed17 commit 07e40bd
Show file tree
Hide file tree
Showing 7 changed files with 155 additions and 152 deletions.
2 changes: 2 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ dependencies {
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1'
implementation 'androidx.activity:activity-compose:1.5.1'

implementation "androidx.metrics:metrics-performance:1.0.0-alpha03"

testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
Expand Down
21 changes: 21 additions & 0 deletions app/src/main/java/com/github/aagitoex/nepcal/MainActivity.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.github.aagitoex.nepcal

import android.os.Bundle
import android.util.Log
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.clickable
Expand All @@ -10,13 +11,28 @@ import androidx.compose.material.Surface
import androidx.compose.material.Text
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.metrics.performance.JankStats
import com.diyalotech.datepicker.ui.CalendarDialog
import com.github.aagitoex.nepcal.ui.theme.NepCalTheme
import java.time.LocalDate

class MainActivity : ComponentActivity() {

private lateinit var jankStats: JankStats

override fun onResume() {
super.onResume()
jankStats.isTrackingEnabled = true
}

override fun onPause() {
super.onPause()
jankStats.isTrackingEnabled = false
}

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// initialize JankStats for current window

setContent {
NepCalTheme {
Expand All @@ -32,6 +48,7 @@ class MainActivity : ComponentActivity() {
})

if (showDateDialog) {

CalendarDialog(
selectedDate = LocalDate.now()!!,
onDismissRequest = {
Expand All @@ -46,5 +63,9 @@ class MainActivity : ComponentActivity() {
}
}

jankStats = JankStats.createAndTrack(window) {
if (it.isJank)
Log.v("JankStatsSample", it.toString())
}
}
}
2 changes: 1 addition & 1 deletion datepicker/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ dependencies {
implementation "androidx.compose.ui:ui-tooling-preview:$compose_calendar"

implementation "com.google.accompanist:accompanist-pager:0.25.1"
api 'io.github.aagitoex:nepdate:0.0.1-alpha02'
api 'io.github.aagitoex:nepdate:0.0.1-beta01'

testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.diyalotech.datepicker.ui

import androidx.compose.animation.slideInVertically
import androidx.compose.animation.slideOutVertically
import androidx.compose.animation.*
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
Expand Down Expand Up @@ -53,7 +52,7 @@ import java.time.LocalDate
fun CalendarDialog(
selectedDate: LocalDate,
title: String = "Select date",
dialogProperties: DialogProperties = DialogProperties(usePlatformDefaultWidth = false),
dialogProperties: DialogProperties = DialogProperties(),
minDate: LocalDate = NepDate.MIN.ad,
maxDate: LocalDate = NepDate.MAX.ad,
onDismissRequest: () -> Unit,
Expand Down Expand Up @@ -96,7 +95,6 @@ fun CalendarDialog(
Modifier
.fillMaxWidth()
.wrapContentHeight()
.padding(horizontal = 32.dp)
.clip(MaterialTheme.shapes.large)
.background(MaterialTheme.colors.surface)
) {
Expand Down Expand Up @@ -137,15 +135,14 @@ fun CalendarDialog(
}
)

Box(modifier = Modifier.weight(1f, false)) {
Box {
androidx.compose.animation.AnimatedVisibility(
yearPickerShowing,
modifier = Modifier
.zIndex(0.7f)
.background(MaterialTheme.colors.surface)
.clipToBounds(),
enter = slideInVertically(initialOffsetY = { -it }),
exit = slideOutVertically(targetOffsetY = { -it })
.background(MaterialTheme.colors.surface),
enter = expandVertically(),
exit = shrinkVertically()
) {
YearPicker(currentPage.year, pagerState, yearRange) {
yearPickerShowing = false
Expand Down Expand Up @@ -196,33 +193,26 @@ fun CalendarDialog(

@Composable
private fun CalendarHeader(title: String, selectedDate: NepDate) {
Box(

Column(
Modifier
.padding(start = 24.dp, end = 24.dp)
.fillMaxWidth()
) {
Column(Modifier.padding(start = 24.dp, end = 24.dp)) {
Text(
text = title,
modifier = Modifier.paddingFromBaseline(top = 24.dp),
style = TextStyle(fontSize = 12.sp)
)

Box(
Modifier
.fillMaxWidth()
.paddingFromBaseline(top = 0.dp)
) {
val locale = LocalConfiguration.current.locale

Text(
text = "${selectedDate.monthName(locale)} ${selectedDate.day}, ${selectedDate.year}",
modifier = Modifier.align(Alignment.CenterStart),
style = TextStyle(fontSize = 30.sp, fontWeight = W400)
)
}

Spacer(Modifier.height(8.dp))
}
Text(
text = title,
modifier = Modifier.paddingFromBaseline(top = 24.dp),
style = TextStyle(fontSize = 12.sp)
)

val locale = LocalConfiguration.current.locale

Text(
text = "${selectedDate.monthName(locale)} ${selectedDate.day}, ${selectedDate.year}",
style = TextStyle(fontSize = 30.sp, fontWeight = W400),
modifier = Modifier.paddingFromBaseline(top = 0.dp)
.padding(bottom = 8.dp)
)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import androidx.compose.material.icons.filled.KeyboardArrowLeft
import androidx.compose.material.icons.filled.KeyboardArrowRight
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
Expand All @@ -24,11 +23,7 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.diyalotech.datepicker.monthName
import com.google.accompanist.pager.ExperimentalPagerApi
import com.google.accompanist.pager.PagerState
import io.github.aagitoex.nepdate.NepDate
import kotlinx.coroutines.launch


@Composable
internal fun CalendarViewHeader(
Expand All @@ -42,67 +37,64 @@ internal fun CalendarViewHeader(
if (yearPickerShowing) 180f else 0f
}

Box(
Row(
Modifier
.padding(top = 8.dp, bottom = 8.dp, start = 16.dp, end = 16.dp)
.fillMaxWidth()
) {

Row() {
Row(
Modifier
.clip(CircleShape)
.clickable(onClick = onDismissRequest)
.padding(start = 6.dp, end = 4.dp)
.padding(vertical = 8.dp),
verticalAlignment = Alignment.CenterVertically
) {
Text(
"${viewDate.monthName(locale)} ${viewDate.year}",
modifier = Modifier
.padding(start = 2.dp),
style = TextStyle(fontSize = 14.sp, fontWeight = W600)
)
Spacer(Modifier.width(4.dp))
Icon(
Icons.Default.ArrowDropDown,
contentDescription = "Year Selector",
modifier = Modifier
.size(24.dp)
.rotate(dropDownRotation)
)
}

Spacer(modifier = Modifier.weight(1f))

Icon(
Icons.Default.KeyboardArrowLeft,
contentDescription = "Previous Month",
Row(
Modifier
.clip(CircleShape)
.clickable(onClick = onDismissRequest)
.padding(start = 6.dp, end = 4.dp)
.padding(vertical = 8.dp),
verticalAlignment = Alignment.CenterVertically
) {
Text(
"${viewDate.monthName(locale)} ${viewDate.year}",
modifier = Modifier
.clip(CircleShape)
.size(40.dp)
.clickable {
onClickNav(true)
}

.padding(8.dp),
.padding(start = 2.dp),
style = TextStyle(fontSize = 14.sp, fontWeight = W600)
)

Spacer(modifier = Modifier.width(8.dp))

Spacer(Modifier.width(4.dp))
Icon(
Icons.Default.KeyboardArrowRight,
contentDescription = "Next Month",
Icons.Default.ArrowDropDown,
contentDescription = "Year Selector",
modifier = Modifier
.clip(CircleShape)
.size(40.dp)
.size(24.dp)
.clickable {
onClickNav(false)
}
.padding(8.dp),
.rotate(dropDownRotation)
)
}

Spacer(modifier = Modifier.weight(1f))

Icon(
Icons.Default.KeyboardArrowLeft,
contentDescription = "Previous Month",
modifier = Modifier
.clip(CircleShape)
.size(40.dp)
.clickable {
onClickNav(true)
}

.padding(8.dp),
)

Spacer(modifier = Modifier.width(8.dp))

Icon(
Icons.Default.KeyboardArrowRight,
contentDescription = "Next Month",
modifier = Modifier
.clip(CircleShape)
.size(40.dp)
.size(24.dp)
.clickable {
onClickNav(false)
}
.padding(8.dp),
)
}
}

Expand Down
Loading

0 comments on commit 07e40bd

Please # to comment.