Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@ jobs:
- name: Download emu image and platform tools
run: echo "yes" | /usr/local/lib/android/sdk/cmdline-tools/latest/bin/sdkmanager --install "platform-tools"
- name: Setup emu
run: ./gradlew sampleapp:pixel5api34Setup
run: ./gradlew sampleapp:pixel5api35Setup
- name: Run UI Tests
run: ./gradlew sampleapp:pixel5api34DebugAndroidTest -Pandroid.testoptions.manageddevices.emulator.gpu=swiftshader_indirect
run: ./gradlew sampleapp:pixel5api35DebugAndroidTest -Pandroid.testoptions.manageddevices.emulator.gpu=swiftshader_indirect

publish_release:
name: Publish Release
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ def getVersionName = { ->
}

android {
compileSdk 34
compileSdk 35
version getVersionName()

publishing {
Expand All @@ -34,7 +34,7 @@ android {

defaultConfig {
minSdk 24
targetSdk 34
targetSdk 35
versionName getVersionName()
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
Expand Down
16 changes: 8 additions & 8 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
[versions]
activityCompose = "1.10.0"
activityCompose = "1.10.1"
androidGradlePlugin = "8.6.1"
androidxJunit = "1.2.1"
androidxNavigation = "2.8.7"
androidxNavigation = "2.9.0"
androidxRules = "1.6.1"
androidxRunner = "1.6.2"
androidxUiautomator = "2.3.0"
appcompat = "1.7.0"
composeBom = "2025.02.00"
constraintlayout = "2.2.0"
appcompat = "1.7.1"
composeBom = "2025.06.01"
constraintlayout = "2.2.1"
espresso = "3.6.1"
findbugs = "3.0.2"
fragmentKtx = "1.8.6"
fragmentKtx = "1.8.8"
javaxInject = "1"
jreleaser = "1.17.0"
junit = "4.13.2"
kotlin = "2.1.10"
lifecycleViewmodelKtx = "2.8.7"
lifecycleViewmodelKtx = "2.9.1"
material = "1.12.0"
orchestrator = "1.5.1"
viewbinding = "8.8.0"
viewbinding = "8.11.0"

[libraries]
androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "activityCompose" }
Expand Down
4 changes: 2 additions & 2 deletions sampleapp/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@ android {
execution "ANDROIDX_TEST_ORCHESTRATOR"
managedDevices {
localDevices {
pixel5api34 {
pixel5api35 {
device = "Pixel 5"
apiLevel = 34
apiLevel = 35
systemImageSource = "aosp-atd"
}
}
Expand Down
5 changes: 4 additions & 1 deletion sampleapp/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,10 @@
</activity>
<activity android:name="com.progressive.sampleapp.activities.xml.ListActivity"/>
<activity android:name="com.progressive.sampleapp.activities.xml.ViewPagerActivity"/>
<activity android:name="com.progressive.sampleapp.activities.xml.FinalActivity"/>
<activity
android:name="com.progressive.sampleapp.activities.xml.FinalActivity"
android:windowSoftInputMode="adjustPan"
/>
<activity android:name="com.progressive.sampleapp.activities.xml.ButtonActivity"/>
<activity android:name="com.progressive.sampleapp.activities.xml.TextFieldActivity"/>
<activity android:name="com.progressive.sampleapp.activities.xml.WebViewActivity"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@ private fun SetupContent() {

@Composable
private fun Greeting() {
Text(text = stringResource(id = R.string.final_title))
Text(text = stringResource(id = R.string.final_title),
modifier = Modifier.padding(24.dp))
}

@Composable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,8 @@ private fun SetupContent() {

@Composable
private fun Greeting() {
Text(text = stringResource(id = R.string.second_title))
Text(text = stringResource(id = R.string.second_title),
modifier = Modifier.padding(24.dp))
}

@Composable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,13 @@ import android.text.style.ClickableSpan
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import androidx.core.graphics.Insets
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.Observer
import com.progressive.kherkin.sampleapp.R
import com.progressive.kherkin.sampleapp.databinding.ActivityButtonBinding
Expand All @@ -32,6 +36,8 @@ class ButtonActivity : AppCompatActivity(R.layout.activity_button) {
binding = ActivityButtonBinding.inflate(layoutInflater)
setContentView(binding.root)

setStatusBarMargin()

setupClickListeners()
setupObservers()
}
Expand Down Expand Up @@ -144,4 +150,19 @@ class ButtonActivity : AppCompatActivity(R.layout.activity_button) {
binding.buttonClickCounter.text = getString(R.string.button_click_counter_clicked, clicks + 1)
})
}

private fun setStatusBarMargin() {
val view = findViewById<View>(R.id.buttonConstraint)
if (view != null) {
val params = view.layoutParams
if (params is ViewGroup.MarginLayoutParams) {
ViewCompat.setOnApplyWindowInsetsListener(view) { _: View?, windowInsets: WindowInsetsCompat ->
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.statusBars())
params.setMargins(0, insets.top, 0, 0)
view.requestLayout()
windowInsets
}
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,11 @@ package com.progressive.sampleapp.activities.xml
import android.content.Intent
import android.os.Bundle
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.app.AppCompatActivity
import androidx.core.graphics.Insets
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.progressive.kherkin.sampleapp.R
import com.progressive.kherkin.sampleapp.databinding.ActivityFinalBinding

Expand All @@ -18,6 +22,8 @@ class FinalActivity : AppCompatActivity(R.layout.activity_final) {
binding = ActivityFinalBinding.inflate(layoutInflater)
setContentView(binding.root)

setStatusBarMargin()

setupClickListener()
}

Expand All @@ -32,4 +38,19 @@ class FinalActivity : AppCompatActivity(R.layout.activity_final) {
binding.buttonBottom.text = getString(R.string.button_clicked)
}
}

private fun setStatusBarMargin() {
val view = findViewById<View>(R.id.finalConstraint)
if (view != null) {
val params = view.layoutParams
if (params is ViewGroup.MarginLayoutParams) {
ViewCompat.setOnApplyWindowInsetsListener(view) { _: View?, windowInsets: WindowInsetsCompat ->
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.statusBars())
params.setMargins(0, insets.top, 0, 0)
view.requestLayout()
windowInsets
}
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,12 @@ package com.progressive.sampleapp.activities.xml
import android.content.Intent
import android.os.Bundle
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
import androidx.core.graphics.Insets
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
Expand All @@ -22,6 +26,7 @@ class ListActivity : AppCompatActivity(R.layout.activity_list) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
title = getString(R.string.list_activity_title)
setStatusBarMargin()
initDataset()
}

Expand All @@ -42,4 +47,19 @@ class ListActivity : AppCompatActivity(R.layout.activity_list) {
divider.setDrawable(ContextCompat.getDrawable(this, R.drawable.divider)!!)
recyclerView.addItemDecoration(divider)
}

private fun setStatusBarMargin() {
val view = findViewById<View>(R.id.listConstraint)
if (view != null) {
val params = view.layoutParams
if (params is ViewGroup.MarginLayoutParams) {
ViewCompat.setOnApplyWindowInsetsListener(view) { _: View?, windowInsets: WindowInsetsCompat ->
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.statusBars())
params.setMargins(0, insets.top, 0, 0)
view.requestLayout()
windowInsets
}
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,11 @@ import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.app.AppCompatActivity
import androidx.core.graphics.Insets
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.progressive.kherkin.sampleapp.R
import com.progressive.kherkin.sampleapp.databinding.ActivityTextFieldBinding
import com.progressive.sampleapp.activities.compose.SecondComposeActivity
Expand All @@ -27,6 +31,8 @@ class TextFieldActivity : AppCompatActivity(R.layout.activity_text_field) {
binding = ActivityTextFieldBinding.inflate(layoutInflater)
setContentView(binding.root)

setStatusBarMargin()

binding.editTextEnabledLeft.addTextChangedListener(enabledTextWatcher)
binding.editTextVisibleLeft.addTextChangedListener(visibilityTextWatcher)
binding.editTextWithLabel.addTextChangedListener(numericTextWatcher)
Expand Down Expand Up @@ -80,4 +86,19 @@ class TextFieldActivity : AppCompatActivity(R.layout.activity_text_field) {
binding.editTextWithLabel2.visibility = View.VISIBLE
}
}

private fun setStatusBarMargin() {
val view = findViewById<View>(R.id.textConstraint)
if (view != null) {
val params = view.layoutParams
if (params is ViewGroup.MarginLayoutParams) {
ViewCompat.setOnApplyWindowInsetsListener(view) { _: View?, windowInsets: WindowInsetsCompat ->
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.statusBars())
params.setMargins(0, insets.top, 0, 0)
view.requestLayout()
windowInsets
}
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,11 @@ package com.progressive.sampleapp.activities.xml
import android.content.Intent
import android.os.Bundle
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.app.AppCompatActivity
import androidx.core.graphics.Insets
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.fragment.app.commit
import com.progressive.kherkin.sampleapp.R
import com.progressive.sampleapp.fragments.ViewPagerFragment
Expand All @@ -13,6 +17,9 @@ class ViewPagerActivity : AppCompatActivity(R.layout.activity_view_pager) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
title = getString(R.string.view_pager_activity_title)

setStatusBarMargin()

if (savedInstanceState == null) {
supportFragmentManager.commit {
setReorderingAllowed(true)
Expand All @@ -30,4 +37,19 @@ class ViewPagerActivity : AppCompatActivity(R.layout.activity_view_pager) {
intent = Intent(this, FinalActivity::class.java)
startActivity(intent)
}

private fun setStatusBarMargin() {
val view = findViewById<View>(R.id.viewPagerConstraint)
if (view != null) {
val params = view.layoutParams
if (params is ViewGroup.MarginLayoutParams) {
ViewCompat.setOnApplyWindowInsetsListener(view) { _: View?, windowInsets: WindowInsetsCompat ->
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.statusBars())
params.setMargins(0, insets.top, 0, 0)
view.requestLayout()
windowInsets
}
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
package com.progressive.sampleapp.activities.xml

import android.os.Bundle
import android.view.View
import android.view.ViewGroup
import android.webkit.WebView
import android.webkit.WebViewClient
import androidx.appcompat.app.AppCompatActivity
import androidx.core.graphics.Insets
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.progressive.kherkin.sampleapp.R
import com.progressive.kherkin.sampleapp.databinding.ActivityWebviewBinding

Expand All @@ -20,8 +25,25 @@ class WebViewActivity : AppCompatActivity(R.layout.activity_webview) {
binding = ActivityWebviewBinding.inflate(layoutInflater)
setContentView(binding.root)

setStatusBarMargin()

webView = binding.webView
webView.loadUrl(getString(R.string.web_url))
webView.webViewClient = WebViewClient()
}

private fun setStatusBarMargin() {
val view = findViewById<View>(R.id.webViewConstraint)
if (view != null) {
val params = view.layoutParams
if (params is ViewGroup.MarginLayoutParams) {
ViewCompat.setOnApplyWindowInsetsListener(view) { _: View?, windowInsets: WindowInsetsCompat ->
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.statusBars())
params.setMargins(0, insets.top, 0, 0)
view.requestLayout()
windowInsets
}
}
}
}
}
Loading