Merge "Harden createWatchFaceControlClientImpl against the WF dyeing in the bind" into androidx-main
diff --git a/benchmark/integration-tests/macrobenchmark-target/src/main/AndroidManifest.xml b/benchmark/integration-tests/macrobenchmark-target/src/main/AndroidManifest.xml
index 58d1f37..854c056 100644
--- a/benchmark/integration-tests/macrobenchmark-target/src/main/AndroidManifest.xml
+++ b/benchmark/integration-tests/macrobenchmark-target/src/main/AndroidManifest.xml
@@ -25,6 +25,10 @@
android:theme="@style/Theme.AppCompat"
tools:ignore="MissingApplicationIcon">
+ <!-- Profileable to enable macrobenchmark profiling -->
+ <!--suppress AndroidElementNotAllowed -->
+ <profileable android:shell="true"/>
+
<!--
Activities need to be exported so the macrobenchmark can discover them
under the new package visibility changes for Android 11.
diff --git a/benchmark/macro/src/main/java/androidx/benchmark/macro/Macrobenchmark.kt b/benchmark/macro/src/main/java/androidx/benchmark/macro/Macrobenchmark.kt
index 7936a67..2069797 100644
--- a/benchmark/macro/src/main/java/androidx/benchmark/macro/Macrobenchmark.kt
+++ b/benchmark/macro/src/main/java/androidx/benchmark/macro/Macrobenchmark.kt
@@ -14,24 +14,12 @@
* limitations under the License.
*/
-package androidx.benchmark.macro/*
- * Copyright 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+package androidx.benchmark.macro
+import android.annotation.SuppressLint
import android.content.pm.ApplicationInfo.FLAG_DEBUGGABLE
import android.content.pm.PackageManager
+import android.os.Build
import android.util.Log
import androidx.benchmark.BenchmarkResult
import androidx.benchmark.InstrumentationResults
@@ -52,6 +40,13 @@
)
}
+ @SuppressLint("UnsafeNewApiCall")
+ val errorNotProfileable = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
+ !applicationInfo.isProfileableByShell
+ } else {
+ false
+ }
+
val errors = DeviceInfo.errors +
// TODO: Merge this debuggable check / definition with Errors.kt in benchmark-common
listOfNotNull(
@@ -67,6 +62,23 @@
in ways that mean benchmark improvements might not carry over to a
real user's experience (or even regress release performance).
""".trimIndent()
+ ),
+ conditionalError(
+ hasError = errorNotProfileable,
+ id = "NOT-PROFILEABLE",
+ summary = "Benchmark Target is NOT profileable",
+ message = """
+ Target package $packageName
+ is running without profileable. Profileable is required to enable
+ macrobenchmark to capture detailed trace information from the target process,
+ such as System tracing sections definied in the app, or libraries.
+
+ To make the target profileable, add the following in your target app's
+ main AndroidManifest.xml, within the application tag:
+
+ <!--suppress AndroidElementNotAllowed -->
+ <profileable android:shell="true"/>
+ """.trimIndent()
)
).sortedBy { it.id }
diff --git a/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt b/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt
index c51644e0..8f09a82 100644
--- a/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt
+++ b/buildSrc/src/main/kotlin/androidx/build/LibraryVersions.kt
@@ -48,7 +48,7 @@
val CONTENTPAGER = Version("1.1.0-alpha01")
val COMPOSE = Version(System.getenv("COMPOSE_CUSTOM_VERSION") ?: "1.0.0-alpha13")
val COORDINATORLAYOUT = Version("1.2.0-alpha01")
- val CORE = Version("1.5.0-beta01")
+ val CORE = Version("1.5.0-beta02")
val CORE_ANIMATION = Version("1.0.0-alpha03")
val CORE_ANIMATION_TESTING = Version("1.0.0-alpha03")
val CORE_APPDIGEST = Version("1.0.0-alpha01")
@@ -145,5 +145,5 @@
val WINDOW = Version("1.0.0-alpha03")
val WINDOW_EXTENSIONS = Version("1.0.0-alpha01")
val WINDOW_SIDECAR = Version("0.1.0-alpha01")
- val WORK = Version("2.5.0-rc01")
+ val WORK = Version("2.6.0-alpha01")
}
diff --git a/compose/desktop/desktop/samples/src/jvmMain/kotlin/androidx/compose/desktop/examples/example1/Main.jvm.kt b/compose/desktop/desktop/samples/src/jvmMain/kotlin/androidx/compose/desktop/examples/example1/Main.jvm.kt
index a0aa344..385b464 100644
--- a/compose/desktop/desktop/samples/src/jvmMain/kotlin/androidx/compose/desktop/examples/example1/Main.jvm.kt
+++ b/compose/desktop/desktop/samples/src/jvmMain/kotlin/androidx/compose/desktop/examples/example1/Main.jvm.kt
@@ -39,8 +39,8 @@
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.foundation.lazy.LazyColumn
-import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.lazy.items
+import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.rememberScrollbarAdapter
import androidx.compose.foundation.shape.CircleShape
@@ -64,7 +64,6 @@
import androidx.compose.material.TopAppBar
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Menu
-import androidx.compose.material.icons.outlined.Home
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
@@ -85,6 +84,7 @@
import androidx.compose.ui.input.pointer.PointerInputModifier
import androidx.compose.ui.input.pointer.pointerMoveFilter
import androidx.compose.ui.res.imageResource
+import androidx.compose.ui.res.svgResource
import androidx.compose.ui.res.vectorXmlResource
import androidx.compose.ui.text.Placeholder
import androidx.compose.ui.text.PlaceholderVerticalAlign
@@ -121,7 +121,10 @@
TopAppBar(
title = {
Row(verticalAlignment = Alignment.CenterVertically) {
- Icon(Icons.Outlined.Home, "Home")
+ Image(
+ svgResource("androidx/compose/desktop/example/star.svg"),
+ contentDescription = "Star"
+ )
Text(title)
}
}
diff --git a/compose/desktop/desktop/samples/src/jvmMain/res/androidx/compose/desktop/example/star.svg b/compose/desktop/desktop/samples/src/jvmMain/res/androidx/compose/desktop/example/star.svg
new file mode 100644
index 0000000..7438408
--- /dev/null
+++ b/compose/desktop/desktop/samples/src/jvmMain/res/androidx/compose/desktop/example/star.svg
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns="http://www.w3.org/2000/svg" width="100mm" height="100mm" viewBox="0 0 100 100" version="1.1"
+ id="svg8">
+ <defs
+ id="defs2" />
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(0,-197)"
+ id="layer1">
+ <path
+ id="path3703"
+ d="M 50.000001,197 59.567086,223.90301 85.35534,211.64466 73.096987,237.43292 100,247 73.096986,256.56709 85.355338,282.35534 59.567084,270.09699 49.999999,297 40.432914,270.09699 14.64466,282.35534 26.903013,256.56708 0,247 26.903014,237.43291 14.644662,211.64466 40.432916,223.90301 Z"
+ style="fill:#ff5555;stroke-width:0.21590135" />
+ </g>
+</svg>
diff --git a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/CapitalizationAutoCorrectDemo.kt b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/CapitalizationAutoCorrectDemo.kt
index 56f1900..7d485a6 100644
--- a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/CapitalizationAutoCorrectDemo.kt
+++ b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/CapitalizationAutoCorrectDemo.kt
@@ -30,7 +30,6 @@
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.SolidColor
-import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.input.KeyboardCapitalization
import androidx.compose.ui.text.input.KeyboardType
@@ -92,12 +91,12 @@
var state by rememberSaveable(stateSaver = TextFieldValue.Saver) {
mutableStateOf(TextFieldValue())
}
- val keyboardController = LocalSoftwareKeyboardController.current
+ // TODO(b/1583763): re-add software keyboard controller when replacement API is added
BasicTextField(
modifier = demoTextFieldModifiers.defaultMinSize(100.dp),
value = state,
keyboardOptions = data.keyboardOptions,
- keyboardActions = KeyboardActions { keyboardController?.hideSoftwareKeyboard() },
+ keyboardActions = KeyboardActions { /* hide keyboard */ },
state = it },
textStyle = TextStyle(fontSize = fontSize8),
cursorBrush = SolidColor(Color.Red)
diff --git a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/ComposeInputField.kt b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/ComposeInputField.kt
index e908c57..8437b8b 100644
--- a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/ComposeInputField.kt
+++ b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/ComposeInputField.kt
@@ -29,11 +29,9 @@
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable
-import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalLayoutDirection
-import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.KeyboardType
@@ -74,7 +72,6 @@
}
}
-@OptIn(ExperimentalComposeUiApi::class)
@Composable
internal fun EditLine(
keyboardType: KeyboardType = KeyboardType.Text,
@@ -82,7 +79,7 @@
singleLine: Boolean = false,
text: String = ""
) {
- val keyboardController = LocalSoftwareKeyboardController.current
+ // TODO(b/1583763): re-add software keyboard controller when replacement API is added
val state = rememberSaveable { mutableStateOf(text) }
BasicTextField(
modifier = demoTextFieldModifiers,
@@ -92,7 +89,7 @@
keyboardType = keyboardType,
imeAction = imeAction
),
- keyboardActions = KeyboardActions { keyboardController?.hideSoftwareKeyboard() },
+ keyboardActions = KeyboardActions { /* hide keyboard */ },
state.value = it },
textStyle = TextStyle(fontSize = fontSize8),
)
diff --git a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/KeyboardSingleLineDemo.kt b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/KeyboardSingleLineDemo.kt
index 24cd4c9..76a99ec 100644
--- a/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/KeyboardSingleLineDemo.kt
+++ b/compose/foundation/foundation/integration-tests/foundation-demos/src/main/java/androidx/compose/foundation/demos/text/KeyboardSingleLineDemo.kt
@@ -25,10 +25,8 @@
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable
-import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.SolidColor
-import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.KeyboardType
@@ -114,10 +112,9 @@
}
}
-@OptIn(ExperimentalComposeUiApi::class)
@Composable
private fun MyTextField(data: ImeOptionsData) {
- val keyboardController = LocalSoftwareKeyboardController.current
+ // TODO(b/1583763): re-add software keyboard controller when replacement API is added
val state = rememberSaveable(stateSaver = TextFieldValue.Saver) {
mutableStateOf(TextFieldValue())
}
@@ -125,7 +122,7 @@
modifier = demoTextFieldModifiers.defaultMinSize(100.dp),
value = state.value,
keyboardOptions = data.keyboardOptions,
- keyboardActions = KeyboardActions { keyboardController?.hideSoftwareKeyboard() },
+ keyboardActions = KeyboardActions { /* hide keyboard */ },
singleLine = data.singleLine,
state.value = it },
textStyle = TextStyle(fontSize = fontSize8),
diff --git a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/kotlin/Kotlin.kt b/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/kotlin/Kotlin.kt
index 53f74581..6ef3816 100644
--- a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/kotlin/Kotlin.kt
+++ b/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/kotlin/Kotlin.kt
@@ -20,6 +20,7 @@
package androidx.compose.integration.docs.kotlin
+import androidx.compose.foundation.ScrollState
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
@@ -30,6 +31,7 @@
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
+import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@@ -38,6 +40,7 @@
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.TextUnit
import androidx.compose.ui.unit.dp
+import kotlinx.coroutines.launch
/**
* This file lets DevRel track changes to snippets present in
@@ -143,6 +146,21 @@
}
}*/
+@Composable private fun KotlinSnippet11() {
+ // Create a CoroutineScope that follows this composable's lifecycle
+ val composableScope = rememberCoroutineScope()
+ Button( // ...
+ >
+ // Create a new coroutine that scrolls to the top of the list
+ // and call the ViewModel to load data
+ composableScope.launch {
+ scrollState.animateScrollTo(0) // This is a suspend function
+ viewModel.loadData()
+ }
+ }
+ ) { /* ... */ }
+}
+
/*
Fakes needed for snippets to build:
*/
@@ -155,4 +173,8 @@
}
}
-private fun drawRect() {}
\ No newline at end of file
+private fun drawRect() {}
+
+private val scrollState = ScrollState(0)
+private class MyViewModel { fun loadData() {} }
+private val viewModel = MyViewModel()
diff --git a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/libraries/Libraries.kt b/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/libraries/Libraries.kt
new file mode 100644
index 0000000..19fe7ad
--- /dev/null
+++ b/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/libraries/Libraries.kt
@@ -0,0 +1,281 @@
+// ktlint-disable indent https://github.com/pinterest/ktlint/issues/967
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Ignore lint warnings in documentation snippets
+@file:Suppress(
+ "unused", "UNUSED_PARAMETER", "UNUSED_VARIABLE", "UNUSED_ANONYMOUS_PARAMETER",
+ "RedundantSuspendModifier", "CascadeIf", "ClassName", "SameParameterValue"
+)
+
+package androidx.compose.integration.docs.libraries
+
+import android.content.Context
+import android.graphics.Bitmap
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.lazy.LazyColumn
+import androidx.compose.material.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.DisposableEffect
+import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.runtime.State
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.livedata.observeAsState
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
+import androidx.compose.ui.graphics.ImageBitmap
+import androidx.compose.ui.graphics.asImageBitmap
+import androidx.compose.foundation.lazy.items
+import androidx.compose.material.CircularProgressIndicator
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.res.painterResource
+import androidx.lifecycle.MutableLiveData
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.viewmodel.compose.viewModel
+import androidx.navigation.NavBackStackEntry
+import androidx.navigation.NavHostController
+import androidx.navigation.compose.NavHost
+import androidx.navigation.compose.composable
+import kotlinx.coroutines.flow.Flow
+
+/**
+ * This file lets DevRel track changes to snippets present in
+ * https://developer.android.com/jetpack/compose/xxxxxxxxxx
+ *
+ * No action required if it's modified.
+ */
+
+private object LibrariesSnippet1 {
+ class ExampleViewModel : ViewModel() { /*...*/ }
+
+ @Composable
+ fun MyExample(
+ viewModel: ExampleViewModel = viewModel()
+ ) {
+ // use viewModel here
+ }
+}
+
+private object LibrariesSnippet2 {
+ @Composable
+ fun MyExample(
+ // Returns the same instance as long as the activity is alive,
+ // just as if you grabbed the instance from an Activity or Fragment
+ viewModel: ExampleViewModel = viewModel()
+ ) { /* ... */ }
+
+ @Composable
+ fun MyExample2(
+ viewModel: ExampleViewModel = viewModel() // Same instance as in MyExample
+ ) { /* ... */ }
+}
+
+private object LibrariesSnippet3 {
+ @Composable
+ fun MyExample(
+ viewModel: ExampleViewModel = viewModel()
+ ) {
+ val dataExample = viewModel.exampleLiveData.observeAsState()
+
+ // Because the state is read here,
+ // MyExample recomposes whenever dataExample changes.
+ dataExample.value?.let {
+ ShowData(dataExample)
+ }
+ }
+}
+
+private object LibrariesSnippet4 {
+ @Composable
+ fun fetchImage(url: String): ImageBitmap? {
+ // Holds our current image, and will be updated by the onCommit lambda below
+ var image by remember(url) { mutableStateOf<ImageBitmap?>(null) }
+
+ DisposableEffect(url) {
+ // This onCommit lambda will be invoked every time url changes
+
+ val listener = object : ExampleImageLoader.Listener() {
+ override fun onSuccess(bitmap: Bitmap) {
+ // When the image successfully loads, update our image state
+ image = bitmap.asImageBitmap()
+ }
+ }
+
+ // Now execute the image loader
+ val imageLoader = ExampleImageLoader.get()
+ imageLoader.load(url).into(listener)
+
+ onDispose {
+ // If we leave composition, cancel any pending requests
+ imageLoader.cancel(listener)
+ }
+ }
+
+ // Return the state-backed image property. Any callers of this function
+ // will be recomposed once the image finishes loading
+ return image
+ }
+}
+
+private object LibrariesSnippet5 {
+ /** Example suspending loadImage function */
+ suspend fun loadImage(url: String): ImageBitmap = TODO()
+
+ @Composable
+ fun fetchImage(url: String): ImageBitmap? {
+ // This holds our current image, and will be updated by the
+ // launchInComposition lambda below
+ var image by remember(url) { mutableStateOf<ImageBitmap?>(null) }
+
+ // LaunchedEffect will automatically launch a coroutine to execute
+ // the given block. If the `url` changes, any previously launched coroutine
+ // will be cancelled, and a new coroutine launched.
+ LaunchedEffect(url) {
+ image = loadImage(url)
+ }
+
+ // Return the state-backed image property
+ return image
+ }
+}
+
+private object LibrariesSnippet6 {
+ @HiltViewModel
+ class ExampleViewModel @Inject constructor(
+ private val savedStateHandle: SavedStateHandle,
+ private val repository: ExampleRepository
+ ) : ViewModel() { /* ... */ }
+
+ @Composable
+ fun ExampleScreen(
+ exampleViewModel: ExampleViewModel = viewModel()
+ ) { /* ... */ }
+}
+
+private object LibrariesSnippet7 {
+ @Composable
+ fun MyApp() {
+ NavHost(navController, startDestination = startRoute) {
+ composable("example") { backStackEntry ->
+ // Creates a ViewModel from the current BackStackEntry
+ val exampleViewModel: ExampleViewModel =
+ viewModel(
+ HiltViewModelFactory(LocalContext.current, backStackEntry)
+ )
+ ExampleScreen(exampleViewModel)
+ }
+ /* ... */
+ }
+ }
+}
+
+private object LibrariesSnippet8 {
+ @Composable
+ fun MyExample(flow: Flow<PagingData<String>>) {
+ val lazyPagingItems = flow.collectAsLazyPagingItems()
+ LazyColumn {
+ items(lazyPagingItems) {
+ Text("Item is $it")
+ }
+ }
+ }
+}
+
+private object LibrariesSnippet9 {
+ @Composable
+ fun MyExample() {
+ CoilImage(
+ data = "https://picsum.photos/300/300",
+ loading = {
+ Box(Modifier.fillMaxSize()) {
+ CircularProgressIndicator(Modifier.align(Alignment.Center))
+ }
+ },
+ error = {
+ Image(painterResource(R.drawable.ic_error), contentDescription = "Error")
+ }
+ )
+ }
+}
+
+/*
+Fakes needed for snippets to build:
+ */
+
+private object R {
+ object drawable {
+ const val ic_error = 1
+ }
+}
+
+private fun ShowData(dataExample: State<String?>): Nothing = TODO()
+private class ExampleImageLoader {
+ fun load(url: String): DummyInto = TODO()
+ fun cancel(listener: Listener): Any = TODO()
+
+ open class Listener {
+ open fun onSuccess(bitmap: Bitmap): Unit = TODO()
+ }
+
+ companion object {
+ fun get() = ExampleImageLoader()
+ }
+}
+
+private class DummyInto {
+ fun into(listener: ExampleImageLoader.Listener) {}
+}
+
+private class SavedStateHandle
+private class ExampleRepository
+private annotation class HiltViewModel
+private annotation class Inject
+
+private class ExampleViewModel : ViewModel() {
+ val exampleLiveData = MutableLiveData(" ")
+}
+
+private fun viewModel(factory: HiltViewModelFactory): ExampleViewModel {
+ TODO()
+}
+
+private class HiltViewModelFactory(context: Context, backStackEntry: NavBackStackEntry)
+
+@Composable
+private fun ExampleScreen(vm: ExampleViewModel) {
+ TODO()
+}
+
+@Composable
+private fun CoilImage(
+ data: String,
+ error: @Composable () -> Unit,
+ loading: @Composable () -> Unit
+) {
+ TODO()
+}
+
+private val navController: NavHostController = TODO()
+private val startRoute: String = TODO()
+
+private class PagingData<T>
+
+private fun Flow<PagingData<String>>.collectAsLazyPagingItems() = listOf("")
\ No newline at end of file
diff --git a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/lifecycle/Lifecycle.kt b/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/lifecycle/Lifecycle.kt
index 48bc4b9..455d5b8 100644
--- a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/lifecycle/Lifecycle.kt
+++ b/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/lifecycle/Lifecycle.kt
@@ -53,7 +53,7 @@
/**
* This file lets DevRel track changes to snippets present in
- * https://developer.android.com/jetpack/compose/xxxxxxxxxxxxxxx
+ * https://developer.android.com/jetpack/compose/lifecycle
*
* No action required if it's modified.
*/
@@ -83,8 +83,8 @@
private object LifecycleSnippet3 {
@Composable
fun MoviesScreen(movies: List<Movie>) {
- LazyColumn {
- items(movies) { movie ->
+ Column {
+ for (movie in movies) {
// All MovieOverview composables in Composition will have the same key!
// Thus, all calls will always recompose and restart all side effects.
MovieOverview(movie)
@@ -96,8 +96,8 @@
private object LifecycleSnippet4 {
@Composable
fun MoviesScreen(movies: List<Movie>) {
- LazyColumn {
- items(movies) { movie ->
+ Column {
+ for (movie in movies) {
key(movie.id) { // Unique ID for this movie
MovieOverview(movie)
}
@@ -107,6 +107,17 @@
}
private object LifecycleSnippet5 {
+ @Composable
+ fun MoviesScreen(movies: List<Movie>) {
+ LazyColumn {
+ items(movies, key = { movie -> movie.id }) { movie ->
+ MovieOverview(movie)
+ }
+ }
+ }
+}
+
+private object LifecycleSnippet6 {
// Marking the type as stable to favor skipping and smart recompositions.
@Stable
interface UiState<T : Result<T>> {
@@ -119,7 +130,7 @@
}
@ExperimentalMaterialApi
-private object LifecycleSnippet6 {
+private object LifecycleSnippet7 {
@Composable
fun MyScreen(
state: UiState<List<Movie>>,
@@ -149,7 +160,7 @@
}
@ExperimentalMaterialApi
-private object LifecycleSnippet7 {
+private object LifecycleSnippet8 {
@Composable
fun MoviesScreen(scaffoldState: ScaffoldState = rememberScaffoldState()) {
@@ -174,7 +185,7 @@
}
}
-private object LifecycleSnippet8 {
+private object LifecycleSnippet9 {
@Composable
fun LandingScreen(onTimeout: () -> Unit) {
@@ -193,7 +204,7 @@
}
}
-private object LifecycleSnippet9 {
+private object LifecycleSnippet10 {
@Composable
fun BackHandler(backDispatcher: OnBackPressedDispatcher, onBack: () -> Unit) {
@@ -223,7 +234,7 @@
}
}
-private object LifecycleSnippet10 {
+private object LifecycleSnippet11 {
@Composable
fun BackHandler(
backDispatcher: OnBackPressedDispatcher,
@@ -253,7 +264,7 @@
}
}
-private object LifecycleSnippet11 {
+private object LifecycleSnippet12 {
@Composable
fun loadNetworkImage(
url: String,
@@ -279,7 +290,7 @@
}
}
-private object LifecycleSnippet12 {
+private object LifecycleSnippet13 {
@Composable
fun TodoList(highPriorityKeywords: List<String> = listOf("Review", "Unblock", "Compose")) {
@@ -301,7 +312,7 @@
}
}
-private object LifecycleSnippet13 {
+private object LifecycleSnippet14 {
@Composable
fun BackHandler(backDispatcher: OnBackPressedDispatcher, onBack: () -> Unit) {
// START - DO NOT COPY IN CODE SNIPPET
diff --git a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/resources/Resources.kt b/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/resources/Resources.kt
new file mode 100644
index 0000000..75e7d481
--- /dev/null
+++ b/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/resources/Resources.kt
@@ -0,0 +1,211 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Ignore lint warnings in documentation snippets
+@file:Suppress(
+ "unused", "UNUSED_PARAMETER", "UNUSED_VARIABLE", "UNUSED_ANONYMOUS_PARAMETER",
+ "RedundantSuspendModifier", "CascadeIf", "ClassName", "RemoveExplicitTypeArguments",
+ "ControlFlowWithEmptyBody", "PropertyName"
+)
+
+package androidx.compose.integration.docs.resources
+
+import androidx.compose.foundation.layout.padding
+import androidx.compose.material.Divider
+import androidx.compose.material.Icon
+import androidx.compose.material.MaterialTheme
+import androidx.compose.material.Text
+import androidx.compose.material.Typography
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.rounded.Menu
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.ui.ExperimentalComposeUiApi
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.res.animatedVectorResource
+import androidx.compose.ui.res.colorResource
+import androidx.compose.ui.res.dimensionResource
+import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.text.font.Font
+import androidx.compose.ui.text.font.FontFamily
+import androidx.compose.ui.text.font.FontWeight
+
+/**
+ * This file lets DevRel track changes to snippets present in
+ * https://developer.android.com/jetpack/compose/resources
+ *
+ * No action required if it's modified.
+ */
+
+@Composable
+private fun ResourcesSnippet1() {
+ // In the res/values/strings.xml file
+ // <string name="compose">Jetpack Compose</string>
+
+ // In your Compose code
+ Text(
+ text = stringResource(R.string.compose)
+ )
+}
+
+@Composable
+private fun ResourcesSnippet2() {
+ // In the res/values/strings.xml file
+ // <string name="congratulate">Happy %1$s %2$d</string>
+
+ // In your Compose code
+ Text(
+ text = stringResource(R.string.congratulate, "New Year", 2021)
+ )
+}
+
+@Composable
+private fun ResourcesSnippet3(quantity: Int) {
+ // In the res/strings.xml file
+ // <plurals name="runtime_format">
+ // <item quantity="one">%1$d minute</item>
+ // <item quantity="other">%1$d minutes</item>
+ // </plurals>
+
+ // In your Compose code
+ val resources = LocalContext.current.resources
+
+ Text(
+ text = resources.getQuantityString(
+ R.plurals.runtime_format, quantity, quantity
+ )
+ )
+}
+
+@Composable
+private fun ResourcesSnippet4() {
+ // In the res/values/dimens.xml file
+ // <dimen name="padding_small">8dp</dimen>
+
+ // In your Compose code
+ val smallPadding = dimensionResource(R.dimen.padding_small)
+ Text(
+ text = "...",
+ modifier = Modifier.padding(smallPadding)
+ )
+}
+
+@Composable
+private fun ResourcesSnippet5() {
+ // In the res/colors.xml file
+ // <color name="colorGrey">#757575</color>
+
+ // In your Compose code
+ Divider(color = colorResource(R.color.colorGrey))
+}
+
+@Composable
+private fun ResourcesSnippet6() {
+ // Files in res/drawable folders. For example:
+ // - res/drawable-nodpi/ic_logo.xml
+ // - res/drawable-xxhdpi/ic_logo.png
+
+ // In your Compose code
+ Icon(
+ painter = painterResource(id = R.drawable.ic_logo),
+ contentDescription = null // decorative element
+ )
+}
+
+@OptIn(ExperimentalComposeUiApi::class)
+@Composable
+private fun ResourcesSnippet7() {
+ // Files in res/drawable folders. For example:
+ // - res/drawable/animated_vector.xml
+
+ // In your Compose code
+ val image = animatedVectorResource(id = R.drawable.animated_vector)
+ val atEnd by remember { mutableStateOf(false) }
+ Icon(
+ painter = image.painterFor(atEnd = atEnd),
+ contentDescription = null // decorative element
+ )
+}
+
+@Composable
+private fun ResourcesSnippet8() {
+ Icon(Icons.Rounded.Menu, contentDescription = "Localized description")
+}
+
+private object ResourcesSnippet9 {
+ // Define and load the fonts of the app
+ private val light = Font(R.font.raleway_light, FontWeight.W300)
+ private val regular = Font(R.font.raleway_regular, FontWeight.W400)
+ private val medium = Font(R.font.raleway_medium, FontWeight.W500)
+ private val semibold = Font(R.font.raleway_semibold, FontWeight.W600)
+
+ // Create a font family to use in TextStyles
+ private val craneFontFamily = FontFamily(light, regular, medium, semibold)
+
+ // Use the font family to define a custom typography
+ val craneTypography = Typography(
+ defaultFontFamily = craneFontFamily,
+ /* ... */
+ )
+
+ // Pass the typography to a MaterialTheme that will create a theme using
+ // that typography in the part of the UI hierarchy where this theme is used
+ @Composable
+ fun CraneTheme(content: @Composable () -> Unit) {
+ MaterialTheme(typography = craneTypography) {
+ content()
+ }
+ }
+}
+
+/*
+Fakes needed for snippets to build:
+ */
+
+private object R {
+ object color {
+ const val colorGrey = 1
+ }
+
+ object dimen {
+ const val padding_small = 1
+ }
+
+ object drawable {
+ const val ic_logo = 1
+ const val animated_vector = 1
+ }
+
+ object font {
+ const val raleway_light = 1
+ const val raleway_regular = 2
+ const val raleway_medium = 3
+ const val raleway_semibold = 4
+ }
+
+ object plurals {
+ const val runtime_format = 1
+ }
+
+ object string {
+ const val compose = 1
+ const val congratulate = 2
+ }
+}
diff --git a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/testing/CheatSheet.kt b/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/testing/CheatSheet.kt
index b0ac892..7912d72 100644
--- a/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/testing/CheatSheet.kt
+++ b/compose/integration-tests/docs-snippets/src/main/java/androidx/compose/integration/docs/testing/CheatSheet.kt
@@ -28,6 +28,7 @@
import androidx.compose.ui.layout.FirstBaseline
import androidx.compose.ui.semantics.ProgressBarRangeInfo
import androidx.compose.ui.semantics.SemanticsActions
+import androidx.compose.ui.test.ExperimentalTestApi
import androidx.compose.ui.test.assert
import androidx.compose.ui.test.assertAll
import androidx.compose.ui.test.assertAny
@@ -225,6 +226,7 @@
)
// MATCHERS
+ @OptIn(ExperimentalTestApi::class)
composeTestRule.onNode(
hasClickAction() and
hasNoClickAction() and
diff --git a/compose/integration-tests/macrobenchmark-target/src/main/AndroidManifest.xml b/compose/integration-tests/macrobenchmark-target/src/main/AndroidManifest.xml
index baca019..532a2a4 100644
--- a/compose/integration-tests/macrobenchmark-target/src/main/AndroidManifest.xml
+++ b/compose/integration-tests/macrobenchmark-target/src/main/AndroidManifest.xml
@@ -25,6 +25,10 @@
android:icon="@mipmap/ic_launcher"
tools:ignore="GoogleAppIndexingWarning">
+ <!-- Profileable to enable macrobenchmark profiling -->
+ <!--suppress AndroidElementNotAllowed -->
+ <profileable android:shell="true"/>
+
<!--
Activities need to be exported so the macrobenchmark can discover them
under the new package visibility changes for Android 11.
diff --git a/compose/material/material/samples/src/main/java/androidx/compose/material/samples/TextFieldSamples.kt b/compose/material/material/samples/src/main/java/androidx/compose/material/samples/TextFieldSamples.kt
index 51f0eb4..0596f18 100644
--- a/compose/material/material/samples/src/main/java/androidx/compose/material/samples/TextFieldSamples.kt
+++ b/compose/material/material/samples/src/main/java/androidx/compose/material/samples/TextFieldSamples.kt
@@ -35,9 +35,7 @@
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
-import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.Modifier
-import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.text.TextRange
import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.text.input.KeyboardType
@@ -184,11 +182,10 @@
)
}
-@OptIn(ExperimentalComposeUiApi::class)
@Sampled
@Composable
fun TextFieldWithHideKeyboardOnImeAction() {
- val keyboardController = LocalSoftwareKeyboardController.current
+ // TODO(b/1583763): re-add software keyboard controller when replacement API is added
var text by rememberSaveable { mutableStateOf("") }
TextField(
value = text,
@@ -197,7 +194,6 @@
keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done),
keyboardActions = KeyboardActions(
>
- keyboardController?.hideSoftwareKeyboard()
// do something here
}
)
diff --git a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/textfield/TextFieldTest.kt b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/textfield/TextFieldTest.kt
index 48dfe90..0cdf030 100644
--- a/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/textfield/TextFieldTest.kt
+++ b/compose/material/material/src/androidAndroidTest/kotlin/androidx/compose/material/textfield/TextFieldTest.kt
@@ -63,10 +63,8 @@
import androidx.compose.ui.layout.onGloballyPositioned
import androidx.compose.ui.layout.positionInRoot
import androidx.compose.ui.node.Ref
-import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.platform.LocalTextInputService
import androidx.compose.ui.platform.LocalView
-import androidx.compose.ui.platform.SoftwareKeyboardController
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.semantics.SemanticsProperties
import androidx.compose.ui.test.ExperimentalTestApi
@@ -296,40 +294,7 @@
rule.runOnIdle { assertThat(hostView.isSoftwareKeyboardShown).isFalse() }
}
- @ExperimentalComposeUiApi
- @Test
- fun testTextField_clickingOnTextAfterDismissingKeyboard_showsKeyboard() {
- val (focusRequester, parentFocusRequester) = FocusRequester.createRefs()
- var softwareKeyboardController: SoftwareKeyboardController? = null
- lateinit var hostView: View
- rule.setMaterialContent {
- hostView = LocalView.current
- softwareKeyboardController = LocalSoftwareKeyboardController.current
- Box {
- TextField(
- modifier = Modifier
- .focusRequester(parentFocusRequester)
- .focusModifier()
- .focusRequester(focusRequester)
- .testTag(TextfieldTag),
- value = "input",
- >
- label = {}
- )
- }
- }
-
- // Shows keyboard when the text field is focused.
- rule.runOnIdle { focusRequester.requestFocus() }
- rule.runOnIdle { assertThat(hostView.isSoftwareKeyboardShown).isTrue() }
-
- // Hide keyboard.
- rule.runOnIdle { softwareKeyboardController?.hideSoftwareKeyboard() }
-
- // Clicking on the text field shows the keyboard.
- rule.onNodeWithTag(TextfieldTag).performClick()
- rule.runOnIdle { assertThat(hostView.isSoftwareKeyboardShown).isTrue() }
- }
+ // TODO(b/1583763): re-add keyboard hide/show test when replacement API is added
@Test
fun testTextField_labelPosition_initial_singleLine() {
diff --git a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/Scaffold.kt b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/Scaffold.kt
index 2819fda..9b4b9e4 100644
--- a/compose/material/material/src/commonMain/kotlin/androidx/compose/material/Scaffold.kt
+++ b/compose/material/material/src/commonMain/kotlin/androidx/compose/material/Scaffold.kt
@@ -16,13 +16,18 @@
package androidx.compose.material
+import androidx.compose.animation.core.Animatable
+import androidx.compose.animation.core.AnimationVector1D
+import androidx.compose.animation.core.TweenSpec
import androidx.compose.foundation.layout.ColumnScope
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.runtime.Composable
import androidx.compose.runtime.Immutable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.Stable
+import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
+import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.staticCompositionLocalOf
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
@@ -34,6 +39,7 @@
import androidx.compose.ui.util.fastForEach
import androidx.compose.ui.util.fastMap
import androidx.compose.ui.util.fastMaxBy
+import kotlinx.coroutines.launch
/**
* State for [Scaffold] composable component.
@@ -221,6 +227,9 @@
fab: @Composable () -> Unit,
bottomBar: @Composable () -> Unit
) {
+ val fabAnimatableState =
+ remember { mutableStateOf<Animatable<Float, AnimationVector1D>?>(null) }
+ val scope = rememberCoroutineScope()
SubcomposeLayout { constraints ->
val layoutWidth = constraints.maxWidth
val layoutHeight = constraints.maxHeight
@@ -262,10 +271,24 @@
0
}
+ val floatOffset = fabLeftOffset.toFloat()
+
+ val fabAnimatable = fabAnimatableState.value ?: Animatable(floatOffset).also {
+ fabAnimatableState.value = it
+ }
+ if (fabAnimatable.targetValue != floatOffset) {
+ scope.launch {
+ fabAnimatable.animateTo(
+ targetValue = floatOffset,
+ animationSpec = FabPositionAnimationSpec
+ )
+ }
+ }
+
val fabPlacement = if (fabWidth != 0 && fabHeight != 0) {
FabPlacement(
isDocked = isFabDocked,
- left = fabLeftOffset,
+ left = fabAnimatable.value.toInt(),
width = fabWidth,
height = fabHeight
)
@@ -333,7 +356,7 @@
}
// Explicitly not using placeRelative here as `leftOffset` already accounts for RTL
fabPlaceables.fastForEach {
- it.place(fabLeftOffset, layoutHeight - fabOffsetFromBottom)
+ it.place(fabAnimatable.value.toInt(), layoutHeight - fabOffsetFromBottom)
}
}
}
@@ -366,3 +389,5 @@
private val FabSpacing = 16.dp
private enum class ScaffoldLayoutContent { TopBar, MainContent, Snackbar, Fab, BottomBar }
+
+private val FabPositionAnimationSpec = TweenSpec<Float>(durationMillis = 200)
diff --git a/compose/ui/ui-test/api/current.txt b/compose/ui/ui-test/api/current.txt
index 6e9c416..970280d 100644
--- a/compose/ui/ui-test/api/current.txt
+++ b/compose/ui/ui-test/api/current.txt
@@ -76,26 +76,26 @@
method public static androidx.compose.ui.test.SemanticsMatcher hasAnyChild(androidx.compose.ui.test.SemanticsMatcher matcher);
method public static androidx.compose.ui.test.SemanticsMatcher hasAnyDescendant(androidx.compose.ui.test.SemanticsMatcher matcher);
method public static androidx.compose.ui.test.SemanticsMatcher hasAnySibling(androidx.compose.ui.test.SemanticsMatcher matcher);
- method public static androidx.compose.ui.test.SemanticsMatcher hasBottomPosition-ioHfwGI(float bottom, optional float tolerance);
+ method @androidx.compose.ui.test.ExperimentalTestApi public static androidx.compose.ui.test.SemanticsMatcher hasBottomPosition-ioHfwGI(float bottom, optional float tolerance);
method public static androidx.compose.ui.test.SemanticsMatcher hasClickAction();
method public static androidx.compose.ui.test.SemanticsMatcher hasContentDescription(String label, optional boolean substring, optional boolean ignoreCase);
- method public static androidx.compose.ui.test.SemanticsMatcher hasHeight-ioHfwGI(float height, optional float tolerance);
- method public static androidx.compose.ui.test.SemanticsMatcher hasHeightAtLeast-ioHfwGI(float height, optional float tolerance);
+ method @androidx.compose.ui.test.ExperimentalTestApi public static androidx.compose.ui.test.SemanticsMatcher hasHeight-ioHfwGI(float height, optional float tolerance);
+ method @androidx.compose.ui.test.ExperimentalTestApi public static androidx.compose.ui.test.SemanticsMatcher hasHeightAtLeast-ioHfwGI(float height, optional float tolerance);
method public static androidx.compose.ui.test.SemanticsMatcher hasImeAction(androidx.compose.ui.text.input.ImeAction actionType);
- method public static androidx.compose.ui.test.SemanticsMatcher hasLeftPosition-ioHfwGI(float left, optional float tolerance);
+ method @androidx.compose.ui.test.ExperimentalTestApi public static androidx.compose.ui.test.SemanticsMatcher hasLeftPosition-ioHfwGI(float left, optional float tolerance);
method public static androidx.compose.ui.test.SemanticsMatcher hasNoClickAction();
method public static androidx.compose.ui.test.SemanticsMatcher hasNoScrollAction();
method public static androidx.compose.ui.test.SemanticsMatcher hasParent(androidx.compose.ui.test.SemanticsMatcher matcher);
method public static androidx.compose.ui.test.SemanticsMatcher hasProgressBarRangeInfo(androidx.compose.ui.semantics.ProgressBarRangeInfo rangeInfo);
- method public static androidx.compose.ui.test.SemanticsMatcher hasRightPosition-ioHfwGI(float right, optional float tolerance);
+ method @androidx.compose.ui.test.ExperimentalTestApi public static androidx.compose.ui.test.SemanticsMatcher hasRightPosition-ioHfwGI(float right, optional float tolerance);
method public static androidx.compose.ui.test.SemanticsMatcher hasScrollAction();
method public static androidx.compose.ui.test.SemanticsMatcher hasSetTextAction();
method public static androidx.compose.ui.test.SemanticsMatcher hasStateDescription(String value);
method public static androidx.compose.ui.test.SemanticsMatcher hasTestTag(String testTag);
method public static androidx.compose.ui.test.SemanticsMatcher hasText(String text, optional boolean substring, optional boolean ignoreCase);
- method public static androidx.compose.ui.test.SemanticsMatcher hasTopPosition-ioHfwGI(float top, optional float tolerance);
- method public static androidx.compose.ui.test.SemanticsMatcher hasWidth-ioHfwGI(float width, optional float tolerance);
- method public static androidx.compose.ui.test.SemanticsMatcher hasWidthAtLeast-ioHfwGI(float width, optional float tolerance);
+ method @androidx.compose.ui.test.ExperimentalTestApi public static androidx.compose.ui.test.SemanticsMatcher hasTopPosition-ioHfwGI(float top, optional float tolerance);
+ method @androidx.compose.ui.test.ExperimentalTestApi public static androidx.compose.ui.test.SemanticsMatcher hasWidth-ioHfwGI(float width, optional float tolerance);
+ method @androidx.compose.ui.test.ExperimentalTestApi public static androidx.compose.ui.test.SemanticsMatcher hasWidthAtLeast-ioHfwGI(float width, optional float tolerance);
method public static androidx.compose.ui.test.SemanticsMatcher isDialog();
method public static androidx.compose.ui.test.SemanticsMatcher isEnabled();
method public static androidx.compose.ui.test.SemanticsMatcher isFocusable();
diff --git a/compose/ui/ui-test/api/public_plus_experimental_current.txt b/compose/ui/ui-test/api/public_plus_experimental_current.txt
index 6e9c416..970280d 100644
--- a/compose/ui/ui-test/api/public_plus_experimental_current.txt
+++ b/compose/ui/ui-test/api/public_plus_experimental_current.txt
@@ -76,26 +76,26 @@
method public static androidx.compose.ui.test.SemanticsMatcher hasAnyChild(androidx.compose.ui.test.SemanticsMatcher matcher);
method public static androidx.compose.ui.test.SemanticsMatcher hasAnyDescendant(androidx.compose.ui.test.SemanticsMatcher matcher);
method public static androidx.compose.ui.test.SemanticsMatcher hasAnySibling(androidx.compose.ui.test.SemanticsMatcher matcher);
- method public static androidx.compose.ui.test.SemanticsMatcher hasBottomPosition-ioHfwGI(float bottom, optional float tolerance);
+ method @androidx.compose.ui.test.ExperimentalTestApi public static androidx.compose.ui.test.SemanticsMatcher hasBottomPosition-ioHfwGI(float bottom, optional float tolerance);
method public static androidx.compose.ui.test.SemanticsMatcher hasClickAction();
method public static androidx.compose.ui.test.SemanticsMatcher hasContentDescription(String label, optional boolean substring, optional boolean ignoreCase);
- method public static androidx.compose.ui.test.SemanticsMatcher hasHeight-ioHfwGI(float height, optional float tolerance);
- method public static androidx.compose.ui.test.SemanticsMatcher hasHeightAtLeast-ioHfwGI(float height, optional float tolerance);
+ method @androidx.compose.ui.test.ExperimentalTestApi public static androidx.compose.ui.test.SemanticsMatcher hasHeight-ioHfwGI(float height, optional float tolerance);
+ method @androidx.compose.ui.test.ExperimentalTestApi public static androidx.compose.ui.test.SemanticsMatcher hasHeightAtLeast-ioHfwGI(float height, optional float tolerance);
method public static androidx.compose.ui.test.SemanticsMatcher hasImeAction(androidx.compose.ui.text.input.ImeAction actionType);
- method public static androidx.compose.ui.test.SemanticsMatcher hasLeftPosition-ioHfwGI(float left, optional float tolerance);
+ method @androidx.compose.ui.test.ExperimentalTestApi public static androidx.compose.ui.test.SemanticsMatcher hasLeftPosition-ioHfwGI(float left, optional float tolerance);
method public static androidx.compose.ui.test.SemanticsMatcher hasNoClickAction();
method public static androidx.compose.ui.test.SemanticsMatcher hasNoScrollAction();
method public static androidx.compose.ui.test.SemanticsMatcher hasParent(androidx.compose.ui.test.SemanticsMatcher matcher);
method public static androidx.compose.ui.test.SemanticsMatcher hasProgressBarRangeInfo(androidx.compose.ui.semantics.ProgressBarRangeInfo rangeInfo);
- method public static androidx.compose.ui.test.SemanticsMatcher hasRightPosition-ioHfwGI(float right, optional float tolerance);
+ method @androidx.compose.ui.test.ExperimentalTestApi public static androidx.compose.ui.test.SemanticsMatcher hasRightPosition-ioHfwGI(float right, optional float tolerance);
method public static androidx.compose.ui.test.SemanticsMatcher hasScrollAction();
method public static androidx.compose.ui.test.SemanticsMatcher hasSetTextAction();
method public static androidx.compose.ui.test.SemanticsMatcher hasStateDescription(String value);
method public static androidx.compose.ui.test.SemanticsMatcher hasTestTag(String testTag);
method public static androidx.compose.ui.test.SemanticsMatcher hasText(String text, optional boolean substring, optional boolean ignoreCase);
- method public static androidx.compose.ui.test.SemanticsMatcher hasTopPosition-ioHfwGI(float top, optional float tolerance);
- method public static androidx.compose.ui.test.SemanticsMatcher hasWidth-ioHfwGI(float width, optional float tolerance);
- method public static androidx.compose.ui.test.SemanticsMatcher hasWidthAtLeast-ioHfwGI(float width, optional float tolerance);
+ method @androidx.compose.ui.test.ExperimentalTestApi public static androidx.compose.ui.test.SemanticsMatcher hasTopPosition-ioHfwGI(float top, optional float tolerance);
+ method @androidx.compose.ui.test.ExperimentalTestApi public static androidx.compose.ui.test.SemanticsMatcher hasWidth-ioHfwGI(float width, optional float tolerance);
+ method @androidx.compose.ui.test.ExperimentalTestApi public static androidx.compose.ui.test.SemanticsMatcher hasWidthAtLeast-ioHfwGI(float width, optional float tolerance);
method public static androidx.compose.ui.test.SemanticsMatcher isDialog();
method public static androidx.compose.ui.test.SemanticsMatcher isEnabled();
method public static androidx.compose.ui.test.SemanticsMatcher isFocusable();
diff --git a/compose/ui/ui-test/api/restricted_current.txt b/compose/ui/ui-test/api/restricted_current.txt
index 6e9c416..970280d 100644
--- a/compose/ui/ui-test/api/restricted_current.txt
+++ b/compose/ui/ui-test/api/restricted_current.txt
@@ -76,26 +76,26 @@
method public static androidx.compose.ui.test.SemanticsMatcher hasAnyChild(androidx.compose.ui.test.SemanticsMatcher matcher);
method public static androidx.compose.ui.test.SemanticsMatcher hasAnyDescendant(androidx.compose.ui.test.SemanticsMatcher matcher);
method public static androidx.compose.ui.test.SemanticsMatcher hasAnySibling(androidx.compose.ui.test.SemanticsMatcher matcher);
- method public static androidx.compose.ui.test.SemanticsMatcher hasBottomPosition-ioHfwGI(float bottom, optional float tolerance);
+ method @androidx.compose.ui.test.ExperimentalTestApi public static androidx.compose.ui.test.SemanticsMatcher hasBottomPosition-ioHfwGI(float bottom, optional float tolerance);
method public static androidx.compose.ui.test.SemanticsMatcher hasClickAction();
method public static androidx.compose.ui.test.SemanticsMatcher hasContentDescription(String label, optional boolean substring, optional boolean ignoreCase);
- method public static androidx.compose.ui.test.SemanticsMatcher hasHeight-ioHfwGI(float height, optional float tolerance);
- method public static androidx.compose.ui.test.SemanticsMatcher hasHeightAtLeast-ioHfwGI(float height, optional float tolerance);
+ method @androidx.compose.ui.test.ExperimentalTestApi public static androidx.compose.ui.test.SemanticsMatcher hasHeight-ioHfwGI(float height, optional float tolerance);
+ method @androidx.compose.ui.test.ExperimentalTestApi public static androidx.compose.ui.test.SemanticsMatcher hasHeightAtLeast-ioHfwGI(float height, optional float tolerance);
method public static androidx.compose.ui.test.SemanticsMatcher hasImeAction(androidx.compose.ui.text.input.ImeAction actionType);
- method public static androidx.compose.ui.test.SemanticsMatcher hasLeftPosition-ioHfwGI(float left, optional float tolerance);
+ method @androidx.compose.ui.test.ExperimentalTestApi public static androidx.compose.ui.test.SemanticsMatcher hasLeftPosition-ioHfwGI(float left, optional float tolerance);
method public static androidx.compose.ui.test.SemanticsMatcher hasNoClickAction();
method public static androidx.compose.ui.test.SemanticsMatcher hasNoScrollAction();
method public static androidx.compose.ui.test.SemanticsMatcher hasParent(androidx.compose.ui.test.SemanticsMatcher matcher);
method public static androidx.compose.ui.test.SemanticsMatcher hasProgressBarRangeInfo(androidx.compose.ui.semantics.ProgressBarRangeInfo rangeInfo);
- method public static androidx.compose.ui.test.SemanticsMatcher hasRightPosition-ioHfwGI(float right, optional float tolerance);
+ method @androidx.compose.ui.test.ExperimentalTestApi public static androidx.compose.ui.test.SemanticsMatcher hasRightPosition-ioHfwGI(float right, optional float tolerance);
method public static androidx.compose.ui.test.SemanticsMatcher hasScrollAction();
method public static androidx.compose.ui.test.SemanticsMatcher hasSetTextAction();
method public static androidx.compose.ui.test.SemanticsMatcher hasStateDescription(String value);
method public static androidx.compose.ui.test.SemanticsMatcher hasTestTag(String testTag);
method public static androidx.compose.ui.test.SemanticsMatcher hasText(String text, optional boolean substring, optional boolean ignoreCase);
- method public static androidx.compose.ui.test.SemanticsMatcher hasTopPosition-ioHfwGI(float top, optional float tolerance);
- method public static androidx.compose.ui.test.SemanticsMatcher hasWidth-ioHfwGI(float width, optional float tolerance);
- method public static androidx.compose.ui.test.SemanticsMatcher hasWidthAtLeast-ioHfwGI(float width, optional float tolerance);
+ method @androidx.compose.ui.test.ExperimentalTestApi public static androidx.compose.ui.test.SemanticsMatcher hasTopPosition-ioHfwGI(float top, optional float tolerance);
+ method @androidx.compose.ui.test.ExperimentalTestApi public static androidx.compose.ui.test.SemanticsMatcher hasWidth-ioHfwGI(float width, optional float tolerance);
+ method @androidx.compose.ui.test.ExperimentalTestApi public static androidx.compose.ui.test.SemanticsMatcher hasWidthAtLeast-ioHfwGI(float width, optional float tolerance);
method public static androidx.compose.ui.test.SemanticsMatcher isDialog();
method public static androidx.compose.ui.test.SemanticsMatcher isEnabled();
method public static androidx.compose.ui.test.SemanticsMatcher isFocusable();
diff --git a/compose/ui/ui-test/src/commonMain/kotlin/androidx/compose/ui/test/BoundsAssertions.kt b/compose/ui/ui-test/src/commonMain/kotlin/androidx/compose/ui/test/BoundsAssertions.kt
index 9b097b0..4dcbaa2 100644
--- a/compose/ui/ui-test/src/commonMain/kotlin/androidx/compose/ui/test/BoundsAssertions.kt
+++ b/compose/ui/ui-test/src/commonMain/kotlin/androidx/compose/ui/test/BoundsAssertions.kt
@@ -28,6 +28,7 @@
*
* @throws AssertionError if comparison fails.
*/
+@OptIn(ExperimentalTestApi::class)
fun SemanticsNodeInteraction.assertWidthIsEqualTo(expectedWidth: Dp): SemanticsNodeInteraction =
assert(hasWidth(expectedWidth))
@@ -36,6 +37,7 @@
*
* @throws AssertionError if comparison fails.
*/
+@OptIn(ExperimentalTestApi::class)
fun SemanticsNodeInteraction.assertHeightIsEqualTo(expectedHeight: Dp): SemanticsNodeInteraction =
assert(hasHeight(expectedHeight))
@@ -44,6 +46,7 @@
*
* @throws AssertionError if comparison fails.
*/
+@OptIn(ExperimentalTestApi::class)
fun SemanticsNodeInteraction.assertWidthIsAtLeast(expectedMinWidth: Dp): SemanticsNodeInteraction =
assert(hasWidthAtLeast(expectedMinWidth))
@@ -52,6 +55,7 @@
*
* @throws AssertionError if comparison fails.
*/
+@OptIn(ExperimentalTestApi::class)
fun SemanticsNodeInteraction.assertHeightIsAtLeast(
expectedMinHeight: Dp
): SemanticsNodeInteraction =
@@ -66,6 +70,7 @@
*
* @throws AssertionError if comparison fails.
*/
+@OptIn(ExperimentalTestApi::class)
fun SemanticsNodeInteraction.assertPositionInRootIsEqualTo(
expectedLeft: Dp,
expectedTop: Dp
@@ -80,6 +85,7 @@
*
* @throws AssertionError if comparison fails.
*/
+@OptIn(ExperimentalTestApi::class)
fun SemanticsNodeInteraction.assertTopPositionInRootIsEqualTo(
expectedTop: Dp
): SemanticsNodeInteraction =
@@ -93,6 +99,7 @@
*
* @throws AssertionError if comparison fails.
*/
+@OptIn(ExperimentalTestApi::class)
fun SemanticsNodeInteraction.assertLeftPositionInRootIsEqualTo(
expectedLeft: Dp
): SemanticsNodeInteraction =
diff --git a/compose/ui/ui-test/src/commonMain/kotlin/androidx/compose/ui/test/Filters.kt b/compose/ui/ui-test/src/commonMain/kotlin/androidx/compose/ui/test/Filters.kt
index 9397ca5..6fbec2b 100644
--- a/compose/ui/ui-test/src/commonMain/kotlin/androidx/compose/ui/test/Filters.kt
+++ b/compose/ui/ui-test/src/commonMain/kotlin/androidx/compose/ui/test/Filters.kt
@@ -316,6 +316,7 @@
* @see hasHeight
* @see hasHeightAtLeast
*/
+@ExperimentalTestApi
fun hasWidth(width: Dp, tolerance: Dp = DefaultTolerance): SemanticsMatcher =
SemanticsMatcher("width = $width ± $tolerance") { node ->
node.withDensity {
@@ -333,6 +334,7 @@
* @see hasHeight
* @see hasHeightAtLeast
*/
+@ExperimentalTestApi
fun hasWidthAtLeast(width: Dp, tolerance: Dp = DefaultTolerance): SemanticsMatcher =
SemanticsMatcher("width > $width - $tolerance") { node ->
node.withDensity {
@@ -350,6 +352,7 @@
* @see hasWidthAtLeast
* @see hasHeightAtLeast
*/
+@ExperimentalTestApi
fun hasHeight(height: Dp, tolerance: Dp = DefaultTolerance): SemanticsMatcher =
SemanticsMatcher("height = $height ± $tolerance") { node ->
node.withDensity {
@@ -367,6 +370,7 @@
* @see hasWidthAtLeast
* @see hasHeight
*/
+@ExperimentalTestApi
fun hasHeightAtLeast(height: Dp, tolerance: Dp = DefaultTolerance): SemanticsMatcher =
SemanticsMatcher("height > $height - $tolerance") { node ->
node.withDensity {
@@ -384,6 +388,7 @@
* @see hasRightPosition
* @see hasBottomPosition
*/
+@ExperimentalTestApi
fun hasLeftPosition(left: Dp, tolerance: Dp = DefaultTolerance): SemanticsMatcher =
SemanticsMatcher("left = $left ± $tolerance") { node ->
node.withDensity {
@@ -401,6 +406,7 @@
* @see hasRightPosition
* @see hasBottomPosition
*/
+@ExperimentalTestApi
fun hasTopPosition(top: Dp, tolerance: Dp = DefaultTolerance): SemanticsMatcher =
SemanticsMatcher("top = $top ± $tolerance") { node ->
node.withDensity {
@@ -418,6 +424,7 @@
* @see hasTopPosition
* @see hasBottomPosition
*/
+@ExperimentalTestApi
fun hasRightPosition(right: Dp, tolerance: Dp = DefaultTolerance): SemanticsMatcher =
SemanticsMatcher("right = $right ± $tolerance") { node ->
node.withDensity {
@@ -435,6 +442,7 @@
* @see hasTopPosition
* @see hasRightPosition
*/
+@ExperimentalTestApi
fun hasBottomPosition(bottom: Dp, tolerance: Dp = DefaultTolerance): SemanticsMatcher =
SemanticsMatcher("bottom = $bottom ± $tolerance") { node ->
node.withDensity {
diff --git a/compose/ui/ui/api/current.txt b/compose/ui/ui/api/current.txt
index 6774672..e83c164 100644
--- a/compose/ui/ui/api/current.txt
+++ b/compose/ui/ui/api/current.txt
@@ -2038,17 +2038,6 @@
public final class JvmActuals_jvmKt {
}
- @androidx.compose.ui.ExperimentalComposeUiApi public final class LocalSoftwareKeyboardController {
- method @androidx.compose.runtime.Composable public androidx.compose.ui.platform.SoftwareKeyboardController? getCurrent();
- property @androidx.compose.runtime.Composable public final androidx.compose.ui.platform.SoftwareKeyboardController? current;
- field public static final androidx.compose.ui.platform.LocalSoftwareKeyboardController INSTANCE;
- }
-
- @androidx.compose.ui.ExperimentalComposeUiApi public interface SoftwareKeyboardController {
- method @androidx.compose.ui.ExperimentalComposeUiApi public void hideSoftwareKeyboard();
- method @androidx.compose.ui.ExperimentalComposeUiApi public void showSoftwareKeyboard();
- }
-
public final class TestTagKt {
method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier testTag(androidx.compose.ui.Modifier, String tag);
}
diff --git a/compose/ui/ui/api/public_plus_experimental_current.txt b/compose/ui/ui/api/public_plus_experimental_current.txt
index 6774672..e83c164 100644
--- a/compose/ui/ui/api/public_plus_experimental_current.txt
+++ b/compose/ui/ui/api/public_plus_experimental_current.txt
@@ -2038,17 +2038,6 @@
public final class JvmActuals_jvmKt {
}
- @androidx.compose.ui.ExperimentalComposeUiApi public final class LocalSoftwareKeyboardController {
- method @androidx.compose.runtime.Composable public androidx.compose.ui.platform.SoftwareKeyboardController? getCurrent();
- property @androidx.compose.runtime.Composable public final androidx.compose.ui.platform.SoftwareKeyboardController? current;
- field public static final androidx.compose.ui.platform.LocalSoftwareKeyboardController INSTANCE;
- }
-
- @androidx.compose.ui.ExperimentalComposeUiApi public interface SoftwareKeyboardController {
- method @androidx.compose.ui.ExperimentalComposeUiApi public void hideSoftwareKeyboard();
- method @androidx.compose.ui.ExperimentalComposeUiApi public void showSoftwareKeyboard();
- }
-
public final class TestTagKt {
method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier testTag(androidx.compose.ui.Modifier, String tag);
}
diff --git a/compose/ui/ui/api/restricted_current.txt b/compose/ui/ui/api/restricted_current.txt
index d98fe21..e908409 100644
--- a/compose/ui/ui/api/restricted_current.txt
+++ b/compose/ui/ui/api/restricted_current.txt
@@ -2068,17 +2068,6 @@
public final class JvmActuals_jvmKt {
}
- @androidx.compose.ui.ExperimentalComposeUiApi public final class LocalSoftwareKeyboardController {
- method @androidx.compose.runtime.Composable public androidx.compose.ui.platform.SoftwareKeyboardController? getCurrent();
- property @androidx.compose.runtime.Composable public final androidx.compose.ui.platform.SoftwareKeyboardController? current;
- field public static final androidx.compose.ui.platform.LocalSoftwareKeyboardController INSTANCE;
- }
-
- @androidx.compose.ui.ExperimentalComposeUiApi public interface SoftwareKeyboardController {
- method @androidx.compose.ui.ExperimentalComposeUiApi public void hideSoftwareKeyboard();
- method @androidx.compose.ui.ExperimentalComposeUiApi public void showSoftwareKeyboard();
- }
-
public final class TestTagKt {
method @androidx.compose.runtime.Stable public static androidx.compose.ui.Modifier testTag(androidx.compose.ui.Modifier, String tag);
}
diff --git a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/SoftwareKeyboardControllerDemo.kt b/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/SoftwareKeyboardControllerDemo.kt
deleted file mode 100644
index c754915..0000000
--- a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/SoftwareKeyboardControllerDemo.kt
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package androidx.compose.foundation.demos.text
-
-import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.text.BasicTextField
-import androidx.compose.material.Button
-import androidx.compose.material.Text
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.getValue
-import androidx.compose.runtime.mutableStateOf
-import androidx.compose.runtime.remember
-import androidx.compose.runtime.setValue
-import androidx.compose.ui.ExperimentalComposeUiApi
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.focus.FocusRequester
-import androidx.compose.ui.focus.focusRequester
-import androidx.compose.ui.platform.LocalSoftwareKeyboardController
-import androidx.compose.ui.text.TextStyle
-import androidx.compose.ui.unit.sp
-
-@OptIn(ExperimentalComposeUiApi::class)
-@Composable
-fun SoftwareKeyboardControllerDemo() {
- Column {
- var isHidden by remember { mutableStateOf(true) }
-
- val focusRequester = FocusRequester()
-
- val text = if (isHidden) {
- "Click on TextField to show keyboard, even after hiding"
- } else {
- "Keyboard shown (input ignored)"
- }
-
- BasicTextField(
- value = text,
- >
- textStyle = TextStyle.Default.copy(fontSize = 18.sp),
- modifier = Modifier.focusRequester(focusRequester)
- )
-
- val keyboardController = LocalSoftwareKeyboardController.current
- Button(
- >
- isHidden = true
- keyboardController?.hideSoftwareKeyboard()
- },
- enabled = !isHidden
- ) {
- Text("hideSoftwareKeyboard()")
- }
- Button(
- >
- isHidden = false
- focusRequester.requestFocus()
- keyboardController?.showSoftwareKeyboard()
- },
- enabled = isHidden
- ) {
- Text("showSoftwareKeyboard()")
- }
- }
-}
diff --git a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/UiDemos.kt b/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/UiDemos.kt
index 645f31e..1aef1e0 100644
--- a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/UiDemos.kt
+++ b/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/UiDemos.kt
@@ -16,7 +16,6 @@
package androidx.compose.ui.demos
-import androidx.compose.foundation.demos.text.SoftwareKeyboardControllerDemo
import androidx.compose.ui.demos.autofill.ExplicitAutofillTypesDemo
import androidx.compose.ui.demos.focus.FocusableDemo
import androidx.compose.ui.demos.focus.ReuseFocusRequesterDemo
@@ -133,7 +132,6 @@
ComposableDemo("Popup") { PopupDemo() },
GraphicsDemos,
GestureDemos,
- ComposableDemo("Views interoperability") { ViewInteropDemo() },
- ComposableDemo("Software Keyboard Controller") { SoftwareKeyboardControllerDemo() }
+ ComposableDemo("Views interoperability") { ViewInteropDemo() }
)
)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/LocalSoftwareKeyboardControllerTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/LocalSoftwareKeyboardControllerTest.kt
deleted file mode 100644
index dc06d32..0000000
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/LocalSoftwareKeyboardControllerTest.kt
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package androidx.compose.ui.platform
-
-import androidx.compose.foundation.text.BasicTextField
-import androidx.compose.runtime.CompositionLocalProvider
-import androidx.compose.runtime.SideEffect
-import androidx.compose.ui.ExperimentalComposeUiApi
-import androidx.compose.ui.test.junit4.createComposeRule
-import androidx.compose.ui.test.onNodeWithText
-import androidx.compose.ui.test.performClick
-import androidx.compose.ui.text.input.PlatformTextInputService
-import androidx.compose.ui.text.input.TextInputService
-import androidx.test.ext.junit.runners.AndroidJUnit4
-import androidx.test.filters.SmallTest
-import com.nhaarman.mockitokotlin2.inOrder
-import com.nhaarman.mockitokotlin2.mock
-import com.nhaarman.mockitokotlin2.times
-import com.nhaarman.mockitokotlin2.verify
-import org.junit.Rule
-import org.junit.Test
-import org.junit.runner.RunWith
-
-@ExperimentalComposeUiApi
-@SmallTest
-@RunWith(AndroidJUnit4::class)
-class LocalSoftwareKeyboardControllerTest {
-
- @get:Rule
- val rule = createComposeRule()
-
- @ExperimentalComposeUiApi
- @Test
- fun localSoftwareKeybardController_delegatesTo_textInputService() {
- val platformTextInputService = mock<PlatformTextInputService>()
- val textInputService = TextInputService(platformTextInputService)
-
- rule.setContent {
- CompositionLocalProvider(
- LocalTextInputService provides textInputService
- ) {
- val controller = LocalSoftwareKeyboardController.current
- SideEffect {
- controller?.hideSoftwareKeyboard()
- }
- }
- }
-
- rule.runOnIdle {
- verify(platformTextInputService, times(1))
- .hideSoftwareKeyboard()
- }
- }
-
- @Test
- fun localSoftwareKeybardController_whenFocused_delegatesToPlatformService() {
- val platformTextInputService = mock<PlatformTextInputService>()
- val textInputService = TextInputService(platformTextInputService)
- var controller: SoftwareKeyboardController? = null
-
- rule.setContent {
- CompositionLocalProvider(
- LocalTextInputService provides textInputService
- ) {
- controller = LocalSoftwareKeyboardController.current
- BasicTextField("string", {})
- }
- }
-
- rule.onNodeWithText("string").performClick()
-
- rule.runOnIdle {
- controller?.hideSoftwareKeyboard()
- controller?.showSoftwareKeyboard()
- inOrder(platformTextInputService) {
- verify(platformTextInputService).showSoftwareKeyboard() // focus
- verify(platformTextInputService).hideSoftwareKeyboard() // explicit call
- verify(platformTextInputService).showSoftwareKeyboard() // explicit call
- }
- }
- }
-
- @Test
- fun showHideSoftKeyboard_dontCrash_beforeSession() {
- var keyboardController: SoftwareKeyboardController? = null
- rule.setContent {
- keyboardController = LocalSoftwareKeyboardController.current
- }
- keyboardController!!.showSoftwareKeyboard()
- keyboardController!!.hideSoftwareKeyboard()
- }
-}
\ No newline at end of file
diff --git a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/text/input/TextInputServiceAndroid.android.kt b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/text/input/TextInputServiceAndroid.android.kt
index a101327b..cc37b15 100644
--- a/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/text/input/TextInputServiceAndroid.android.kt
+++ b/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/text/input/TextInputServiceAndroid.android.kt
@@ -51,18 +51,10 @@
private var ic: RecordingInputConnection? = null
private var focusedRect: android.graphics.Rect? = null
- private var _imm: InputMethodManager? = null
/**
* The editable buffer used for BaseInputConnection.
*/
- private val imm: InputMethodManager
- get() {
- if (_imm == null) {
- _imm = view.context.getSystemService(Context.INPUT_METHOD_SERVICE) as
- InputMethodManager
- }
- return _imm!!
- }
+ private lateinit var imm: InputMethodManager
/**
* A channel that is used to send ShowKeyboard/HideKeyboard commands. Send 'true' for
@@ -123,6 +115,7 @@
onEditCommand: (List<EditCommand>) -> Unit,
onImeActionPerformed: (ImeAction) -> Unit
) {
+ imm = view.context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
editorHasFocus = true
state = value
this.imeOptions = imeOptions
@@ -160,7 +153,6 @@
@OptIn(FlowPreview::class)
suspend fun keyboardVisibilityEventLoop() {
- // TODO(b/180071033): Allow for more IMPLICIT flag to be passed.
for (showKeyboard in showKeyboardChannel) {
// Even though we are using a conflated channel, and the producers and consumers are
// on the same thread, there is a possibility that we have a stale value in the channel
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/platform/LocalSoftwareKeyboardController.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/platform/LocalSoftwareKeyboardController.kt
deleted file mode 100644
index 312783f..0000000
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/platform/LocalSoftwareKeyboardController.kt
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package androidx.compose.ui.platform
-
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.remember
-import androidx.compose.ui.ExperimentalComposeUiApi
-import androidx.compose.ui.text.input.TextInputService
-
-@ExperimentalComposeUiApi
-public object LocalSoftwareKeyboardController {
-
- /**
- * Return a [SoftwareKeyboardController] that delegates to the current [LocalTextInputService].
- *
- * Returns null if there is no [LocalTextInputService] and the software keyboard cannot be
- * controlled.
- */
- @ExperimentalComposeUiApi
- public val current: SoftwareKeyboardController?
- @Composable get() {
- val textInputService = LocalTextInputService.current ?: return null
- return remember(textInputService) {
- DelegatingSotwareKeyboardController(textInputService)
- }
- }
-}
-
-@ExperimentalComposeUiApi
-private class DelegatingSotwareKeyboardController(
- val textInputService: TextInputService?
-) : SoftwareKeyboardController {
- override fun showSoftwareKeyboard() {
- textInputService?.showSoftwareKeyboard()
- }
-
- override fun hideSoftwareKeyboard() {
- textInputService?.hideSoftwareKeyboard()
- }
-}
\ No newline at end of file
diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/platform/SoftwareKeyboardController.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/platform/SoftwareKeyboardController.kt
deleted file mode 100644
index c5a6a19..0000000
--- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/platform/SoftwareKeyboardController.kt
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package androidx.compose.ui.platform
-
-import androidx.compose.ui.ExperimentalComposeUiApi
-
-/**
- * Provide software keyboard control.
- */
-@ExperimentalComposeUiApi
-interface SoftwareKeyboardController {
- /**
- * Request that the system show a software keyboard.
- *
- * This request is best effort, if the system is can currently show a software keyboard it
- * will be shown. However, there is no guarantee that the system will be able to show a
- * software keyboard. If the system cannot show a software keyboard currently,
- * this call will be silently ignored.
- *
- * The software keyboard will never show if there is no composable that will accept text input,
- * such as a [TextField][androidx.compose.foundation.text.BasicTextField] when it is focused.
- * You may find it useful to ensure focus when calling this function.
- *
- * ```
- * >
- * /* optional */ focusRequester.requestFocus() // request focus on a TextField
- * softwareKeyboardController.requestShowSoftwareKeyboard()
- * }
- * ```
- *
- * You do not need to call this function unless you also call [hideSoftwareKeyboard], as the
- * keyboard is automatically shown and hidden by focus events in the BasicTextField.
- *
- * Calling this function is considered a side-effect and should not be called directly from
- * recomposition.
- */
- fun showSoftwareKeyboard()
-
- /**
- * Hide the software keyboard.
- *
- * This request is best effort, if the system cannot hide the software keyboard this call
- * will silently be ignored.
- *
- * Calling this function is considered a side-effect and should not be called directly from
- * recomposition.
- */
- fun hideSoftwareKeyboard()
-}
\ No newline at end of file
diff --git a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/DesktopSvgResources.desktop.kt b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/DesktopSvgResources.desktop.kt
new file mode 100644
index 0000000..004efea
--- /dev/null
+++ b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/DesktopSvgResources.desktop.kt
@@ -0,0 +1,119 @@
+/*
+ * Copyright 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.compose.ui.res
+
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.remember
+import androidx.compose.ui.geometry.Size
+import androidx.compose.ui.graphics.ColorFilter
+import androidx.compose.ui.graphics.drawscope.DrawScope
+import androidx.compose.ui.graphics.drawscope.drawIntoCanvas
+import androidx.compose.ui.graphics.nativeCanvas
+import androidx.compose.ui.graphics.painter.Painter
+import androidx.compose.ui.graphics.vector.DrawCache
+import androidx.compose.ui.platform.LocalDensity
+import androidx.compose.ui.unit.Density
+import androidx.compose.ui.unit.IntSize
+import org.jetbrains.skija.Data
+import org.jetbrains.skija.Point
+import org.jetbrains.skija.svg.DOM
+import java.io.InputStream
+import kotlin.math.ceil
+
+/**
+ * Synchronously load an SVG image stored in resources for the application.
+ *
+ * @param resourcePath path to the file in the resources folder
+ * @return the decoded vector image associated with the resource
+ */
+@Composable
+fun svgResource(resourcePath: String): Painter {
+ val density = LocalDensity.current
+ return remember(resourcePath, density) {
+ openResourceStream(resourcePath).use {
+ loadSvgResource(it, density)
+ }
+ }
+}
+
+/**
+ * Synchronously load an SVG image from some [inputStream].
+ *
+ * In contrast to [svgResource] this function isn't [Composable]
+ *
+ * @param inputStream input stream to load an SVG resource. All bytes will be read from this stream,
+ * but stream will not be closed after this method.
+ * @return the decoded SVG image associated with the resource
+ */
+fun loadSvgResource(inputStream: InputStream, density: Density): Painter {
+ val data = Data.makeFromBytes(inputStream.readAllBytes())
+ return SVGPainter(DOM(data), density)
+}
+
+private class SVGPainter(
+ private val dom: DOM,
+ private val density: Density
+) : Painter() {
+ private val defaultSizePx: Size = run {
+ val containerSize = dom.containerSize
+ if (containerSize.x == 0f && containerSize.y == 0f) {
+ Size.Unspecified
+ } else {
+ Size(containerSize.x, containerSize.y)
+ }
+ }
+
+ override val intrinsicSize: Size get() = defaultSizePx * density.density
+
+ private var previousDrawSize: Size = Size.Unspecified
+ private var alpha: Float = 1.0f
+ private var colorFilter: ColorFilter? = null
+
+ // with caching into bitmap FPS is 3x-4x higher (tested with idea-logo.svg with 30x30 icons)
+ private val drawCache = DrawCache()
+
+ override fun applyAlpha(alpha: Float): Boolean {
+ this.alpha = alpha
+ return true
+ }
+
+ override fun applyColorFilter(colorFilter: ColorFilter?): Boolean {
+ this.colorFilter = colorFilter
+ return true
+ }
+
+ override fun DrawScope.onDraw() {
+ if (previousDrawSize != size) {
+ drawCache.drawCachedImage(
+ IntSize(ceil(size.width).toInt(), ceil(size.height).toInt()),
+ density = this,
+ layoutDirection,
+ ) {
+ drawSvg(size)
+ }
+ }
+
+ drawCache.drawInto(this, alpha, colorFilter)
+ }
+
+ private fun DrawScope.drawSvg(size: Size) {
+ drawIntoCanvas {
+ dom.containerSize = Point(size.width, size.height)
+ dom.render(it.nativeCanvas)
+ }
+ }
+}
\ No newline at end of file
diff --git a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/DesktopXmlVectorResources.desktop.kt b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/DesktopXmlVectorResources.desktop.kt
index a1a9faa..0034ecf 100644
--- a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/DesktopXmlVectorResources.desktop.kt
+++ b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/DesktopXmlVectorResources.desktop.kt
@@ -37,20 +37,14 @@
* SVG files can be converted to XML with Android Studio or with third party tools
* (search "svg to xml" in Google)
*
- * Note: This API is transient and will be likely removed for encouraging async resource loading.
- *
* @param resourcePath path to the file in the resources folder
* @return the decoded vector image associated with the resource
*/
@Composable
fun vectorXmlResource(resourcePath: String): ImageVector {
val inputSource = remember(resourcePath) {
- val classLoader = Thread.currentThread().contextClassLoader
object : InputSource() {
- override fun getByteStream() =
- requireNotNull(classLoader.getResourceAsStream(resourcePath)) {
- "resource $resourcePath not found"
- }
+ override fun getByteStream() = openResourceStream(resourcePath)
}
}
@@ -69,8 +63,6 @@
* SVG files can be converted to XML with Android Studio or with third party tools
* (search "svg to xml" in Google)
*
- * Note: This API is transient and will be likely removed for encouraging async resource loading.
- *
* Example of usage:
*
* val inputSource = remember(url) {
diff --git a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/ImageResources.desktop.kt b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/ImageResources.desktop.kt
index 7cc8516..52ec6c3 100644
--- a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/ImageResources.desktop.kt
+++ b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/ImageResources.desktop.kt
@@ -24,8 +24,6 @@
/**
* Synchronously load an image file stored in resources for the application.
*
- * Note: This API is transient and will be likely removed for encouraging async resource loading.
- *
* @param path path to the image file
* @return the decoded image data associated with the resource
*/
diff --git a/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/Resources.desktop.kt b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/Resources.desktop.kt
new file mode 100644
index 0000000..65fad99
--- /dev/null
+++ b/compose/ui/ui/src/desktopMain/kotlin/androidx/compose/ui/res/Resources.desktop.kt
@@ -0,0 +1,26 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.compose.ui.res
+
+import java.io.InputStream
+
+internal fun openResourceStream(resourcePath: String): InputStream {
+ val classLoader = Thread.currentThread().contextClassLoader
+ return requireNotNull(classLoader.getResourceAsStream(resourcePath)) {
+ "Resource $resourcePath not found"
+ }
+}
\ No newline at end of file
diff --git a/core/core-ktx/api/1.5.0-beta02.txt b/core/core-ktx/api/1.5.0-beta02.txt
new file mode 100644
index 0000000..ea0fa5f
--- /dev/null
+++ b/core/core-ktx/api/1.5.0-beta02.txt
@@ -0,0 +1,606 @@
+// Signature format: 4.0
+package androidx.core.animation {
+
+ public final class AnimatorKt {
+ method public static inline android.animation.Animator.AnimatorListener addListener(android.animation.Animator, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onEnd, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onStart, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onCancel, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onRepeat);
+ method @RequiresApi(19) public static inline android.animation.Animator.AnimatorPauseListener addPauseListener(android.animation.Animator, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onResume, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onPause);
+ method public static inline android.animation.Animator.AnimatorListener doOnCancel(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
+ method public static inline android.animation.Animator.AnimatorListener doOnEnd(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
+ method @RequiresApi(19) public static inline android.animation.Animator.AnimatorPauseListener doOnPause(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
+ method public static inline android.animation.Animator.AnimatorListener doOnRepeat(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
+ method @RequiresApi(19) public static inline android.animation.Animator.AnimatorPauseListener doOnResume(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
+ method public static inline android.animation.Animator.AnimatorListener doOnStart(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
+ }
+
+}
+
+package androidx.core.content {
+
+ public final class ContentValuesKt {
+ method public static android.content.ContentValues contentValuesOf(kotlin.Pair<java.lang.String,?>... pairs);
+ }
+
+ public final class ContextKt {
+ method public static inline <reified T> T! getSystemService(android.content.Context);
+ method public static inline void withStyledAttributes(android.content.Context, optional android.util.AttributeSet? set, int[] attrs, optional @AttrRes int defStyleAttr, optional @StyleRes int defStyleRes, kotlin.jvm.functions.Function1<? super android.content.res.TypedArray,kotlin.Unit> block);
+ method public static inline void withStyledAttributes(android.content.Context, @StyleRes int resourceId, int[] attrs, kotlin.jvm.functions.Function1<? super android.content.res.TypedArray,kotlin.Unit> block);
+ }
+
+ public final class SharedPreferencesKt {
+ method public static inline void edit(android.content.SharedPreferences, optional boolean commit, kotlin.jvm.functions.Function1<? super android.content.SharedPreferences.Editor,kotlin.Unit> action);
+ }
+
+}
+
+package androidx.core.content.res {
+
+ public final class TypedArrayKt {
+ method public static boolean getBooleanOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method @ColorInt public static int getColorOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static android.content.res.ColorStateList getColorStateListOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static float getDimensionOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method @Dimension public static int getDimensionPixelOffsetOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method @Dimension public static int getDimensionPixelSizeOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static android.graphics.drawable.Drawable getDrawableOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static float getFloatOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method @RequiresApi(26) public static android.graphics.Typeface getFontOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static int getIntOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static int getIntegerOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method @AnyRes public static int getResourceIdOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static String getStringOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static CharSequence![] getTextArrayOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static CharSequence getTextOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static inline <R> R! use(android.content.res.TypedArray, kotlin.jvm.functions.Function1<? super android.content.res.TypedArray,? extends R> block);
+ }
+
+}
+
+package androidx.core.database {
+
+ public final class CursorKt {
+ method public static inline byte[]? getBlobOrNull(android.database.Cursor, int index);
+ method public static inline Double? getDoubleOrNull(android.database.Cursor, int index);
+ method public static inline Float? getFloatOrNull(android.database.Cursor, int index);
+ method public static inline Integer? getIntOrNull(android.database.Cursor, int index);
+ method public static inline Long? getLongOrNull(android.database.Cursor, int index);
+ method public static inline Short? getShortOrNull(android.database.Cursor, int index);
+ method public static inline String? getStringOrNull(android.database.Cursor, int index);
+ }
+
+}
+
+package androidx.core.database.sqlite {
+
+ public final class SQLiteDatabaseKt {
+ method public static inline <T> T! transaction(android.database.sqlite.SQLiteDatabase, optional boolean exclusive, kotlin.jvm.functions.Function1<? super android.database.sqlite.SQLiteDatabase,? extends T> body);
+ }
+
+}
+
+package androidx.core.graphics {
+
+ public final class BitmapKt {
+ method public static inline android.graphics.Bitmap applyCanvas(android.graphics.Bitmap, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline operator boolean contains(android.graphics.Bitmap, android.graphics.Point p);
+ method public static inline operator boolean contains(android.graphics.Bitmap, android.graphics.PointF p);
+ method public static inline android.graphics.Bitmap createBitmap(int width, int height, optional android.graphics.Bitmap.Config config);
+ method @RequiresApi(26) public static inline android.graphics.Bitmap createBitmap(int width, int height, optional android.graphics.Bitmap.Config config, optional boolean hasAlpha, optional android.graphics.ColorSpace colorSpace);
+ method public static inline operator int get(android.graphics.Bitmap, int x, int y);
+ method public static inline android.graphics.Bitmap scale(android.graphics.Bitmap, int width, int height, optional boolean filter);
+ method public static inline operator void set(android.graphics.Bitmap, int x, int y, @ColorInt int color);
+ }
+
+ public final class CanvasKt {
+ method public static inline void withClip(android.graphics.Canvas, android.graphics.Rect clipRect, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withClip(android.graphics.Canvas, android.graphics.RectF clipRect, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withClip(android.graphics.Canvas, int left, int top, int right, int bottom, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withClip(android.graphics.Canvas, float left, float top, float right, float bottom, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withClip(android.graphics.Canvas, android.graphics.Path clipPath, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withMatrix(android.graphics.Canvas, optional android.graphics.Matrix matrix, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withRotation(android.graphics.Canvas, optional float degrees, optional float pivotX, optional float pivotY, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withSave(android.graphics.Canvas, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withScale(android.graphics.Canvas, optional float x, optional float y, optional float pivotX, optional float pivotY, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withSkew(android.graphics.Canvas, optional float x, optional float y, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withTranslation(android.graphics.Canvas, optional float x, optional float y, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ }
+
+ public final class ColorKt {
+ method @RequiresApi(26) public static inline operator float component1(android.graphics.Color);
+ method public static inline operator int component1(@ColorInt int);
+ method @RequiresApi(26) public static inline operator float component1(@ColorLong long);
+ method @RequiresApi(26) public static inline operator float component2(android.graphics.Color);
+ method public static inline operator int component2(@ColorInt int);
+ method @RequiresApi(26) public static inline operator float component2(@ColorLong long);
+ method @RequiresApi(26) public static inline operator float component3(android.graphics.Color);
+ method public static inline operator int component3(@ColorInt int);
+ method @RequiresApi(26) public static inline operator float component3(@ColorLong long);
+ method @RequiresApi(26) public static inline operator float component4(android.graphics.Color);
+ method public static inline operator int component4(@ColorInt int);
+ method @RequiresApi(26) public static inline operator float component4(@ColorLong long);
+ method @ColorLong @RequiresApi(26) public static inline infix long convertTo(@ColorInt int, android.graphics.ColorSpace.Named colorSpace);
+ method @ColorLong @RequiresApi(26) public static inline infix long convertTo(@ColorInt int, android.graphics.ColorSpace colorSpace);
+ method @ColorLong @RequiresApi(26) public static inline infix long convertTo(@ColorLong long, android.graphics.ColorSpace.Named colorSpace);
+ method @ColorLong @RequiresApi(26) public static inline infix long convertTo(@ColorLong long, android.graphics.ColorSpace colorSpace);
+ method @RequiresApi(26) public static inline infix android.graphics.Color convertTo(android.graphics.Color, android.graphics.ColorSpace.Named colorSpace);
+ method @RequiresApi(26) public static inline infix android.graphics.Color convertTo(android.graphics.Color, android.graphics.ColorSpace colorSpace);
+ method public static inline int getAlpha(int);
+ method @RequiresApi(26) public static inline float getAlpha(long);
+ method public static inline int getBlue(int);
+ method @RequiresApi(26) public static inline float getBlue(long);
+ method @RequiresApi(26) public static inline android.graphics.ColorSpace getColorSpace(long);
+ method public static inline int getGreen(int);
+ method @RequiresApi(26) public static inline float getGreen(long);
+ method @RequiresApi(26) public static inline float getLuminance(int);
+ method @RequiresApi(26) public static inline float getLuminance(long);
+ method public static inline int getRed(int);
+ method @RequiresApi(26) public static inline float getRed(long);
+ method @RequiresApi(26) public static inline boolean isSrgb(long);
+ method @RequiresApi(26) public static inline boolean isWideGamut(long);
+ method @RequiresApi(26) public static operator android.graphics.Color plus(android.graphics.Color, android.graphics.Color c);
+ method @RequiresApi(26) public static inline android.graphics.Color toColor(@ColorInt int);
+ method @RequiresApi(26) public static inline android.graphics.Color toColor(@ColorLong long);
+ method @ColorInt @RequiresApi(26) public static inline int toColorInt(@ColorLong long);
+ method @ColorInt public static inline int toColorInt(String);
+ method @ColorLong @RequiresApi(26) public static inline long toColorLong(@ColorInt int);
+ }
+
+ public final class ImageDecoderKt {
+ method @RequiresApi(28) public static inline android.graphics.Bitmap decodeBitmap(android.graphics.ImageDecoder.Source, kotlin.jvm.functions.Function3<? super android.graphics.ImageDecoder,? super android.graphics.ImageDecoder.ImageInfo,? super android.graphics.ImageDecoder.Source,kotlin.Unit> action);
+ method @RequiresApi(28) public static inline android.graphics.drawable.Drawable decodeDrawable(android.graphics.ImageDecoder.Source, kotlin.jvm.functions.Function3<? super android.graphics.ImageDecoder,? super android.graphics.ImageDecoder.ImageInfo,? super android.graphics.ImageDecoder.Source,kotlin.Unit> action);
+ }
+
+ public final class MatrixKt {
+ method public static android.graphics.Matrix rotationMatrix(float degrees, optional float px, optional float py);
+ method public static android.graphics.Matrix scaleMatrix(optional float sx, optional float sy);
+ method public static inline operator android.graphics.Matrix times(android.graphics.Matrix, android.graphics.Matrix m);
+ method public static android.graphics.Matrix translationMatrix(optional float tx, optional float ty);
+ method public static inline float[] values(android.graphics.Matrix);
+ }
+
+ public final class PaintKt {
+ method public static inline boolean setBlendMode(android.graphics.Paint, androidx.core.graphics.BlendModeCompat? blendModeCompat);
+ }
+
+ public final class PathKt {
+ method @RequiresApi(19) public static inline infix android.graphics.Path and(android.graphics.Path, android.graphics.Path p);
+ method @RequiresApi(26) public static Iterable<androidx.core.graphics.PathSegment> flatten(android.graphics.Path, optional float error);
+ method @RequiresApi(19) public static inline operator android.graphics.Path minus(android.graphics.Path, android.graphics.Path p);
+ method @RequiresApi(19) public static inline infix android.graphics.Path or(android.graphics.Path, android.graphics.Path p);
+ method @RequiresApi(19) public static inline operator android.graphics.Path plus(android.graphics.Path, android.graphics.Path p);
+ method @RequiresApi(19) public static inline infix android.graphics.Path xor(android.graphics.Path, android.graphics.Path p);
+ }
+
+ public final class PictureKt {
+ method public static inline android.graphics.Picture record(android.graphics.Picture, int width, int height, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ }
+
+ public final class PointKt {
+ method public static inline operator int component1(android.graphics.Point);
+ method public static inline operator float component1(android.graphics.PointF);
+ method public static inline operator int component2(android.graphics.Point);
+ method public static inline operator float component2(android.graphics.PointF);
+ method public static inline operator android.graphics.Point minus(android.graphics.Point, android.graphics.Point p);
+ method public static inline operator android.graphics.PointF minus(android.graphics.PointF, android.graphics.PointF p);
+ method public static inline operator android.graphics.Point minus(android.graphics.Point, int xy);
+ method public static inline operator android.graphics.PointF minus(android.graphics.PointF, float xy);
+ method public static inline operator android.graphics.Point plus(android.graphics.Point, android.graphics.Point p);
+ method public static inline operator android.graphics.PointF plus(android.graphics.PointF, android.graphics.PointF p);
+ method public static inline operator android.graphics.Point plus(android.graphics.Point, int xy);
+ method public static inline operator android.graphics.PointF plus(android.graphics.PointF, float xy);
+ method public static inline android.graphics.Point toPoint(android.graphics.PointF);
+ method public static inline android.graphics.PointF toPointF(android.graphics.Point);
+ method public static inline operator android.graphics.Point unaryMinus(android.graphics.Point);
+ method public static inline operator android.graphics.PointF unaryMinus(android.graphics.PointF);
+ }
+
+ public final class PorterDuffKt {
+ method public static inline android.graphics.PorterDuffColorFilter toColorFilter(android.graphics.PorterDuff.Mode, int color);
+ method public static inline android.graphics.PorterDuffXfermode toXfermode(android.graphics.PorterDuff.Mode);
+ }
+
+ public final class RectKt {
+ method public static inline infix android.graphics.Rect and(android.graphics.Rect, android.graphics.Rect r);
+ method public static inline infix android.graphics.RectF and(android.graphics.RectF, android.graphics.RectF r);
+ method public static inline operator int component1(android.graphics.Rect);
+ method public static inline operator float component1(android.graphics.RectF);
+ method public static inline operator int component2(android.graphics.Rect);
+ method public static inline operator float component2(android.graphics.RectF);
+ method public static inline operator int component3(android.graphics.Rect);
+ method public static inline operator float component3(android.graphics.RectF);
+ method public static inline operator int component4(android.graphics.Rect);
+ method public static inline operator float component4(android.graphics.RectF);
+ method public static inline operator boolean contains(android.graphics.Rect, android.graphics.Point p);
+ method public static inline operator boolean contains(android.graphics.RectF, android.graphics.PointF p);
+ method public static inline operator android.graphics.Region minus(android.graphics.Rect, android.graphics.Rect r);
+ method public static inline operator android.graphics.Region minus(android.graphics.RectF, android.graphics.RectF r);
+ method public static inline operator android.graphics.Rect minus(android.graphics.Rect, int xy);
+ method public static inline operator android.graphics.RectF minus(android.graphics.RectF, float xy);
+ method public static inline operator android.graphics.Rect minus(android.graphics.Rect, android.graphics.Point xy);
+ method public static inline operator android.graphics.RectF minus(android.graphics.RectF, android.graphics.PointF xy);
+ method public static inline infix android.graphics.Rect or(android.graphics.Rect, android.graphics.Rect r);
+ method public static inline infix android.graphics.RectF or(android.graphics.RectF, android.graphics.RectF r);
+ method public static inline operator android.graphics.Rect plus(android.graphics.Rect, android.graphics.Rect r);
+ method public static inline operator android.graphics.RectF plus(android.graphics.RectF, android.graphics.RectF r);
+ method public static inline operator android.graphics.Rect plus(android.graphics.Rect, int xy);
+ method public static inline operator android.graphics.RectF plus(android.graphics.RectF, float xy);
+ method public static inline operator android.graphics.Rect plus(android.graphics.Rect, android.graphics.Point xy);
+ method public static inline operator android.graphics.RectF plus(android.graphics.RectF, android.graphics.PointF xy);
+ method public static inline operator android.graphics.Rect times(android.graphics.Rect, int factor);
+ method public static inline operator android.graphics.RectF times(android.graphics.RectF, int factor);
+ method public static inline operator android.graphics.RectF times(android.graphics.RectF, float factor);
+ method public static inline android.graphics.Rect toRect(android.graphics.RectF);
+ method public static inline android.graphics.RectF toRectF(android.graphics.Rect);
+ method public static inline android.graphics.Region toRegion(android.graphics.Rect);
+ method public static inline android.graphics.Region toRegion(android.graphics.RectF);
+ method public static inline android.graphics.RectF transform(android.graphics.RectF, android.graphics.Matrix m);
+ method public static inline infix android.graphics.Region xor(android.graphics.Rect, android.graphics.Rect r);
+ method public static inline infix android.graphics.Region xor(android.graphics.RectF, android.graphics.RectF r);
+ }
+
+ public final class RegionKt {
+ method public static inline infix android.graphics.Region and(android.graphics.Region, android.graphics.Rect r);
+ method public static inline infix android.graphics.Region and(android.graphics.Region, android.graphics.Region r);
+ method public static inline operator boolean contains(android.graphics.Region, android.graphics.Point p);
+ method public static inline void forEach(android.graphics.Region, kotlin.jvm.functions.Function1<? super android.graphics.Rect,kotlin.Unit> action);
+ method public static operator java.util.Iterator<android.graphics.Rect> iterator(android.graphics.Region);
+ method public static inline operator android.graphics.Region minus(android.graphics.Region, android.graphics.Rect r);
+ method public static inline operator android.graphics.Region minus(android.graphics.Region, android.graphics.Region r);
+ method public static inline operator android.graphics.Region not(android.graphics.Region);
+ method public static inline infix android.graphics.Region or(android.graphics.Region, android.graphics.Rect r);
+ method public static inline infix android.graphics.Region or(android.graphics.Region, android.graphics.Region r);
+ method public static inline operator android.graphics.Region plus(android.graphics.Region, android.graphics.Rect r);
+ method public static inline operator android.graphics.Region plus(android.graphics.Region, android.graphics.Region r);
+ method public static inline operator android.graphics.Region unaryMinus(android.graphics.Region);
+ method public static inline infix android.graphics.Region xor(android.graphics.Region, android.graphics.Rect r);
+ method public static inline infix android.graphics.Region xor(android.graphics.Region, android.graphics.Region r);
+ }
+
+ public final class ShaderKt {
+ method public static inline void transform(android.graphics.Shader, kotlin.jvm.functions.Function1<? super android.graphics.Matrix,kotlin.Unit> block);
+ }
+
+}
+
+package androidx.core.graphics.drawable {
+
+ public final class BitmapDrawableKt {
+ method public static inline android.graphics.drawable.BitmapDrawable toDrawable(android.graphics.Bitmap, android.content.res.Resources resources);
+ }
+
+ public final class ColorDrawableKt {
+ method public static inline android.graphics.drawable.ColorDrawable toDrawable(@ColorInt int);
+ method @RequiresApi(26) public static inline android.graphics.drawable.ColorDrawable toDrawable(android.graphics.Color);
+ }
+
+ public final class DrawableKt {
+ method public static android.graphics.Bitmap toBitmap(android.graphics.drawable.Drawable, optional @Px int width, optional @Px int height, optional android.graphics.Bitmap.Config? config);
+ method public static void updateBounds(android.graphics.drawable.Drawable, optional @Px int left, optional @Px int top, optional @Px int right, optional @Px int bottom);
+ }
+
+ public final class IconKt {
+ method @RequiresApi(26) public static inline android.graphics.drawable.Icon toAdaptiveIcon(android.graphics.Bitmap);
+ method @RequiresApi(26) public static inline android.graphics.drawable.Icon toIcon(android.graphics.Bitmap);
+ method @RequiresApi(26) public static inline android.graphics.drawable.Icon toIcon(android.net.Uri);
+ method @RequiresApi(26) public static inline android.graphics.drawable.Icon toIcon(byte[]);
+ }
+
+}
+
+package androidx.core.location {
+
+ public final class LocationKt {
+ method public static inline operator double component1(android.location.Location);
+ method public static inline operator double component2(android.location.Location);
+ }
+
+}
+
+package androidx.core.net {
+
+ public final class UriKt {
+ method public static java.io.File toFile(android.net.Uri);
+ method public static inline android.net.Uri toUri(String);
+ method public static inline android.net.Uri toUri(java.io.File);
+ }
+
+}
+
+package androidx.core.os {
+
+ public final class BundleKt {
+ method public static android.os.Bundle bundleOf(kotlin.Pair<java.lang.String,?>... pairs);
+ }
+
+ public final class HandlerKt {
+ method public static inline Runnable postAtTime(android.os.Handler, long uptimeMillis, optional Object? token, kotlin.jvm.functions.Function0<kotlin.Unit> action);
+ method public static inline Runnable postDelayed(android.os.Handler, long delayInMillis, optional Object? token, kotlin.jvm.functions.Function0<kotlin.Unit> action);
+ }
+
+ public final class PersistableBundleKt {
+ method @RequiresApi(21) public static android.os.PersistableBundle persistableBundleOf(kotlin.Pair<java.lang.String,?>... pairs);
+ }
+
+ public final class TraceKt {
+ method @Deprecated public static inline <T> T! trace(String sectionName, kotlin.jvm.functions.Function0<? extends T> block);
+ }
+
+}
+
+package androidx.core.text {
+
+ public final class CharSequenceKt {
+ method public static inline boolean isDigitsOnly(CharSequence);
+ method public static inline int trimmedLength(CharSequence);
+ }
+
+ public final class HtmlKt {
+ method public static inline android.text.Spanned parseAsHtml(String, optional int flags, optional android.text.Html.ImageGetter? imageGetter, optional android.text.Html.TagHandler? tagHandler);
+ method public static inline String toHtml(android.text.Spanned, optional int option);
+ }
+
+ public final class LocaleKt {
+ method @RequiresApi(17) public static inline int getLayoutDirection(java.util.Locale);
+ }
+
+ public final class SpannableStringBuilderKt {
+ method public static inline android.text.SpannableStringBuilder backgroundColor(android.text.SpannableStringBuilder, @ColorInt int color, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder bold(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannedString buildSpannedString(kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder color(android.text.SpannableStringBuilder, @ColorInt int color, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder inSpans(android.text.SpannableStringBuilder, Object![] spans, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder inSpans(android.text.SpannableStringBuilder, Object span, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder italic(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder scale(android.text.SpannableStringBuilder, float proportion, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder strikeThrough(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder subscript(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder superscript(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder underline(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ }
+
+ public final class SpannableStringKt {
+ method public static inline void clearSpans(android.text.Spannable);
+ method public static inline operator void set(android.text.Spannable, int start, int end, Object span);
+ method public static inline operator void set(android.text.Spannable, kotlin.ranges.IntRange range, Object span);
+ method public static inline android.text.Spannable toSpannable(CharSequence);
+ }
+
+ public final class SpannedStringKt {
+ method public static inline <reified T> T![]! getSpans(android.text.Spanned, optional int start, optional int end);
+ method public static inline android.text.Spanned toSpanned(CharSequence);
+ }
+
+ public final class StringKt {
+ method public static inline String htmlEncode(String);
+ }
+
+}
+
+package androidx.core.transition {
+
+ public final class TransitionKt {
+ method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener addListener(android.transition.Transition, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onEnd, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onStart, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onCancel, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onResume, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onPause);
+ method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnCancel(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
+ method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnEnd(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
+ method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnPause(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
+ method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnResume(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
+ method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnStart(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
+ }
+
+}
+
+package androidx.core.util {
+
+ public final class AtomicFileKt {
+ method @RequiresApi(17) public static inline byte[] readBytes(android.util.AtomicFile);
+ method @RequiresApi(17) public static String readText(android.util.AtomicFile, optional java.nio.charset.Charset charset);
+ method @RequiresApi(17) public static inline void tryWrite(android.util.AtomicFile, kotlin.jvm.functions.Function1<? super java.io.FileOutputStream,kotlin.Unit> block);
+ method @RequiresApi(17) public static void writeBytes(android.util.AtomicFile, byte[] array);
+ method @RequiresApi(17) public static void writeText(android.util.AtomicFile, String text, optional java.nio.charset.Charset charset);
+ }
+
+ public final class HalfKt {
+ method @RequiresApi(26) public static inline android.util.Half toHalf(@HalfFloat short);
+ method @RequiresApi(26) public static inline android.util.Half toHalf(float);
+ method @RequiresApi(26) public static inline android.util.Half toHalf(double);
+ method @RequiresApi(26) public static inline android.util.Half toHalf(String);
+ }
+
+ public final class LongSparseArrayKt {
+ method @RequiresApi(16) public static inline operator <T> boolean contains(android.util.LongSparseArray<T>, long key);
+ method @RequiresApi(16) public static inline <T> boolean containsKey(android.util.LongSparseArray<T>, long key);
+ method @RequiresApi(16) public static inline <T> boolean containsValue(android.util.LongSparseArray<T>, T? value);
+ method @RequiresApi(16) public static inline <T> void forEach(android.util.LongSparseArray<T>, kotlin.jvm.functions.Function2<? super java.lang.Long,? super T,kotlin.Unit> action);
+ method @RequiresApi(16) public static inline <T> T! getOrDefault(android.util.LongSparseArray<T>, long key, T? defaultValue);
+ method @RequiresApi(16) public static inline <T> T! getOrElse(android.util.LongSparseArray<T>, long key, kotlin.jvm.functions.Function0<? extends T> defaultValue);
+ method @RequiresApi(16) public static inline <T> int getSize(android.util.LongSparseArray<T>);
+ method @RequiresApi(16) public static inline <T> boolean isEmpty(android.util.LongSparseArray<T>);
+ method @RequiresApi(16) public static inline <T> boolean isNotEmpty(android.util.LongSparseArray<T>);
+ method @RequiresApi(16) public static <T> kotlin.collections.LongIterator keyIterator(android.util.LongSparseArray<T>);
+ method @RequiresApi(16) public static operator <T> android.util.LongSparseArray<T> plus(android.util.LongSparseArray<T>, android.util.LongSparseArray<T> other);
+ method @RequiresApi(16) public static <T> void putAll(android.util.LongSparseArray<T>, android.util.LongSparseArray<T> other);
+ method @RequiresApi(16) public static <T> boolean remove(android.util.LongSparseArray<T>, long key, T? value);
+ method @RequiresApi(16) public static inline operator <T> void set(android.util.LongSparseArray<T>, long key, T? value);
+ method @RequiresApi(16) public static <T> java.util.Iterator<T> valueIterator(android.util.LongSparseArray<T>);
+ }
+
+ public final class LruCacheKt {
+ method public static inline <K, V> android.util.LruCache<K,V> lruCache(int maxSize, optional kotlin.jvm.functions.Function2<? super K,? super V,java.lang.Integer> sizeOf, optional kotlin.jvm.functions.Function1<? super K,? extends V> create, optional kotlin.jvm.functions.Function4<? super java.lang.Boolean,? super K,? super V,? super V,kotlin.Unit> onEntryRemoved);
+ }
+
+ public final class PairKt {
+ method public static inline operator <F, S> F! component1(androidx.core.util.Pair<F,S>);
+ method public static inline operator <F, S> F! component1(android.util.Pair<F,S>);
+ method public static inline operator <F, S> S! component2(androidx.core.util.Pair<F,S>);
+ method public static inline operator <F, S> S! component2(android.util.Pair<F,S>);
+ method public static inline <F, S> android.util.Pair<F,S> toAndroidPair(kotlin.Pair<? extends F,? extends S>);
+ method public static inline <F, S> androidx.core.util.Pair<F,S> toAndroidXPair(kotlin.Pair<? extends F,? extends S>);
+ method public static inline <F, S> kotlin.Pair<F,S> toKotlinPair(androidx.core.util.Pair<F,S>);
+ method public static inline <F, S> kotlin.Pair<F,S> toKotlinPair(android.util.Pair<F,S>);
+ }
+
+ public final class RangeKt {
+ method @RequiresApi(21) public static inline infix <T extends java.lang.Comparable<? super T>> android.util.Range<T> and(android.util.Range<T>, android.util.Range<T> other);
+ method @RequiresApi(21) public static inline operator <T extends java.lang.Comparable<? super T>> android.util.Range<T> plus(android.util.Range<T>, T value);
+ method @RequiresApi(21) public static inline operator <T extends java.lang.Comparable<? super T>> android.util.Range<T> plus(android.util.Range<T>, android.util.Range<T> other);
+ method @RequiresApi(21) public static inline infix <T extends java.lang.Comparable<? super T>> android.util.Range<T> rangeTo(T, T that);
+ method @RequiresApi(21) public static <T extends java.lang.Comparable<? super T>> kotlin.ranges.ClosedRange<T> toClosedRange(android.util.Range<T>);
+ method @RequiresApi(21) public static <T extends java.lang.Comparable<? super T>> android.util.Range<T> toRange(kotlin.ranges.ClosedRange<T>);
+ }
+
+ public final class SizeKt {
+ method @RequiresApi(21) public static inline operator int component1(android.util.Size);
+ method @RequiresApi(21) public static inline operator float component1(android.util.SizeF);
+ method @RequiresApi(21) public static inline operator int component2(android.util.Size);
+ method @RequiresApi(21) public static inline operator float component2(android.util.SizeF);
+ }
+
+ public final class SparseArrayKt {
+ method public static inline operator <T> boolean contains(android.util.SparseArray<T>, int key);
+ method public static inline <T> boolean containsKey(android.util.SparseArray<T>, int key);
+ method public static inline <T> boolean containsValue(android.util.SparseArray<T>, T? value);
+ method public static inline <T> void forEach(android.util.SparseArray<T>, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,kotlin.Unit> action);
+ method public static inline <T> T! getOrDefault(android.util.SparseArray<T>, int key, T? defaultValue);
+ method public static inline <T> T! getOrElse(android.util.SparseArray<T>, int key, kotlin.jvm.functions.Function0<? extends T> defaultValue);
+ method public static inline <T> int getSize(android.util.SparseArray<T>);
+ method public static inline <T> boolean isEmpty(android.util.SparseArray<T>);
+ method public static inline <T> boolean isNotEmpty(android.util.SparseArray<T>);
+ method public static <T> kotlin.collections.IntIterator keyIterator(android.util.SparseArray<T>);
+ method public static operator <T> android.util.SparseArray<T> plus(android.util.SparseArray<T>, android.util.SparseArray<T> other);
+ method public static <T> void putAll(android.util.SparseArray<T>, android.util.SparseArray<T> other);
+ method public static <T> boolean remove(android.util.SparseArray<T>, int key, T? value);
+ method public static inline operator <T> void set(android.util.SparseArray<T>, int key, T? value);
+ method public static <T> java.util.Iterator<T> valueIterator(android.util.SparseArray<T>);
+ }
+
+ public final class SparseBooleanArrayKt {
+ method public static inline operator boolean contains(android.util.SparseBooleanArray, int key);
+ method public static inline boolean containsKey(android.util.SparseBooleanArray, int key);
+ method public static inline boolean containsValue(android.util.SparseBooleanArray, boolean value);
+ method public static inline void forEach(android.util.SparseBooleanArray, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Boolean,kotlin.Unit> action);
+ method public static inline boolean getOrDefault(android.util.SparseBooleanArray, int key, boolean defaultValue);
+ method public static inline boolean getOrElse(android.util.SparseBooleanArray, int key, kotlin.jvm.functions.Function0<java.lang.Boolean> defaultValue);
+ method public static inline int getSize(android.util.SparseBooleanArray);
+ method public static inline boolean isEmpty(android.util.SparseBooleanArray);
+ method public static inline boolean isNotEmpty(android.util.SparseBooleanArray);
+ method public static kotlin.collections.IntIterator keyIterator(android.util.SparseBooleanArray);
+ method public static operator android.util.SparseBooleanArray plus(android.util.SparseBooleanArray, android.util.SparseBooleanArray other);
+ method public static void putAll(android.util.SparseBooleanArray, android.util.SparseBooleanArray other);
+ method public static boolean remove(android.util.SparseBooleanArray, int key, boolean value);
+ method public static inline operator void set(android.util.SparseBooleanArray, int key, boolean value);
+ method public static kotlin.collections.BooleanIterator valueIterator(android.util.SparseBooleanArray);
+ }
+
+ public final class SparseIntArrayKt {
+ method public static inline operator boolean contains(android.util.SparseIntArray, int key);
+ method public static inline boolean containsKey(android.util.SparseIntArray, int key);
+ method public static inline boolean containsValue(android.util.SparseIntArray, int value);
+ method public static inline void forEach(android.util.SparseIntArray, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> action);
+ method public static inline int getOrDefault(android.util.SparseIntArray, int key, int defaultValue);
+ method public static inline int getOrElse(android.util.SparseIntArray, int key, kotlin.jvm.functions.Function0<java.lang.Integer> defaultValue);
+ method public static inline int getSize(android.util.SparseIntArray);
+ method public static inline boolean isEmpty(android.util.SparseIntArray);
+ method public static inline boolean isNotEmpty(android.util.SparseIntArray);
+ method public static kotlin.collections.IntIterator keyIterator(android.util.SparseIntArray);
+ method public static operator android.util.SparseIntArray plus(android.util.SparseIntArray, android.util.SparseIntArray other);
+ method public static void putAll(android.util.SparseIntArray, android.util.SparseIntArray other);
+ method public static boolean remove(android.util.SparseIntArray, int key, int value);
+ method public static inline operator void set(android.util.SparseIntArray, int key, int value);
+ method public static kotlin.collections.IntIterator valueIterator(android.util.SparseIntArray);
+ }
+
+ public final class SparseLongArrayKt {
+ method @RequiresApi(18) public static inline operator boolean contains(android.util.SparseLongArray, int key);
+ method @RequiresApi(18) public static inline boolean containsKey(android.util.SparseLongArray, int key);
+ method @RequiresApi(18) public static inline boolean containsValue(android.util.SparseLongArray, long value);
+ method @RequiresApi(18) public static inline void forEach(android.util.SparseLongArray, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Long,kotlin.Unit> action);
+ method @RequiresApi(18) public static inline long getOrDefault(android.util.SparseLongArray, int key, long defaultValue);
+ method @RequiresApi(18) public static inline long getOrElse(android.util.SparseLongArray, int key, kotlin.jvm.functions.Function0<java.lang.Long> defaultValue);
+ method @RequiresApi(18) public static inline int getSize(android.util.SparseLongArray);
+ method @RequiresApi(18) public static inline boolean isEmpty(android.util.SparseLongArray);
+ method @RequiresApi(18) public static inline boolean isNotEmpty(android.util.SparseLongArray);
+ method @RequiresApi(18) public static kotlin.collections.IntIterator keyIterator(android.util.SparseLongArray);
+ method @RequiresApi(18) public static operator android.util.SparseLongArray plus(android.util.SparseLongArray, android.util.SparseLongArray other);
+ method @RequiresApi(18) public static void putAll(android.util.SparseLongArray, android.util.SparseLongArray other);
+ method @RequiresApi(18) public static boolean remove(android.util.SparseLongArray, int key, long value);
+ method @RequiresApi(18) public static inline operator void set(android.util.SparseLongArray, int key, long value);
+ method @RequiresApi(18) public static kotlin.collections.LongIterator valueIterator(android.util.SparseLongArray);
+ }
+
+}
+
+package androidx.core.view {
+
+ public final class MenuKt {
+ method public static operator boolean contains(android.view.Menu, android.view.MenuItem item);
+ method public static inline void forEach(android.view.Menu, kotlin.jvm.functions.Function1<? super android.view.MenuItem,kotlin.Unit> action);
+ method public static inline void forEachIndexed(android.view.Menu, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super android.view.MenuItem,kotlin.Unit> action);
+ method public static inline operator android.view.MenuItem get(android.view.Menu, int index);
+ method public static kotlin.sequences.Sequence<android.view.MenuItem> getChildren(android.view.Menu);
+ method public static inline int getSize(android.view.Menu);
+ method public static inline boolean isEmpty(android.view.Menu);
+ method public static inline boolean isNotEmpty(android.view.Menu);
+ method public static operator java.util.Iterator<android.view.MenuItem> iterator(android.view.Menu);
+ method public static inline operator void minusAssign(android.view.Menu, android.view.MenuItem item);
+ }
+
+ public final class ViewGroupKt {
+ method public static inline operator boolean contains(android.view.ViewGroup, android.view.View view);
+ method public static inline void forEach(android.view.ViewGroup, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
+ method public static inline void forEachIndexed(android.view.ViewGroup, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super android.view.View,kotlin.Unit> action);
+ method public static operator android.view.View get(android.view.ViewGroup, int index);
+ method public static kotlin.sequences.Sequence<android.view.View> getChildren(android.view.ViewGroup);
+ method public static kotlin.sequences.Sequence<android.view.View> getDescendants(android.view.ViewGroup);
+ method public static inline int getSize(android.view.ViewGroup);
+ method public static inline boolean isEmpty(android.view.ViewGroup);
+ method public static inline boolean isNotEmpty(android.view.ViewGroup);
+ method public static operator java.util.Iterator<android.view.View> iterator(android.view.ViewGroup);
+ method public static inline operator void minusAssign(android.view.ViewGroup, android.view.View view);
+ method public static inline operator void plusAssign(android.view.ViewGroup, android.view.View view);
+ method public static inline void setMargins(android.view.ViewGroup.MarginLayoutParams, @Px int size);
+ method public static inline void updateMargins(android.view.ViewGroup.MarginLayoutParams, optional @Px int left, optional @Px int top, optional @Px int right, optional @Px int bottom);
+ method @RequiresApi(17) public static inline void updateMarginsRelative(android.view.ViewGroup.MarginLayoutParams, optional @Px int start, optional @Px int top, optional @Px int end, optional @Px int bottom);
+ }
+
+ public final class ViewKt {
+ method public static inline void doOnAttach(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
+ method public static inline void doOnDetach(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
+ method public static inline void doOnLayout(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
+ method public static inline void doOnNextLayout(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
+ method public static inline androidx.core.view.OneShotPreDrawListener doOnPreDraw(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
+ method public static android.graphics.Bitmap drawToBitmap(android.view.View, optional android.graphics.Bitmap.Config config);
+ method public static kotlin.sequences.Sequence<android.view.View> getAllViews(android.view.View);
+ method public static kotlin.sequences.Sequence<android.view.ViewParent> getAncestors(android.view.View);
+ method public static inline int getMarginBottom(android.view.View);
+ method public static inline int getMarginEnd(android.view.View);
+ method public static inline int getMarginLeft(android.view.View);
+ method public static inline int getMarginRight(android.view.View);
+ method public static inline int getMarginStart(android.view.View);
+ method public static inline int getMarginTop(android.view.View);
+ method public static inline boolean isGone(android.view.View);
+ method public static inline boolean isInvisible(android.view.View);
+ method public static inline boolean isVisible(android.view.View);
+ method public static inline Runnable postDelayed(android.view.View, long delayInMillis, kotlin.jvm.functions.Function0<kotlin.Unit> action);
+ method @RequiresApi(16) public static inline Runnable postOnAnimationDelayed(android.view.View, long delayInMillis, kotlin.jvm.functions.Function0<kotlin.Unit> action);
+ method public static inline void setGone(android.view.View, boolean value);
+ method public static inline void setInvisible(android.view.View, boolean value);
+ method public static inline void setPadding(android.view.View, @Px int size);
+ method public static inline void setVisible(android.view.View, boolean value);
+ method public static inline void updateLayoutParams(android.view.View, kotlin.jvm.functions.Function1<? super android.view.ViewGroup.LayoutParams,kotlin.Unit> block);
+ method public static inline <reified T extends android.view.ViewGroup.LayoutParams> void updateLayoutParams(android.view.View, kotlin.jvm.functions.Function1<? super T,? extends kotlin.Unit> block);
+ method public static inline void updatePadding(android.view.View, optional @Px int left, optional @Px int top, optional @Px int right, optional @Px int bottom);
+ method @RequiresApi(17) public static inline void updatePaddingRelative(android.view.View, optional @Px int start, optional @Px int top, optional @Px int end, optional @Px int bottom);
+ }
+
+}
+
+package androidx.core.widget {
+
+ public final class TextViewKt {
+ method public static inline android.text.TextWatcher addTextChangedListener(android.widget.TextView, optional kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> beforeTextChanged, optional kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> onTextChanged, optional kotlin.jvm.functions.Function1<? super android.text.Editable,kotlin.Unit> afterTextChanged);
+ method public static inline android.text.TextWatcher doAfterTextChanged(android.widget.TextView, kotlin.jvm.functions.Function1<? super android.text.Editable,kotlin.Unit> action);
+ method public static inline android.text.TextWatcher doBeforeTextChanged(android.widget.TextView, kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> action);
+ method public static inline android.text.TextWatcher doOnTextChanged(android.widget.TextView, kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> action);
+ }
+
+}
+
diff --git a/core/core-ktx/api/public_plus_experimental_1.5.0-beta02.txt b/core/core-ktx/api/public_plus_experimental_1.5.0-beta02.txt
new file mode 100644
index 0000000..ea0fa5f
--- /dev/null
+++ b/core/core-ktx/api/public_plus_experimental_1.5.0-beta02.txt
@@ -0,0 +1,606 @@
+// Signature format: 4.0
+package androidx.core.animation {
+
+ public final class AnimatorKt {
+ method public static inline android.animation.Animator.AnimatorListener addListener(android.animation.Animator, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onEnd, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onStart, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onCancel, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onRepeat);
+ method @RequiresApi(19) public static inline android.animation.Animator.AnimatorPauseListener addPauseListener(android.animation.Animator, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onResume, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onPause);
+ method public static inline android.animation.Animator.AnimatorListener doOnCancel(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
+ method public static inline android.animation.Animator.AnimatorListener doOnEnd(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
+ method @RequiresApi(19) public static inline android.animation.Animator.AnimatorPauseListener doOnPause(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
+ method public static inline android.animation.Animator.AnimatorListener doOnRepeat(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
+ method @RequiresApi(19) public static inline android.animation.Animator.AnimatorPauseListener doOnResume(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
+ method public static inline android.animation.Animator.AnimatorListener doOnStart(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
+ }
+
+}
+
+package androidx.core.content {
+
+ public final class ContentValuesKt {
+ method public static android.content.ContentValues contentValuesOf(kotlin.Pair<java.lang.String,?>... pairs);
+ }
+
+ public final class ContextKt {
+ method public static inline <reified T> T! getSystemService(android.content.Context);
+ method public static inline void withStyledAttributes(android.content.Context, optional android.util.AttributeSet? set, int[] attrs, optional @AttrRes int defStyleAttr, optional @StyleRes int defStyleRes, kotlin.jvm.functions.Function1<? super android.content.res.TypedArray,kotlin.Unit> block);
+ method public static inline void withStyledAttributes(android.content.Context, @StyleRes int resourceId, int[] attrs, kotlin.jvm.functions.Function1<? super android.content.res.TypedArray,kotlin.Unit> block);
+ }
+
+ public final class SharedPreferencesKt {
+ method public static inline void edit(android.content.SharedPreferences, optional boolean commit, kotlin.jvm.functions.Function1<? super android.content.SharedPreferences.Editor,kotlin.Unit> action);
+ }
+
+}
+
+package androidx.core.content.res {
+
+ public final class TypedArrayKt {
+ method public static boolean getBooleanOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method @ColorInt public static int getColorOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static android.content.res.ColorStateList getColorStateListOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static float getDimensionOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method @Dimension public static int getDimensionPixelOffsetOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method @Dimension public static int getDimensionPixelSizeOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static android.graphics.drawable.Drawable getDrawableOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static float getFloatOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method @RequiresApi(26) public static android.graphics.Typeface getFontOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static int getIntOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static int getIntegerOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method @AnyRes public static int getResourceIdOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static String getStringOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static CharSequence![] getTextArrayOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static CharSequence getTextOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static inline <R> R! use(android.content.res.TypedArray, kotlin.jvm.functions.Function1<? super android.content.res.TypedArray,? extends R> block);
+ }
+
+}
+
+package androidx.core.database {
+
+ public final class CursorKt {
+ method public static inline byte[]? getBlobOrNull(android.database.Cursor, int index);
+ method public static inline Double? getDoubleOrNull(android.database.Cursor, int index);
+ method public static inline Float? getFloatOrNull(android.database.Cursor, int index);
+ method public static inline Integer? getIntOrNull(android.database.Cursor, int index);
+ method public static inline Long? getLongOrNull(android.database.Cursor, int index);
+ method public static inline Short? getShortOrNull(android.database.Cursor, int index);
+ method public static inline String? getStringOrNull(android.database.Cursor, int index);
+ }
+
+}
+
+package androidx.core.database.sqlite {
+
+ public final class SQLiteDatabaseKt {
+ method public static inline <T> T! transaction(android.database.sqlite.SQLiteDatabase, optional boolean exclusive, kotlin.jvm.functions.Function1<? super android.database.sqlite.SQLiteDatabase,? extends T> body);
+ }
+
+}
+
+package androidx.core.graphics {
+
+ public final class BitmapKt {
+ method public static inline android.graphics.Bitmap applyCanvas(android.graphics.Bitmap, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline operator boolean contains(android.graphics.Bitmap, android.graphics.Point p);
+ method public static inline operator boolean contains(android.graphics.Bitmap, android.graphics.PointF p);
+ method public static inline android.graphics.Bitmap createBitmap(int width, int height, optional android.graphics.Bitmap.Config config);
+ method @RequiresApi(26) public static inline android.graphics.Bitmap createBitmap(int width, int height, optional android.graphics.Bitmap.Config config, optional boolean hasAlpha, optional android.graphics.ColorSpace colorSpace);
+ method public static inline operator int get(android.graphics.Bitmap, int x, int y);
+ method public static inline android.graphics.Bitmap scale(android.graphics.Bitmap, int width, int height, optional boolean filter);
+ method public static inline operator void set(android.graphics.Bitmap, int x, int y, @ColorInt int color);
+ }
+
+ public final class CanvasKt {
+ method public static inline void withClip(android.graphics.Canvas, android.graphics.Rect clipRect, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withClip(android.graphics.Canvas, android.graphics.RectF clipRect, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withClip(android.graphics.Canvas, int left, int top, int right, int bottom, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withClip(android.graphics.Canvas, float left, float top, float right, float bottom, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withClip(android.graphics.Canvas, android.graphics.Path clipPath, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withMatrix(android.graphics.Canvas, optional android.graphics.Matrix matrix, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withRotation(android.graphics.Canvas, optional float degrees, optional float pivotX, optional float pivotY, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withSave(android.graphics.Canvas, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withScale(android.graphics.Canvas, optional float x, optional float y, optional float pivotX, optional float pivotY, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withSkew(android.graphics.Canvas, optional float x, optional float y, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withTranslation(android.graphics.Canvas, optional float x, optional float y, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ }
+
+ public final class ColorKt {
+ method @RequiresApi(26) public static inline operator float component1(android.graphics.Color);
+ method public static inline operator int component1(@ColorInt int);
+ method @RequiresApi(26) public static inline operator float component1(@ColorLong long);
+ method @RequiresApi(26) public static inline operator float component2(android.graphics.Color);
+ method public static inline operator int component2(@ColorInt int);
+ method @RequiresApi(26) public static inline operator float component2(@ColorLong long);
+ method @RequiresApi(26) public static inline operator float component3(android.graphics.Color);
+ method public static inline operator int component3(@ColorInt int);
+ method @RequiresApi(26) public static inline operator float component3(@ColorLong long);
+ method @RequiresApi(26) public static inline operator float component4(android.graphics.Color);
+ method public static inline operator int component4(@ColorInt int);
+ method @RequiresApi(26) public static inline operator float component4(@ColorLong long);
+ method @ColorLong @RequiresApi(26) public static inline infix long convertTo(@ColorInt int, android.graphics.ColorSpace.Named colorSpace);
+ method @ColorLong @RequiresApi(26) public static inline infix long convertTo(@ColorInt int, android.graphics.ColorSpace colorSpace);
+ method @ColorLong @RequiresApi(26) public static inline infix long convertTo(@ColorLong long, android.graphics.ColorSpace.Named colorSpace);
+ method @ColorLong @RequiresApi(26) public static inline infix long convertTo(@ColorLong long, android.graphics.ColorSpace colorSpace);
+ method @RequiresApi(26) public static inline infix android.graphics.Color convertTo(android.graphics.Color, android.graphics.ColorSpace.Named colorSpace);
+ method @RequiresApi(26) public static inline infix android.graphics.Color convertTo(android.graphics.Color, android.graphics.ColorSpace colorSpace);
+ method public static inline int getAlpha(int);
+ method @RequiresApi(26) public static inline float getAlpha(long);
+ method public static inline int getBlue(int);
+ method @RequiresApi(26) public static inline float getBlue(long);
+ method @RequiresApi(26) public static inline android.graphics.ColorSpace getColorSpace(long);
+ method public static inline int getGreen(int);
+ method @RequiresApi(26) public static inline float getGreen(long);
+ method @RequiresApi(26) public static inline float getLuminance(int);
+ method @RequiresApi(26) public static inline float getLuminance(long);
+ method public static inline int getRed(int);
+ method @RequiresApi(26) public static inline float getRed(long);
+ method @RequiresApi(26) public static inline boolean isSrgb(long);
+ method @RequiresApi(26) public static inline boolean isWideGamut(long);
+ method @RequiresApi(26) public static operator android.graphics.Color plus(android.graphics.Color, android.graphics.Color c);
+ method @RequiresApi(26) public static inline android.graphics.Color toColor(@ColorInt int);
+ method @RequiresApi(26) public static inline android.graphics.Color toColor(@ColorLong long);
+ method @ColorInt @RequiresApi(26) public static inline int toColorInt(@ColorLong long);
+ method @ColorInt public static inline int toColorInt(String);
+ method @ColorLong @RequiresApi(26) public static inline long toColorLong(@ColorInt int);
+ }
+
+ public final class ImageDecoderKt {
+ method @RequiresApi(28) public static inline android.graphics.Bitmap decodeBitmap(android.graphics.ImageDecoder.Source, kotlin.jvm.functions.Function3<? super android.graphics.ImageDecoder,? super android.graphics.ImageDecoder.ImageInfo,? super android.graphics.ImageDecoder.Source,kotlin.Unit> action);
+ method @RequiresApi(28) public static inline android.graphics.drawable.Drawable decodeDrawable(android.graphics.ImageDecoder.Source, kotlin.jvm.functions.Function3<? super android.graphics.ImageDecoder,? super android.graphics.ImageDecoder.ImageInfo,? super android.graphics.ImageDecoder.Source,kotlin.Unit> action);
+ }
+
+ public final class MatrixKt {
+ method public static android.graphics.Matrix rotationMatrix(float degrees, optional float px, optional float py);
+ method public static android.graphics.Matrix scaleMatrix(optional float sx, optional float sy);
+ method public static inline operator android.graphics.Matrix times(android.graphics.Matrix, android.graphics.Matrix m);
+ method public static android.graphics.Matrix translationMatrix(optional float tx, optional float ty);
+ method public static inline float[] values(android.graphics.Matrix);
+ }
+
+ public final class PaintKt {
+ method public static inline boolean setBlendMode(android.graphics.Paint, androidx.core.graphics.BlendModeCompat? blendModeCompat);
+ }
+
+ public final class PathKt {
+ method @RequiresApi(19) public static inline infix android.graphics.Path and(android.graphics.Path, android.graphics.Path p);
+ method @RequiresApi(26) public static Iterable<androidx.core.graphics.PathSegment> flatten(android.graphics.Path, optional float error);
+ method @RequiresApi(19) public static inline operator android.graphics.Path minus(android.graphics.Path, android.graphics.Path p);
+ method @RequiresApi(19) public static inline infix android.graphics.Path or(android.graphics.Path, android.graphics.Path p);
+ method @RequiresApi(19) public static inline operator android.graphics.Path plus(android.graphics.Path, android.graphics.Path p);
+ method @RequiresApi(19) public static inline infix android.graphics.Path xor(android.graphics.Path, android.graphics.Path p);
+ }
+
+ public final class PictureKt {
+ method public static inline android.graphics.Picture record(android.graphics.Picture, int width, int height, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ }
+
+ public final class PointKt {
+ method public static inline operator int component1(android.graphics.Point);
+ method public static inline operator float component1(android.graphics.PointF);
+ method public static inline operator int component2(android.graphics.Point);
+ method public static inline operator float component2(android.graphics.PointF);
+ method public static inline operator android.graphics.Point minus(android.graphics.Point, android.graphics.Point p);
+ method public static inline operator android.graphics.PointF minus(android.graphics.PointF, android.graphics.PointF p);
+ method public static inline operator android.graphics.Point minus(android.graphics.Point, int xy);
+ method public static inline operator android.graphics.PointF minus(android.graphics.PointF, float xy);
+ method public static inline operator android.graphics.Point plus(android.graphics.Point, android.graphics.Point p);
+ method public static inline operator android.graphics.PointF plus(android.graphics.PointF, android.graphics.PointF p);
+ method public static inline operator android.graphics.Point plus(android.graphics.Point, int xy);
+ method public static inline operator android.graphics.PointF plus(android.graphics.PointF, float xy);
+ method public static inline android.graphics.Point toPoint(android.graphics.PointF);
+ method public static inline android.graphics.PointF toPointF(android.graphics.Point);
+ method public static inline operator android.graphics.Point unaryMinus(android.graphics.Point);
+ method public static inline operator android.graphics.PointF unaryMinus(android.graphics.PointF);
+ }
+
+ public final class PorterDuffKt {
+ method public static inline android.graphics.PorterDuffColorFilter toColorFilter(android.graphics.PorterDuff.Mode, int color);
+ method public static inline android.graphics.PorterDuffXfermode toXfermode(android.graphics.PorterDuff.Mode);
+ }
+
+ public final class RectKt {
+ method public static inline infix android.graphics.Rect and(android.graphics.Rect, android.graphics.Rect r);
+ method public static inline infix android.graphics.RectF and(android.graphics.RectF, android.graphics.RectF r);
+ method public static inline operator int component1(android.graphics.Rect);
+ method public static inline operator float component1(android.graphics.RectF);
+ method public static inline operator int component2(android.graphics.Rect);
+ method public static inline operator float component2(android.graphics.RectF);
+ method public static inline operator int component3(android.graphics.Rect);
+ method public static inline operator float component3(android.graphics.RectF);
+ method public static inline operator int component4(android.graphics.Rect);
+ method public static inline operator float component4(android.graphics.RectF);
+ method public static inline operator boolean contains(android.graphics.Rect, android.graphics.Point p);
+ method public static inline operator boolean contains(android.graphics.RectF, android.graphics.PointF p);
+ method public static inline operator android.graphics.Region minus(android.graphics.Rect, android.graphics.Rect r);
+ method public static inline operator android.graphics.Region minus(android.graphics.RectF, android.graphics.RectF r);
+ method public static inline operator android.graphics.Rect minus(android.graphics.Rect, int xy);
+ method public static inline operator android.graphics.RectF minus(android.graphics.RectF, float xy);
+ method public static inline operator android.graphics.Rect minus(android.graphics.Rect, android.graphics.Point xy);
+ method public static inline operator android.graphics.RectF minus(android.graphics.RectF, android.graphics.PointF xy);
+ method public static inline infix android.graphics.Rect or(android.graphics.Rect, android.graphics.Rect r);
+ method public static inline infix android.graphics.RectF or(android.graphics.RectF, android.graphics.RectF r);
+ method public static inline operator android.graphics.Rect plus(android.graphics.Rect, android.graphics.Rect r);
+ method public static inline operator android.graphics.RectF plus(android.graphics.RectF, android.graphics.RectF r);
+ method public static inline operator android.graphics.Rect plus(android.graphics.Rect, int xy);
+ method public static inline operator android.graphics.RectF plus(android.graphics.RectF, float xy);
+ method public static inline operator android.graphics.Rect plus(android.graphics.Rect, android.graphics.Point xy);
+ method public static inline operator android.graphics.RectF plus(android.graphics.RectF, android.graphics.PointF xy);
+ method public static inline operator android.graphics.Rect times(android.graphics.Rect, int factor);
+ method public static inline operator android.graphics.RectF times(android.graphics.RectF, int factor);
+ method public static inline operator android.graphics.RectF times(android.graphics.RectF, float factor);
+ method public static inline android.graphics.Rect toRect(android.graphics.RectF);
+ method public static inline android.graphics.RectF toRectF(android.graphics.Rect);
+ method public static inline android.graphics.Region toRegion(android.graphics.Rect);
+ method public static inline android.graphics.Region toRegion(android.graphics.RectF);
+ method public static inline android.graphics.RectF transform(android.graphics.RectF, android.graphics.Matrix m);
+ method public static inline infix android.graphics.Region xor(android.graphics.Rect, android.graphics.Rect r);
+ method public static inline infix android.graphics.Region xor(android.graphics.RectF, android.graphics.RectF r);
+ }
+
+ public final class RegionKt {
+ method public static inline infix android.graphics.Region and(android.graphics.Region, android.graphics.Rect r);
+ method public static inline infix android.graphics.Region and(android.graphics.Region, android.graphics.Region r);
+ method public static inline operator boolean contains(android.graphics.Region, android.graphics.Point p);
+ method public static inline void forEach(android.graphics.Region, kotlin.jvm.functions.Function1<? super android.graphics.Rect,kotlin.Unit> action);
+ method public static operator java.util.Iterator<android.graphics.Rect> iterator(android.graphics.Region);
+ method public static inline operator android.graphics.Region minus(android.graphics.Region, android.graphics.Rect r);
+ method public static inline operator android.graphics.Region minus(android.graphics.Region, android.graphics.Region r);
+ method public static inline operator android.graphics.Region not(android.graphics.Region);
+ method public static inline infix android.graphics.Region or(android.graphics.Region, android.graphics.Rect r);
+ method public static inline infix android.graphics.Region or(android.graphics.Region, android.graphics.Region r);
+ method public static inline operator android.graphics.Region plus(android.graphics.Region, android.graphics.Rect r);
+ method public static inline operator android.graphics.Region plus(android.graphics.Region, android.graphics.Region r);
+ method public static inline operator android.graphics.Region unaryMinus(android.graphics.Region);
+ method public static inline infix android.graphics.Region xor(android.graphics.Region, android.graphics.Rect r);
+ method public static inline infix android.graphics.Region xor(android.graphics.Region, android.graphics.Region r);
+ }
+
+ public final class ShaderKt {
+ method public static inline void transform(android.graphics.Shader, kotlin.jvm.functions.Function1<? super android.graphics.Matrix,kotlin.Unit> block);
+ }
+
+}
+
+package androidx.core.graphics.drawable {
+
+ public final class BitmapDrawableKt {
+ method public static inline android.graphics.drawable.BitmapDrawable toDrawable(android.graphics.Bitmap, android.content.res.Resources resources);
+ }
+
+ public final class ColorDrawableKt {
+ method public static inline android.graphics.drawable.ColorDrawable toDrawable(@ColorInt int);
+ method @RequiresApi(26) public static inline android.graphics.drawable.ColorDrawable toDrawable(android.graphics.Color);
+ }
+
+ public final class DrawableKt {
+ method public static android.graphics.Bitmap toBitmap(android.graphics.drawable.Drawable, optional @Px int width, optional @Px int height, optional android.graphics.Bitmap.Config? config);
+ method public static void updateBounds(android.graphics.drawable.Drawable, optional @Px int left, optional @Px int top, optional @Px int right, optional @Px int bottom);
+ }
+
+ public final class IconKt {
+ method @RequiresApi(26) public static inline android.graphics.drawable.Icon toAdaptiveIcon(android.graphics.Bitmap);
+ method @RequiresApi(26) public static inline android.graphics.drawable.Icon toIcon(android.graphics.Bitmap);
+ method @RequiresApi(26) public static inline android.graphics.drawable.Icon toIcon(android.net.Uri);
+ method @RequiresApi(26) public static inline android.graphics.drawable.Icon toIcon(byte[]);
+ }
+
+}
+
+package androidx.core.location {
+
+ public final class LocationKt {
+ method public static inline operator double component1(android.location.Location);
+ method public static inline operator double component2(android.location.Location);
+ }
+
+}
+
+package androidx.core.net {
+
+ public final class UriKt {
+ method public static java.io.File toFile(android.net.Uri);
+ method public static inline android.net.Uri toUri(String);
+ method public static inline android.net.Uri toUri(java.io.File);
+ }
+
+}
+
+package androidx.core.os {
+
+ public final class BundleKt {
+ method public static android.os.Bundle bundleOf(kotlin.Pair<java.lang.String,?>... pairs);
+ }
+
+ public final class HandlerKt {
+ method public static inline Runnable postAtTime(android.os.Handler, long uptimeMillis, optional Object? token, kotlin.jvm.functions.Function0<kotlin.Unit> action);
+ method public static inline Runnable postDelayed(android.os.Handler, long delayInMillis, optional Object? token, kotlin.jvm.functions.Function0<kotlin.Unit> action);
+ }
+
+ public final class PersistableBundleKt {
+ method @RequiresApi(21) public static android.os.PersistableBundle persistableBundleOf(kotlin.Pair<java.lang.String,?>... pairs);
+ }
+
+ public final class TraceKt {
+ method @Deprecated public static inline <T> T! trace(String sectionName, kotlin.jvm.functions.Function0<? extends T> block);
+ }
+
+}
+
+package androidx.core.text {
+
+ public final class CharSequenceKt {
+ method public static inline boolean isDigitsOnly(CharSequence);
+ method public static inline int trimmedLength(CharSequence);
+ }
+
+ public final class HtmlKt {
+ method public static inline android.text.Spanned parseAsHtml(String, optional int flags, optional android.text.Html.ImageGetter? imageGetter, optional android.text.Html.TagHandler? tagHandler);
+ method public static inline String toHtml(android.text.Spanned, optional int option);
+ }
+
+ public final class LocaleKt {
+ method @RequiresApi(17) public static inline int getLayoutDirection(java.util.Locale);
+ }
+
+ public final class SpannableStringBuilderKt {
+ method public static inline android.text.SpannableStringBuilder backgroundColor(android.text.SpannableStringBuilder, @ColorInt int color, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder bold(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannedString buildSpannedString(kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder color(android.text.SpannableStringBuilder, @ColorInt int color, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder inSpans(android.text.SpannableStringBuilder, Object![] spans, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder inSpans(android.text.SpannableStringBuilder, Object span, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder italic(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder scale(android.text.SpannableStringBuilder, float proportion, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder strikeThrough(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder subscript(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder superscript(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder underline(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ }
+
+ public final class SpannableStringKt {
+ method public static inline void clearSpans(android.text.Spannable);
+ method public static inline operator void set(android.text.Spannable, int start, int end, Object span);
+ method public static inline operator void set(android.text.Spannable, kotlin.ranges.IntRange range, Object span);
+ method public static inline android.text.Spannable toSpannable(CharSequence);
+ }
+
+ public final class SpannedStringKt {
+ method public static inline <reified T> T![]! getSpans(android.text.Spanned, optional int start, optional int end);
+ method public static inline android.text.Spanned toSpanned(CharSequence);
+ }
+
+ public final class StringKt {
+ method public static inline String htmlEncode(String);
+ }
+
+}
+
+package androidx.core.transition {
+
+ public final class TransitionKt {
+ method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener addListener(android.transition.Transition, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onEnd, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onStart, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onCancel, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onResume, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onPause);
+ method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnCancel(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
+ method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnEnd(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
+ method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnPause(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
+ method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnResume(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
+ method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnStart(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
+ }
+
+}
+
+package androidx.core.util {
+
+ public final class AtomicFileKt {
+ method @RequiresApi(17) public static inline byte[] readBytes(android.util.AtomicFile);
+ method @RequiresApi(17) public static String readText(android.util.AtomicFile, optional java.nio.charset.Charset charset);
+ method @RequiresApi(17) public static inline void tryWrite(android.util.AtomicFile, kotlin.jvm.functions.Function1<? super java.io.FileOutputStream,kotlin.Unit> block);
+ method @RequiresApi(17) public static void writeBytes(android.util.AtomicFile, byte[] array);
+ method @RequiresApi(17) public static void writeText(android.util.AtomicFile, String text, optional java.nio.charset.Charset charset);
+ }
+
+ public final class HalfKt {
+ method @RequiresApi(26) public static inline android.util.Half toHalf(@HalfFloat short);
+ method @RequiresApi(26) public static inline android.util.Half toHalf(float);
+ method @RequiresApi(26) public static inline android.util.Half toHalf(double);
+ method @RequiresApi(26) public static inline android.util.Half toHalf(String);
+ }
+
+ public final class LongSparseArrayKt {
+ method @RequiresApi(16) public static inline operator <T> boolean contains(android.util.LongSparseArray<T>, long key);
+ method @RequiresApi(16) public static inline <T> boolean containsKey(android.util.LongSparseArray<T>, long key);
+ method @RequiresApi(16) public static inline <T> boolean containsValue(android.util.LongSparseArray<T>, T? value);
+ method @RequiresApi(16) public static inline <T> void forEach(android.util.LongSparseArray<T>, kotlin.jvm.functions.Function2<? super java.lang.Long,? super T,kotlin.Unit> action);
+ method @RequiresApi(16) public static inline <T> T! getOrDefault(android.util.LongSparseArray<T>, long key, T? defaultValue);
+ method @RequiresApi(16) public static inline <T> T! getOrElse(android.util.LongSparseArray<T>, long key, kotlin.jvm.functions.Function0<? extends T> defaultValue);
+ method @RequiresApi(16) public static inline <T> int getSize(android.util.LongSparseArray<T>);
+ method @RequiresApi(16) public static inline <T> boolean isEmpty(android.util.LongSparseArray<T>);
+ method @RequiresApi(16) public static inline <T> boolean isNotEmpty(android.util.LongSparseArray<T>);
+ method @RequiresApi(16) public static <T> kotlin.collections.LongIterator keyIterator(android.util.LongSparseArray<T>);
+ method @RequiresApi(16) public static operator <T> android.util.LongSparseArray<T> plus(android.util.LongSparseArray<T>, android.util.LongSparseArray<T> other);
+ method @RequiresApi(16) public static <T> void putAll(android.util.LongSparseArray<T>, android.util.LongSparseArray<T> other);
+ method @RequiresApi(16) public static <T> boolean remove(android.util.LongSparseArray<T>, long key, T? value);
+ method @RequiresApi(16) public static inline operator <T> void set(android.util.LongSparseArray<T>, long key, T? value);
+ method @RequiresApi(16) public static <T> java.util.Iterator<T> valueIterator(android.util.LongSparseArray<T>);
+ }
+
+ public final class LruCacheKt {
+ method public static inline <K, V> android.util.LruCache<K,V> lruCache(int maxSize, optional kotlin.jvm.functions.Function2<? super K,? super V,java.lang.Integer> sizeOf, optional kotlin.jvm.functions.Function1<? super K,? extends V> create, optional kotlin.jvm.functions.Function4<? super java.lang.Boolean,? super K,? super V,? super V,kotlin.Unit> onEntryRemoved);
+ }
+
+ public final class PairKt {
+ method public static inline operator <F, S> F! component1(androidx.core.util.Pair<F,S>);
+ method public static inline operator <F, S> F! component1(android.util.Pair<F,S>);
+ method public static inline operator <F, S> S! component2(androidx.core.util.Pair<F,S>);
+ method public static inline operator <F, S> S! component2(android.util.Pair<F,S>);
+ method public static inline <F, S> android.util.Pair<F,S> toAndroidPair(kotlin.Pair<? extends F,? extends S>);
+ method public static inline <F, S> androidx.core.util.Pair<F,S> toAndroidXPair(kotlin.Pair<? extends F,? extends S>);
+ method public static inline <F, S> kotlin.Pair<F,S> toKotlinPair(androidx.core.util.Pair<F,S>);
+ method public static inline <F, S> kotlin.Pair<F,S> toKotlinPair(android.util.Pair<F,S>);
+ }
+
+ public final class RangeKt {
+ method @RequiresApi(21) public static inline infix <T extends java.lang.Comparable<? super T>> android.util.Range<T> and(android.util.Range<T>, android.util.Range<T> other);
+ method @RequiresApi(21) public static inline operator <T extends java.lang.Comparable<? super T>> android.util.Range<T> plus(android.util.Range<T>, T value);
+ method @RequiresApi(21) public static inline operator <T extends java.lang.Comparable<? super T>> android.util.Range<T> plus(android.util.Range<T>, android.util.Range<T> other);
+ method @RequiresApi(21) public static inline infix <T extends java.lang.Comparable<? super T>> android.util.Range<T> rangeTo(T, T that);
+ method @RequiresApi(21) public static <T extends java.lang.Comparable<? super T>> kotlin.ranges.ClosedRange<T> toClosedRange(android.util.Range<T>);
+ method @RequiresApi(21) public static <T extends java.lang.Comparable<? super T>> android.util.Range<T> toRange(kotlin.ranges.ClosedRange<T>);
+ }
+
+ public final class SizeKt {
+ method @RequiresApi(21) public static inline operator int component1(android.util.Size);
+ method @RequiresApi(21) public static inline operator float component1(android.util.SizeF);
+ method @RequiresApi(21) public static inline operator int component2(android.util.Size);
+ method @RequiresApi(21) public static inline operator float component2(android.util.SizeF);
+ }
+
+ public final class SparseArrayKt {
+ method public static inline operator <T> boolean contains(android.util.SparseArray<T>, int key);
+ method public static inline <T> boolean containsKey(android.util.SparseArray<T>, int key);
+ method public static inline <T> boolean containsValue(android.util.SparseArray<T>, T? value);
+ method public static inline <T> void forEach(android.util.SparseArray<T>, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,kotlin.Unit> action);
+ method public static inline <T> T! getOrDefault(android.util.SparseArray<T>, int key, T? defaultValue);
+ method public static inline <T> T! getOrElse(android.util.SparseArray<T>, int key, kotlin.jvm.functions.Function0<? extends T> defaultValue);
+ method public static inline <T> int getSize(android.util.SparseArray<T>);
+ method public static inline <T> boolean isEmpty(android.util.SparseArray<T>);
+ method public static inline <T> boolean isNotEmpty(android.util.SparseArray<T>);
+ method public static <T> kotlin.collections.IntIterator keyIterator(android.util.SparseArray<T>);
+ method public static operator <T> android.util.SparseArray<T> plus(android.util.SparseArray<T>, android.util.SparseArray<T> other);
+ method public static <T> void putAll(android.util.SparseArray<T>, android.util.SparseArray<T> other);
+ method public static <T> boolean remove(android.util.SparseArray<T>, int key, T? value);
+ method public static inline operator <T> void set(android.util.SparseArray<T>, int key, T? value);
+ method public static <T> java.util.Iterator<T> valueIterator(android.util.SparseArray<T>);
+ }
+
+ public final class SparseBooleanArrayKt {
+ method public static inline operator boolean contains(android.util.SparseBooleanArray, int key);
+ method public static inline boolean containsKey(android.util.SparseBooleanArray, int key);
+ method public static inline boolean containsValue(android.util.SparseBooleanArray, boolean value);
+ method public static inline void forEach(android.util.SparseBooleanArray, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Boolean,kotlin.Unit> action);
+ method public static inline boolean getOrDefault(android.util.SparseBooleanArray, int key, boolean defaultValue);
+ method public static inline boolean getOrElse(android.util.SparseBooleanArray, int key, kotlin.jvm.functions.Function0<java.lang.Boolean> defaultValue);
+ method public static inline int getSize(android.util.SparseBooleanArray);
+ method public static inline boolean isEmpty(android.util.SparseBooleanArray);
+ method public static inline boolean isNotEmpty(android.util.SparseBooleanArray);
+ method public static kotlin.collections.IntIterator keyIterator(android.util.SparseBooleanArray);
+ method public static operator android.util.SparseBooleanArray plus(android.util.SparseBooleanArray, android.util.SparseBooleanArray other);
+ method public static void putAll(android.util.SparseBooleanArray, android.util.SparseBooleanArray other);
+ method public static boolean remove(android.util.SparseBooleanArray, int key, boolean value);
+ method public static inline operator void set(android.util.SparseBooleanArray, int key, boolean value);
+ method public static kotlin.collections.BooleanIterator valueIterator(android.util.SparseBooleanArray);
+ }
+
+ public final class SparseIntArrayKt {
+ method public static inline operator boolean contains(android.util.SparseIntArray, int key);
+ method public static inline boolean containsKey(android.util.SparseIntArray, int key);
+ method public static inline boolean containsValue(android.util.SparseIntArray, int value);
+ method public static inline void forEach(android.util.SparseIntArray, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> action);
+ method public static inline int getOrDefault(android.util.SparseIntArray, int key, int defaultValue);
+ method public static inline int getOrElse(android.util.SparseIntArray, int key, kotlin.jvm.functions.Function0<java.lang.Integer> defaultValue);
+ method public static inline int getSize(android.util.SparseIntArray);
+ method public static inline boolean isEmpty(android.util.SparseIntArray);
+ method public static inline boolean isNotEmpty(android.util.SparseIntArray);
+ method public static kotlin.collections.IntIterator keyIterator(android.util.SparseIntArray);
+ method public static operator android.util.SparseIntArray plus(android.util.SparseIntArray, android.util.SparseIntArray other);
+ method public static void putAll(android.util.SparseIntArray, android.util.SparseIntArray other);
+ method public static boolean remove(android.util.SparseIntArray, int key, int value);
+ method public static inline operator void set(android.util.SparseIntArray, int key, int value);
+ method public static kotlin.collections.IntIterator valueIterator(android.util.SparseIntArray);
+ }
+
+ public final class SparseLongArrayKt {
+ method @RequiresApi(18) public static inline operator boolean contains(android.util.SparseLongArray, int key);
+ method @RequiresApi(18) public static inline boolean containsKey(android.util.SparseLongArray, int key);
+ method @RequiresApi(18) public static inline boolean containsValue(android.util.SparseLongArray, long value);
+ method @RequiresApi(18) public static inline void forEach(android.util.SparseLongArray, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Long,kotlin.Unit> action);
+ method @RequiresApi(18) public static inline long getOrDefault(android.util.SparseLongArray, int key, long defaultValue);
+ method @RequiresApi(18) public static inline long getOrElse(android.util.SparseLongArray, int key, kotlin.jvm.functions.Function0<java.lang.Long> defaultValue);
+ method @RequiresApi(18) public static inline int getSize(android.util.SparseLongArray);
+ method @RequiresApi(18) public static inline boolean isEmpty(android.util.SparseLongArray);
+ method @RequiresApi(18) public static inline boolean isNotEmpty(android.util.SparseLongArray);
+ method @RequiresApi(18) public static kotlin.collections.IntIterator keyIterator(android.util.SparseLongArray);
+ method @RequiresApi(18) public static operator android.util.SparseLongArray plus(android.util.SparseLongArray, android.util.SparseLongArray other);
+ method @RequiresApi(18) public static void putAll(android.util.SparseLongArray, android.util.SparseLongArray other);
+ method @RequiresApi(18) public static boolean remove(android.util.SparseLongArray, int key, long value);
+ method @RequiresApi(18) public static inline operator void set(android.util.SparseLongArray, int key, long value);
+ method @RequiresApi(18) public static kotlin.collections.LongIterator valueIterator(android.util.SparseLongArray);
+ }
+
+}
+
+package androidx.core.view {
+
+ public final class MenuKt {
+ method public static operator boolean contains(android.view.Menu, android.view.MenuItem item);
+ method public static inline void forEach(android.view.Menu, kotlin.jvm.functions.Function1<? super android.view.MenuItem,kotlin.Unit> action);
+ method public static inline void forEachIndexed(android.view.Menu, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super android.view.MenuItem,kotlin.Unit> action);
+ method public static inline operator android.view.MenuItem get(android.view.Menu, int index);
+ method public static kotlin.sequences.Sequence<android.view.MenuItem> getChildren(android.view.Menu);
+ method public static inline int getSize(android.view.Menu);
+ method public static inline boolean isEmpty(android.view.Menu);
+ method public static inline boolean isNotEmpty(android.view.Menu);
+ method public static operator java.util.Iterator<android.view.MenuItem> iterator(android.view.Menu);
+ method public static inline operator void minusAssign(android.view.Menu, android.view.MenuItem item);
+ }
+
+ public final class ViewGroupKt {
+ method public static inline operator boolean contains(android.view.ViewGroup, android.view.View view);
+ method public static inline void forEach(android.view.ViewGroup, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
+ method public static inline void forEachIndexed(android.view.ViewGroup, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super android.view.View,kotlin.Unit> action);
+ method public static operator android.view.View get(android.view.ViewGroup, int index);
+ method public static kotlin.sequences.Sequence<android.view.View> getChildren(android.view.ViewGroup);
+ method public static kotlin.sequences.Sequence<android.view.View> getDescendants(android.view.ViewGroup);
+ method public static inline int getSize(android.view.ViewGroup);
+ method public static inline boolean isEmpty(android.view.ViewGroup);
+ method public static inline boolean isNotEmpty(android.view.ViewGroup);
+ method public static operator java.util.Iterator<android.view.View> iterator(android.view.ViewGroup);
+ method public static inline operator void minusAssign(android.view.ViewGroup, android.view.View view);
+ method public static inline operator void plusAssign(android.view.ViewGroup, android.view.View view);
+ method public static inline void setMargins(android.view.ViewGroup.MarginLayoutParams, @Px int size);
+ method public static inline void updateMargins(android.view.ViewGroup.MarginLayoutParams, optional @Px int left, optional @Px int top, optional @Px int right, optional @Px int bottom);
+ method @RequiresApi(17) public static inline void updateMarginsRelative(android.view.ViewGroup.MarginLayoutParams, optional @Px int start, optional @Px int top, optional @Px int end, optional @Px int bottom);
+ }
+
+ public final class ViewKt {
+ method public static inline void doOnAttach(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
+ method public static inline void doOnDetach(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
+ method public static inline void doOnLayout(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
+ method public static inline void doOnNextLayout(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
+ method public static inline androidx.core.view.OneShotPreDrawListener doOnPreDraw(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
+ method public static android.graphics.Bitmap drawToBitmap(android.view.View, optional android.graphics.Bitmap.Config config);
+ method public static kotlin.sequences.Sequence<android.view.View> getAllViews(android.view.View);
+ method public static kotlin.sequences.Sequence<android.view.ViewParent> getAncestors(android.view.View);
+ method public static inline int getMarginBottom(android.view.View);
+ method public static inline int getMarginEnd(android.view.View);
+ method public static inline int getMarginLeft(android.view.View);
+ method public static inline int getMarginRight(android.view.View);
+ method public static inline int getMarginStart(android.view.View);
+ method public static inline int getMarginTop(android.view.View);
+ method public static inline boolean isGone(android.view.View);
+ method public static inline boolean isInvisible(android.view.View);
+ method public static inline boolean isVisible(android.view.View);
+ method public static inline Runnable postDelayed(android.view.View, long delayInMillis, kotlin.jvm.functions.Function0<kotlin.Unit> action);
+ method @RequiresApi(16) public static inline Runnable postOnAnimationDelayed(android.view.View, long delayInMillis, kotlin.jvm.functions.Function0<kotlin.Unit> action);
+ method public static inline void setGone(android.view.View, boolean value);
+ method public static inline void setInvisible(android.view.View, boolean value);
+ method public static inline void setPadding(android.view.View, @Px int size);
+ method public static inline void setVisible(android.view.View, boolean value);
+ method public static inline void updateLayoutParams(android.view.View, kotlin.jvm.functions.Function1<? super android.view.ViewGroup.LayoutParams,kotlin.Unit> block);
+ method public static inline <reified T extends android.view.ViewGroup.LayoutParams> void updateLayoutParams(android.view.View, kotlin.jvm.functions.Function1<? super T,? extends kotlin.Unit> block);
+ method public static inline void updatePadding(android.view.View, optional @Px int left, optional @Px int top, optional @Px int right, optional @Px int bottom);
+ method @RequiresApi(17) public static inline void updatePaddingRelative(android.view.View, optional @Px int start, optional @Px int top, optional @Px int end, optional @Px int bottom);
+ }
+
+}
+
+package androidx.core.widget {
+
+ public final class TextViewKt {
+ method public static inline android.text.TextWatcher addTextChangedListener(android.widget.TextView, optional kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> beforeTextChanged, optional kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> onTextChanged, optional kotlin.jvm.functions.Function1<? super android.text.Editable,kotlin.Unit> afterTextChanged);
+ method public static inline android.text.TextWatcher doAfterTextChanged(android.widget.TextView, kotlin.jvm.functions.Function1<? super android.text.Editable,kotlin.Unit> action);
+ method public static inline android.text.TextWatcher doBeforeTextChanged(android.widget.TextView, kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> action);
+ method public static inline android.text.TextWatcher doOnTextChanged(android.widget.TextView, kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> action);
+ }
+
+}
+
diff --git a/core/core-ktx/api/res-1.5.0-beta02.txt b/core/core-ktx/api/res-1.5.0-beta02.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/core/core-ktx/api/res-1.5.0-beta02.txt
diff --git a/core/core-ktx/api/restricted_1.5.0-beta02.txt b/core/core-ktx/api/restricted_1.5.0-beta02.txt
new file mode 100644
index 0000000..ea0fa5f
--- /dev/null
+++ b/core/core-ktx/api/restricted_1.5.0-beta02.txt
@@ -0,0 +1,606 @@
+// Signature format: 4.0
+package androidx.core.animation {
+
+ public final class AnimatorKt {
+ method public static inline android.animation.Animator.AnimatorListener addListener(android.animation.Animator, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onEnd, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onStart, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onCancel, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onRepeat);
+ method @RequiresApi(19) public static inline android.animation.Animator.AnimatorPauseListener addPauseListener(android.animation.Animator, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onResume, optional kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> onPause);
+ method public static inline android.animation.Animator.AnimatorListener doOnCancel(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
+ method public static inline android.animation.Animator.AnimatorListener doOnEnd(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
+ method @RequiresApi(19) public static inline android.animation.Animator.AnimatorPauseListener doOnPause(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
+ method public static inline android.animation.Animator.AnimatorListener doOnRepeat(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
+ method @RequiresApi(19) public static inline android.animation.Animator.AnimatorPauseListener doOnResume(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
+ method public static inline android.animation.Animator.AnimatorListener doOnStart(android.animation.Animator, kotlin.jvm.functions.Function1<? super android.animation.Animator,kotlin.Unit> action);
+ }
+
+}
+
+package androidx.core.content {
+
+ public final class ContentValuesKt {
+ method public static android.content.ContentValues contentValuesOf(kotlin.Pair<java.lang.String,?>... pairs);
+ }
+
+ public final class ContextKt {
+ method public static inline <reified T> T! getSystemService(android.content.Context);
+ method public static inline void withStyledAttributes(android.content.Context, optional android.util.AttributeSet? set, int[] attrs, optional @AttrRes int defStyleAttr, optional @StyleRes int defStyleRes, kotlin.jvm.functions.Function1<? super android.content.res.TypedArray,kotlin.Unit> block);
+ method public static inline void withStyledAttributes(android.content.Context, @StyleRes int resourceId, int[] attrs, kotlin.jvm.functions.Function1<? super android.content.res.TypedArray,kotlin.Unit> block);
+ }
+
+ public final class SharedPreferencesKt {
+ method public static inline void edit(android.content.SharedPreferences, optional boolean commit, kotlin.jvm.functions.Function1<? super android.content.SharedPreferences.Editor,kotlin.Unit> action);
+ }
+
+}
+
+package androidx.core.content.res {
+
+ public final class TypedArrayKt {
+ method public static boolean getBooleanOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method @ColorInt public static int getColorOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static android.content.res.ColorStateList getColorStateListOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static float getDimensionOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method @Dimension public static int getDimensionPixelOffsetOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method @Dimension public static int getDimensionPixelSizeOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static android.graphics.drawable.Drawable getDrawableOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static float getFloatOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method @RequiresApi(26) public static android.graphics.Typeface getFontOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static int getIntOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static int getIntegerOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method @AnyRes public static int getResourceIdOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static String getStringOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static CharSequence![] getTextArrayOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static CharSequence getTextOrThrow(android.content.res.TypedArray, @StyleableRes int index);
+ method public static inline <R> R! use(android.content.res.TypedArray, kotlin.jvm.functions.Function1<? super android.content.res.TypedArray,? extends R> block);
+ }
+
+}
+
+package androidx.core.database {
+
+ public final class CursorKt {
+ method public static inline byte[]? getBlobOrNull(android.database.Cursor, int index);
+ method public static inline Double? getDoubleOrNull(android.database.Cursor, int index);
+ method public static inline Float? getFloatOrNull(android.database.Cursor, int index);
+ method public static inline Integer? getIntOrNull(android.database.Cursor, int index);
+ method public static inline Long? getLongOrNull(android.database.Cursor, int index);
+ method public static inline Short? getShortOrNull(android.database.Cursor, int index);
+ method public static inline String? getStringOrNull(android.database.Cursor, int index);
+ }
+
+}
+
+package androidx.core.database.sqlite {
+
+ public final class SQLiteDatabaseKt {
+ method public static inline <T> T! transaction(android.database.sqlite.SQLiteDatabase, optional boolean exclusive, kotlin.jvm.functions.Function1<? super android.database.sqlite.SQLiteDatabase,? extends T> body);
+ }
+
+}
+
+package androidx.core.graphics {
+
+ public final class BitmapKt {
+ method public static inline android.graphics.Bitmap applyCanvas(android.graphics.Bitmap, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline operator boolean contains(android.graphics.Bitmap, android.graphics.Point p);
+ method public static inline operator boolean contains(android.graphics.Bitmap, android.graphics.PointF p);
+ method public static inline android.graphics.Bitmap createBitmap(int width, int height, optional android.graphics.Bitmap.Config config);
+ method @RequiresApi(26) public static inline android.graphics.Bitmap createBitmap(int width, int height, optional android.graphics.Bitmap.Config config, optional boolean hasAlpha, optional android.graphics.ColorSpace colorSpace);
+ method public static inline operator int get(android.graphics.Bitmap, int x, int y);
+ method public static inline android.graphics.Bitmap scale(android.graphics.Bitmap, int width, int height, optional boolean filter);
+ method public static inline operator void set(android.graphics.Bitmap, int x, int y, @ColorInt int color);
+ }
+
+ public final class CanvasKt {
+ method public static inline void withClip(android.graphics.Canvas, android.graphics.Rect clipRect, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withClip(android.graphics.Canvas, android.graphics.RectF clipRect, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withClip(android.graphics.Canvas, int left, int top, int right, int bottom, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withClip(android.graphics.Canvas, float left, float top, float right, float bottom, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withClip(android.graphics.Canvas, android.graphics.Path clipPath, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withMatrix(android.graphics.Canvas, optional android.graphics.Matrix matrix, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withRotation(android.graphics.Canvas, optional float degrees, optional float pivotX, optional float pivotY, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withSave(android.graphics.Canvas, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withScale(android.graphics.Canvas, optional float x, optional float y, optional float pivotX, optional float pivotY, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withSkew(android.graphics.Canvas, optional float x, optional float y, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ method public static inline void withTranslation(android.graphics.Canvas, optional float x, optional float y, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ }
+
+ public final class ColorKt {
+ method @RequiresApi(26) public static inline operator float component1(android.graphics.Color);
+ method public static inline operator int component1(@ColorInt int);
+ method @RequiresApi(26) public static inline operator float component1(@ColorLong long);
+ method @RequiresApi(26) public static inline operator float component2(android.graphics.Color);
+ method public static inline operator int component2(@ColorInt int);
+ method @RequiresApi(26) public static inline operator float component2(@ColorLong long);
+ method @RequiresApi(26) public static inline operator float component3(android.graphics.Color);
+ method public static inline operator int component3(@ColorInt int);
+ method @RequiresApi(26) public static inline operator float component3(@ColorLong long);
+ method @RequiresApi(26) public static inline operator float component4(android.graphics.Color);
+ method public static inline operator int component4(@ColorInt int);
+ method @RequiresApi(26) public static inline operator float component4(@ColorLong long);
+ method @ColorLong @RequiresApi(26) public static inline infix long convertTo(@ColorInt int, android.graphics.ColorSpace.Named colorSpace);
+ method @ColorLong @RequiresApi(26) public static inline infix long convertTo(@ColorInt int, android.graphics.ColorSpace colorSpace);
+ method @ColorLong @RequiresApi(26) public static inline infix long convertTo(@ColorLong long, android.graphics.ColorSpace.Named colorSpace);
+ method @ColorLong @RequiresApi(26) public static inline infix long convertTo(@ColorLong long, android.graphics.ColorSpace colorSpace);
+ method @RequiresApi(26) public static inline infix android.graphics.Color convertTo(android.graphics.Color, android.graphics.ColorSpace.Named colorSpace);
+ method @RequiresApi(26) public static inline infix android.graphics.Color convertTo(android.graphics.Color, android.graphics.ColorSpace colorSpace);
+ method public static inline int getAlpha(int);
+ method @RequiresApi(26) public static inline float getAlpha(long);
+ method public static inline int getBlue(int);
+ method @RequiresApi(26) public static inline float getBlue(long);
+ method @RequiresApi(26) public static inline android.graphics.ColorSpace getColorSpace(long);
+ method public static inline int getGreen(int);
+ method @RequiresApi(26) public static inline float getGreen(long);
+ method @RequiresApi(26) public static inline float getLuminance(int);
+ method @RequiresApi(26) public static inline float getLuminance(long);
+ method public static inline int getRed(int);
+ method @RequiresApi(26) public static inline float getRed(long);
+ method @RequiresApi(26) public static inline boolean isSrgb(long);
+ method @RequiresApi(26) public static inline boolean isWideGamut(long);
+ method @RequiresApi(26) public static operator android.graphics.Color plus(android.graphics.Color, android.graphics.Color c);
+ method @RequiresApi(26) public static inline android.graphics.Color toColor(@ColorInt int);
+ method @RequiresApi(26) public static inline android.graphics.Color toColor(@ColorLong long);
+ method @ColorInt @RequiresApi(26) public static inline int toColorInt(@ColorLong long);
+ method @ColorInt public static inline int toColorInt(String);
+ method @ColorLong @RequiresApi(26) public static inline long toColorLong(@ColorInt int);
+ }
+
+ public final class ImageDecoderKt {
+ method @RequiresApi(28) public static inline android.graphics.Bitmap decodeBitmap(android.graphics.ImageDecoder.Source, kotlin.jvm.functions.Function3<? super android.graphics.ImageDecoder,? super android.graphics.ImageDecoder.ImageInfo,? super android.graphics.ImageDecoder.Source,kotlin.Unit> action);
+ method @RequiresApi(28) public static inline android.graphics.drawable.Drawable decodeDrawable(android.graphics.ImageDecoder.Source, kotlin.jvm.functions.Function3<? super android.graphics.ImageDecoder,? super android.graphics.ImageDecoder.ImageInfo,? super android.graphics.ImageDecoder.Source,kotlin.Unit> action);
+ }
+
+ public final class MatrixKt {
+ method public static android.graphics.Matrix rotationMatrix(float degrees, optional float px, optional float py);
+ method public static android.graphics.Matrix scaleMatrix(optional float sx, optional float sy);
+ method public static inline operator android.graphics.Matrix times(android.graphics.Matrix, android.graphics.Matrix m);
+ method public static android.graphics.Matrix translationMatrix(optional float tx, optional float ty);
+ method public static inline float[] values(android.graphics.Matrix);
+ }
+
+ public final class PaintKt {
+ method public static inline boolean setBlendMode(android.graphics.Paint, androidx.core.graphics.BlendModeCompat? blendModeCompat);
+ }
+
+ public final class PathKt {
+ method @RequiresApi(19) public static inline infix android.graphics.Path and(android.graphics.Path, android.graphics.Path p);
+ method @RequiresApi(26) public static Iterable<androidx.core.graphics.PathSegment> flatten(android.graphics.Path, optional float error);
+ method @RequiresApi(19) public static inline operator android.graphics.Path minus(android.graphics.Path, android.graphics.Path p);
+ method @RequiresApi(19) public static inline infix android.graphics.Path or(android.graphics.Path, android.graphics.Path p);
+ method @RequiresApi(19) public static inline operator android.graphics.Path plus(android.graphics.Path, android.graphics.Path p);
+ method @RequiresApi(19) public static inline infix android.graphics.Path xor(android.graphics.Path, android.graphics.Path p);
+ }
+
+ public final class PictureKt {
+ method public static inline android.graphics.Picture record(android.graphics.Picture, int width, int height, kotlin.jvm.functions.Function1<? super android.graphics.Canvas,kotlin.Unit> block);
+ }
+
+ public final class PointKt {
+ method public static inline operator int component1(android.graphics.Point);
+ method public static inline operator float component1(android.graphics.PointF);
+ method public static inline operator int component2(android.graphics.Point);
+ method public static inline operator float component2(android.graphics.PointF);
+ method public static inline operator android.graphics.Point minus(android.graphics.Point, android.graphics.Point p);
+ method public static inline operator android.graphics.PointF minus(android.graphics.PointF, android.graphics.PointF p);
+ method public static inline operator android.graphics.Point minus(android.graphics.Point, int xy);
+ method public static inline operator android.graphics.PointF minus(android.graphics.PointF, float xy);
+ method public static inline operator android.graphics.Point plus(android.graphics.Point, android.graphics.Point p);
+ method public static inline operator android.graphics.PointF plus(android.graphics.PointF, android.graphics.PointF p);
+ method public static inline operator android.graphics.Point plus(android.graphics.Point, int xy);
+ method public static inline operator android.graphics.PointF plus(android.graphics.PointF, float xy);
+ method public static inline android.graphics.Point toPoint(android.graphics.PointF);
+ method public static inline android.graphics.PointF toPointF(android.graphics.Point);
+ method public static inline operator android.graphics.Point unaryMinus(android.graphics.Point);
+ method public static inline operator android.graphics.PointF unaryMinus(android.graphics.PointF);
+ }
+
+ public final class PorterDuffKt {
+ method public static inline android.graphics.PorterDuffColorFilter toColorFilter(android.graphics.PorterDuff.Mode, int color);
+ method public static inline android.graphics.PorterDuffXfermode toXfermode(android.graphics.PorterDuff.Mode);
+ }
+
+ public final class RectKt {
+ method public static inline infix android.graphics.Rect and(android.graphics.Rect, android.graphics.Rect r);
+ method public static inline infix android.graphics.RectF and(android.graphics.RectF, android.graphics.RectF r);
+ method public static inline operator int component1(android.graphics.Rect);
+ method public static inline operator float component1(android.graphics.RectF);
+ method public static inline operator int component2(android.graphics.Rect);
+ method public static inline operator float component2(android.graphics.RectF);
+ method public static inline operator int component3(android.graphics.Rect);
+ method public static inline operator float component3(android.graphics.RectF);
+ method public static inline operator int component4(android.graphics.Rect);
+ method public static inline operator float component4(android.graphics.RectF);
+ method public static inline operator boolean contains(android.graphics.Rect, android.graphics.Point p);
+ method public static inline operator boolean contains(android.graphics.RectF, android.graphics.PointF p);
+ method public static inline operator android.graphics.Region minus(android.graphics.Rect, android.graphics.Rect r);
+ method public static inline operator android.graphics.Region minus(android.graphics.RectF, android.graphics.RectF r);
+ method public static inline operator android.graphics.Rect minus(android.graphics.Rect, int xy);
+ method public static inline operator android.graphics.RectF minus(android.graphics.RectF, float xy);
+ method public static inline operator android.graphics.Rect minus(android.graphics.Rect, android.graphics.Point xy);
+ method public static inline operator android.graphics.RectF minus(android.graphics.RectF, android.graphics.PointF xy);
+ method public static inline infix android.graphics.Rect or(android.graphics.Rect, android.graphics.Rect r);
+ method public static inline infix android.graphics.RectF or(android.graphics.RectF, android.graphics.RectF r);
+ method public static inline operator android.graphics.Rect plus(android.graphics.Rect, android.graphics.Rect r);
+ method public static inline operator android.graphics.RectF plus(android.graphics.RectF, android.graphics.RectF r);
+ method public static inline operator android.graphics.Rect plus(android.graphics.Rect, int xy);
+ method public static inline operator android.graphics.RectF plus(android.graphics.RectF, float xy);
+ method public static inline operator android.graphics.Rect plus(android.graphics.Rect, android.graphics.Point xy);
+ method public static inline operator android.graphics.RectF plus(android.graphics.RectF, android.graphics.PointF xy);
+ method public static inline operator android.graphics.Rect times(android.graphics.Rect, int factor);
+ method public static inline operator android.graphics.RectF times(android.graphics.RectF, int factor);
+ method public static inline operator android.graphics.RectF times(android.graphics.RectF, float factor);
+ method public static inline android.graphics.Rect toRect(android.graphics.RectF);
+ method public static inline android.graphics.RectF toRectF(android.graphics.Rect);
+ method public static inline android.graphics.Region toRegion(android.graphics.Rect);
+ method public static inline android.graphics.Region toRegion(android.graphics.RectF);
+ method public static inline android.graphics.RectF transform(android.graphics.RectF, android.graphics.Matrix m);
+ method public static inline infix android.graphics.Region xor(android.graphics.Rect, android.graphics.Rect r);
+ method public static inline infix android.graphics.Region xor(android.graphics.RectF, android.graphics.RectF r);
+ }
+
+ public final class RegionKt {
+ method public static inline infix android.graphics.Region and(android.graphics.Region, android.graphics.Rect r);
+ method public static inline infix android.graphics.Region and(android.graphics.Region, android.graphics.Region r);
+ method public static inline operator boolean contains(android.graphics.Region, android.graphics.Point p);
+ method public static inline void forEach(android.graphics.Region, kotlin.jvm.functions.Function1<? super android.graphics.Rect,kotlin.Unit> action);
+ method public static operator java.util.Iterator<android.graphics.Rect> iterator(android.graphics.Region);
+ method public static inline operator android.graphics.Region minus(android.graphics.Region, android.graphics.Rect r);
+ method public static inline operator android.graphics.Region minus(android.graphics.Region, android.graphics.Region r);
+ method public static inline operator android.graphics.Region not(android.graphics.Region);
+ method public static inline infix android.graphics.Region or(android.graphics.Region, android.graphics.Rect r);
+ method public static inline infix android.graphics.Region or(android.graphics.Region, android.graphics.Region r);
+ method public static inline operator android.graphics.Region plus(android.graphics.Region, android.graphics.Rect r);
+ method public static inline operator android.graphics.Region plus(android.graphics.Region, android.graphics.Region r);
+ method public static inline operator android.graphics.Region unaryMinus(android.graphics.Region);
+ method public static inline infix android.graphics.Region xor(android.graphics.Region, android.graphics.Rect r);
+ method public static inline infix android.graphics.Region xor(android.graphics.Region, android.graphics.Region r);
+ }
+
+ public final class ShaderKt {
+ method public static inline void transform(android.graphics.Shader, kotlin.jvm.functions.Function1<? super android.graphics.Matrix,kotlin.Unit> block);
+ }
+
+}
+
+package androidx.core.graphics.drawable {
+
+ public final class BitmapDrawableKt {
+ method public static inline android.graphics.drawable.BitmapDrawable toDrawable(android.graphics.Bitmap, android.content.res.Resources resources);
+ }
+
+ public final class ColorDrawableKt {
+ method public static inline android.graphics.drawable.ColorDrawable toDrawable(@ColorInt int);
+ method @RequiresApi(26) public static inline android.graphics.drawable.ColorDrawable toDrawable(android.graphics.Color);
+ }
+
+ public final class DrawableKt {
+ method public static android.graphics.Bitmap toBitmap(android.graphics.drawable.Drawable, optional @Px int width, optional @Px int height, optional android.graphics.Bitmap.Config? config);
+ method public static void updateBounds(android.graphics.drawable.Drawable, optional @Px int left, optional @Px int top, optional @Px int right, optional @Px int bottom);
+ }
+
+ public final class IconKt {
+ method @RequiresApi(26) public static inline android.graphics.drawable.Icon toAdaptiveIcon(android.graphics.Bitmap);
+ method @RequiresApi(26) public static inline android.graphics.drawable.Icon toIcon(android.graphics.Bitmap);
+ method @RequiresApi(26) public static inline android.graphics.drawable.Icon toIcon(android.net.Uri);
+ method @RequiresApi(26) public static inline android.graphics.drawable.Icon toIcon(byte[]);
+ }
+
+}
+
+package androidx.core.location {
+
+ public final class LocationKt {
+ method public static inline operator double component1(android.location.Location);
+ method public static inline operator double component2(android.location.Location);
+ }
+
+}
+
+package androidx.core.net {
+
+ public final class UriKt {
+ method public static java.io.File toFile(android.net.Uri);
+ method public static inline android.net.Uri toUri(String);
+ method public static inline android.net.Uri toUri(java.io.File);
+ }
+
+}
+
+package androidx.core.os {
+
+ public final class BundleKt {
+ method public static android.os.Bundle bundleOf(kotlin.Pair<java.lang.String,?>... pairs);
+ }
+
+ public final class HandlerKt {
+ method public static inline Runnable postAtTime(android.os.Handler, long uptimeMillis, optional Object? token, kotlin.jvm.functions.Function0<kotlin.Unit> action);
+ method public static inline Runnable postDelayed(android.os.Handler, long delayInMillis, optional Object? token, kotlin.jvm.functions.Function0<kotlin.Unit> action);
+ }
+
+ public final class PersistableBundleKt {
+ method @RequiresApi(21) public static android.os.PersistableBundle persistableBundleOf(kotlin.Pair<java.lang.String,?>... pairs);
+ }
+
+ public final class TraceKt {
+ method @Deprecated public static inline <T> T! trace(String sectionName, kotlin.jvm.functions.Function0<? extends T> block);
+ }
+
+}
+
+package androidx.core.text {
+
+ public final class CharSequenceKt {
+ method public static inline boolean isDigitsOnly(CharSequence);
+ method public static inline int trimmedLength(CharSequence);
+ }
+
+ public final class HtmlKt {
+ method public static inline android.text.Spanned parseAsHtml(String, optional int flags, optional android.text.Html.ImageGetter? imageGetter, optional android.text.Html.TagHandler? tagHandler);
+ method public static inline String toHtml(android.text.Spanned, optional int option);
+ }
+
+ public final class LocaleKt {
+ method @RequiresApi(17) public static inline int getLayoutDirection(java.util.Locale);
+ }
+
+ public final class SpannableStringBuilderKt {
+ method public static inline android.text.SpannableStringBuilder backgroundColor(android.text.SpannableStringBuilder, @ColorInt int color, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder bold(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannedString buildSpannedString(kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder color(android.text.SpannableStringBuilder, @ColorInt int color, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder inSpans(android.text.SpannableStringBuilder, Object![] spans, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder inSpans(android.text.SpannableStringBuilder, Object span, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder italic(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder scale(android.text.SpannableStringBuilder, float proportion, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder strikeThrough(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder subscript(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder superscript(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ method public static inline android.text.SpannableStringBuilder underline(android.text.SpannableStringBuilder, kotlin.jvm.functions.Function1<? super android.text.SpannableStringBuilder,kotlin.Unit> builderAction);
+ }
+
+ public final class SpannableStringKt {
+ method public static inline void clearSpans(android.text.Spannable);
+ method public static inline operator void set(android.text.Spannable, int start, int end, Object span);
+ method public static inline operator void set(android.text.Spannable, kotlin.ranges.IntRange range, Object span);
+ method public static inline android.text.Spannable toSpannable(CharSequence);
+ }
+
+ public final class SpannedStringKt {
+ method public static inline <reified T> T![]! getSpans(android.text.Spanned, optional int start, optional int end);
+ method public static inline android.text.Spanned toSpanned(CharSequence);
+ }
+
+ public final class StringKt {
+ method public static inline String htmlEncode(String);
+ }
+
+}
+
+package androidx.core.transition {
+
+ public final class TransitionKt {
+ method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener addListener(android.transition.Transition, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onEnd, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onStart, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onCancel, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onResume, optional kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> onPause);
+ method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnCancel(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
+ method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnEnd(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
+ method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnPause(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
+ method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnResume(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
+ method @RequiresApi(19) public static inline android.transition.Transition.TransitionListener doOnStart(android.transition.Transition, kotlin.jvm.functions.Function1<? super android.transition.Transition,kotlin.Unit> action);
+ }
+
+}
+
+package androidx.core.util {
+
+ public final class AtomicFileKt {
+ method @RequiresApi(17) public static inline byte[] readBytes(android.util.AtomicFile);
+ method @RequiresApi(17) public static String readText(android.util.AtomicFile, optional java.nio.charset.Charset charset);
+ method @RequiresApi(17) public static inline void tryWrite(android.util.AtomicFile, kotlin.jvm.functions.Function1<? super java.io.FileOutputStream,kotlin.Unit> block);
+ method @RequiresApi(17) public static void writeBytes(android.util.AtomicFile, byte[] array);
+ method @RequiresApi(17) public static void writeText(android.util.AtomicFile, String text, optional java.nio.charset.Charset charset);
+ }
+
+ public final class HalfKt {
+ method @RequiresApi(26) public static inline android.util.Half toHalf(@HalfFloat short);
+ method @RequiresApi(26) public static inline android.util.Half toHalf(float);
+ method @RequiresApi(26) public static inline android.util.Half toHalf(double);
+ method @RequiresApi(26) public static inline android.util.Half toHalf(String);
+ }
+
+ public final class LongSparseArrayKt {
+ method @RequiresApi(16) public static inline operator <T> boolean contains(android.util.LongSparseArray<T>, long key);
+ method @RequiresApi(16) public static inline <T> boolean containsKey(android.util.LongSparseArray<T>, long key);
+ method @RequiresApi(16) public static inline <T> boolean containsValue(android.util.LongSparseArray<T>, T? value);
+ method @RequiresApi(16) public static inline <T> void forEach(android.util.LongSparseArray<T>, kotlin.jvm.functions.Function2<? super java.lang.Long,? super T,kotlin.Unit> action);
+ method @RequiresApi(16) public static inline <T> T! getOrDefault(android.util.LongSparseArray<T>, long key, T? defaultValue);
+ method @RequiresApi(16) public static inline <T> T! getOrElse(android.util.LongSparseArray<T>, long key, kotlin.jvm.functions.Function0<? extends T> defaultValue);
+ method @RequiresApi(16) public static inline <T> int getSize(android.util.LongSparseArray<T>);
+ method @RequiresApi(16) public static inline <T> boolean isEmpty(android.util.LongSparseArray<T>);
+ method @RequiresApi(16) public static inline <T> boolean isNotEmpty(android.util.LongSparseArray<T>);
+ method @RequiresApi(16) public static <T> kotlin.collections.LongIterator keyIterator(android.util.LongSparseArray<T>);
+ method @RequiresApi(16) public static operator <T> android.util.LongSparseArray<T> plus(android.util.LongSparseArray<T>, android.util.LongSparseArray<T> other);
+ method @RequiresApi(16) public static <T> void putAll(android.util.LongSparseArray<T>, android.util.LongSparseArray<T> other);
+ method @RequiresApi(16) public static <T> boolean remove(android.util.LongSparseArray<T>, long key, T? value);
+ method @RequiresApi(16) public static inline operator <T> void set(android.util.LongSparseArray<T>, long key, T? value);
+ method @RequiresApi(16) public static <T> java.util.Iterator<T> valueIterator(android.util.LongSparseArray<T>);
+ }
+
+ public final class LruCacheKt {
+ method public static inline <K, V> android.util.LruCache<K,V> lruCache(int maxSize, optional kotlin.jvm.functions.Function2<? super K,? super V,java.lang.Integer> sizeOf, optional kotlin.jvm.functions.Function1<? super K,? extends V> create, optional kotlin.jvm.functions.Function4<? super java.lang.Boolean,? super K,? super V,? super V,kotlin.Unit> onEntryRemoved);
+ }
+
+ public final class PairKt {
+ method public static inline operator <F, S> F! component1(androidx.core.util.Pair<F,S>);
+ method public static inline operator <F, S> F! component1(android.util.Pair<F,S>);
+ method public static inline operator <F, S> S! component2(androidx.core.util.Pair<F,S>);
+ method public static inline operator <F, S> S! component2(android.util.Pair<F,S>);
+ method public static inline <F, S> android.util.Pair<F,S> toAndroidPair(kotlin.Pair<? extends F,? extends S>);
+ method public static inline <F, S> androidx.core.util.Pair<F,S> toAndroidXPair(kotlin.Pair<? extends F,? extends S>);
+ method public static inline <F, S> kotlin.Pair<F,S> toKotlinPair(androidx.core.util.Pair<F,S>);
+ method public static inline <F, S> kotlin.Pair<F,S> toKotlinPair(android.util.Pair<F,S>);
+ }
+
+ public final class RangeKt {
+ method @RequiresApi(21) public static inline infix <T extends java.lang.Comparable<? super T>> android.util.Range<T> and(android.util.Range<T>, android.util.Range<T> other);
+ method @RequiresApi(21) public static inline operator <T extends java.lang.Comparable<? super T>> android.util.Range<T> plus(android.util.Range<T>, T value);
+ method @RequiresApi(21) public static inline operator <T extends java.lang.Comparable<? super T>> android.util.Range<T> plus(android.util.Range<T>, android.util.Range<T> other);
+ method @RequiresApi(21) public static inline infix <T extends java.lang.Comparable<? super T>> android.util.Range<T> rangeTo(T, T that);
+ method @RequiresApi(21) public static <T extends java.lang.Comparable<? super T>> kotlin.ranges.ClosedRange<T> toClosedRange(android.util.Range<T>);
+ method @RequiresApi(21) public static <T extends java.lang.Comparable<? super T>> android.util.Range<T> toRange(kotlin.ranges.ClosedRange<T>);
+ }
+
+ public final class SizeKt {
+ method @RequiresApi(21) public static inline operator int component1(android.util.Size);
+ method @RequiresApi(21) public static inline operator float component1(android.util.SizeF);
+ method @RequiresApi(21) public static inline operator int component2(android.util.Size);
+ method @RequiresApi(21) public static inline operator float component2(android.util.SizeF);
+ }
+
+ public final class SparseArrayKt {
+ method public static inline operator <T> boolean contains(android.util.SparseArray<T>, int key);
+ method public static inline <T> boolean containsKey(android.util.SparseArray<T>, int key);
+ method public static inline <T> boolean containsValue(android.util.SparseArray<T>, T? value);
+ method public static inline <T> void forEach(android.util.SparseArray<T>, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super T,kotlin.Unit> action);
+ method public static inline <T> T! getOrDefault(android.util.SparseArray<T>, int key, T? defaultValue);
+ method public static inline <T> T! getOrElse(android.util.SparseArray<T>, int key, kotlin.jvm.functions.Function0<? extends T> defaultValue);
+ method public static inline <T> int getSize(android.util.SparseArray<T>);
+ method public static inline <T> boolean isEmpty(android.util.SparseArray<T>);
+ method public static inline <T> boolean isNotEmpty(android.util.SparseArray<T>);
+ method public static <T> kotlin.collections.IntIterator keyIterator(android.util.SparseArray<T>);
+ method public static operator <T> android.util.SparseArray<T> plus(android.util.SparseArray<T>, android.util.SparseArray<T> other);
+ method public static <T> void putAll(android.util.SparseArray<T>, android.util.SparseArray<T> other);
+ method public static <T> boolean remove(android.util.SparseArray<T>, int key, T? value);
+ method public static inline operator <T> void set(android.util.SparseArray<T>, int key, T? value);
+ method public static <T> java.util.Iterator<T> valueIterator(android.util.SparseArray<T>);
+ }
+
+ public final class SparseBooleanArrayKt {
+ method public static inline operator boolean contains(android.util.SparseBooleanArray, int key);
+ method public static inline boolean containsKey(android.util.SparseBooleanArray, int key);
+ method public static inline boolean containsValue(android.util.SparseBooleanArray, boolean value);
+ method public static inline void forEach(android.util.SparseBooleanArray, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Boolean,kotlin.Unit> action);
+ method public static inline boolean getOrDefault(android.util.SparseBooleanArray, int key, boolean defaultValue);
+ method public static inline boolean getOrElse(android.util.SparseBooleanArray, int key, kotlin.jvm.functions.Function0<java.lang.Boolean> defaultValue);
+ method public static inline int getSize(android.util.SparseBooleanArray);
+ method public static inline boolean isEmpty(android.util.SparseBooleanArray);
+ method public static inline boolean isNotEmpty(android.util.SparseBooleanArray);
+ method public static kotlin.collections.IntIterator keyIterator(android.util.SparseBooleanArray);
+ method public static operator android.util.SparseBooleanArray plus(android.util.SparseBooleanArray, android.util.SparseBooleanArray other);
+ method public static void putAll(android.util.SparseBooleanArray, android.util.SparseBooleanArray other);
+ method public static boolean remove(android.util.SparseBooleanArray, int key, boolean value);
+ method public static inline operator void set(android.util.SparseBooleanArray, int key, boolean value);
+ method public static kotlin.collections.BooleanIterator valueIterator(android.util.SparseBooleanArray);
+ }
+
+ public final class SparseIntArrayKt {
+ method public static inline operator boolean contains(android.util.SparseIntArray, int key);
+ method public static inline boolean containsKey(android.util.SparseIntArray, int key);
+ method public static inline boolean containsValue(android.util.SparseIntArray, int value);
+ method public static inline void forEach(android.util.SparseIntArray, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> action);
+ method public static inline int getOrDefault(android.util.SparseIntArray, int key, int defaultValue);
+ method public static inline int getOrElse(android.util.SparseIntArray, int key, kotlin.jvm.functions.Function0<java.lang.Integer> defaultValue);
+ method public static inline int getSize(android.util.SparseIntArray);
+ method public static inline boolean isEmpty(android.util.SparseIntArray);
+ method public static inline boolean isNotEmpty(android.util.SparseIntArray);
+ method public static kotlin.collections.IntIterator keyIterator(android.util.SparseIntArray);
+ method public static operator android.util.SparseIntArray plus(android.util.SparseIntArray, android.util.SparseIntArray other);
+ method public static void putAll(android.util.SparseIntArray, android.util.SparseIntArray other);
+ method public static boolean remove(android.util.SparseIntArray, int key, int value);
+ method public static inline operator void set(android.util.SparseIntArray, int key, int value);
+ method public static kotlin.collections.IntIterator valueIterator(android.util.SparseIntArray);
+ }
+
+ public final class SparseLongArrayKt {
+ method @RequiresApi(18) public static inline operator boolean contains(android.util.SparseLongArray, int key);
+ method @RequiresApi(18) public static inline boolean containsKey(android.util.SparseLongArray, int key);
+ method @RequiresApi(18) public static inline boolean containsValue(android.util.SparseLongArray, long value);
+ method @RequiresApi(18) public static inline void forEach(android.util.SparseLongArray, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super java.lang.Long,kotlin.Unit> action);
+ method @RequiresApi(18) public static inline long getOrDefault(android.util.SparseLongArray, int key, long defaultValue);
+ method @RequiresApi(18) public static inline long getOrElse(android.util.SparseLongArray, int key, kotlin.jvm.functions.Function0<java.lang.Long> defaultValue);
+ method @RequiresApi(18) public static inline int getSize(android.util.SparseLongArray);
+ method @RequiresApi(18) public static inline boolean isEmpty(android.util.SparseLongArray);
+ method @RequiresApi(18) public static inline boolean isNotEmpty(android.util.SparseLongArray);
+ method @RequiresApi(18) public static kotlin.collections.IntIterator keyIterator(android.util.SparseLongArray);
+ method @RequiresApi(18) public static operator android.util.SparseLongArray plus(android.util.SparseLongArray, android.util.SparseLongArray other);
+ method @RequiresApi(18) public static void putAll(android.util.SparseLongArray, android.util.SparseLongArray other);
+ method @RequiresApi(18) public static boolean remove(android.util.SparseLongArray, int key, long value);
+ method @RequiresApi(18) public static inline operator void set(android.util.SparseLongArray, int key, long value);
+ method @RequiresApi(18) public static kotlin.collections.LongIterator valueIterator(android.util.SparseLongArray);
+ }
+
+}
+
+package androidx.core.view {
+
+ public final class MenuKt {
+ method public static operator boolean contains(android.view.Menu, android.view.MenuItem item);
+ method public static inline void forEach(android.view.Menu, kotlin.jvm.functions.Function1<? super android.view.MenuItem,kotlin.Unit> action);
+ method public static inline void forEachIndexed(android.view.Menu, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super android.view.MenuItem,kotlin.Unit> action);
+ method public static inline operator android.view.MenuItem get(android.view.Menu, int index);
+ method public static kotlin.sequences.Sequence<android.view.MenuItem> getChildren(android.view.Menu);
+ method public static inline int getSize(android.view.Menu);
+ method public static inline boolean isEmpty(android.view.Menu);
+ method public static inline boolean isNotEmpty(android.view.Menu);
+ method public static operator java.util.Iterator<android.view.MenuItem> iterator(android.view.Menu);
+ method public static inline operator void minusAssign(android.view.Menu, android.view.MenuItem item);
+ }
+
+ public final class ViewGroupKt {
+ method public static inline operator boolean contains(android.view.ViewGroup, android.view.View view);
+ method public static inline void forEach(android.view.ViewGroup, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
+ method public static inline void forEachIndexed(android.view.ViewGroup, kotlin.jvm.functions.Function2<? super java.lang.Integer,? super android.view.View,kotlin.Unit> action);
+ method public static operator android.view.View get(android.view.ViewGroup, int index);
+ method public static kotlin.sequences.Sequence<android.view.View> getChildren(android.view.ViewGroup);
+ method public static kotlin.sequences.Sequence<android.view.View> getDescendants(android.view.ViewGroup);
+ method public static inline int getSize(android.view.ViewGroup);
+ method public static inline boolean isEmpty(android.view.ViewGroup);
+ method public static inline boolean isNotEmpty(android.view.ViewGroup);
+ method public static operator java.util.Iterator<android.view.View> iterator(android.view.ViewGroup);
+ method public static inline operator void minusAssign(android.view.ViewGroup, android.view.View view);
+ method public static inline operator void plusAssign(android.view.ViewGroup, android.view.View view);
+ method public static inline void setMargins(android.view.ViewGroup.MarginLayoutParams, @Px int size);
+ method public static inline void updateMargins(android.view.ViewGroup.MarginLayoutParams, optional @Px int left, optional @Px int top, optional @Px int right, optional @Px int bottom);
+ method @RequiresApi(17) public static inline void updateMarginsRelative(android.view.ViewGroup.MarginLayoutParams, optional @Px int start, optional @Px int top, optional @Px int end, optional @Px int bottom);
+ }
+
+ public final class ViewKt {
+ method public static inline void doOnAttach(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
+ method public static inline void doOnDetach(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
+ method public static inline void doOnLayout(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
+ method public static inline void doOnNextLayout(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
+ method public static inline androidx.core.view.OneShotPreDrawListener doOnPreDraw(android.view.View, kotlin.jvm.functions.Function1<? super android.view.View,kotlin.Unit> action);
+ method public static android.graphics.Bitmap drawToBitmap(android.view.View, optional android.graphics.Bitmap.Config config);
+ method public static kotlin.sequences.Sequence<android.view.View> getAllViews(android.view.View);
+ method public static kotlin.sequences.Sequence<android.view.ViewParent> getAncestors(android.view.View);
+ method public static inline int getMarginBottom(android.view.View);
+ method public static inline int getMarginEnd(android.view.View);
+ method public static inline int getMarginLeft(android.view.View);
+ method public static inline int getMarginRight(android.view.View);
+ method public static inline int getMarginStart(android.view.View);
+ method public static inline int getMarginTop(android.view.View);
+ method public static inline boolean isGone(android.view.View);
+ method public static inline boolean isInvisible(android.view.View);
+ method public static inline boolean isVisible(android.view.View);
+ method public static inline Runnable postDelayed(android.view.View, long delayInMillis, kotlin.jvm.functions.Function0<kotlin.Unit> action);
+ method @RequiresApi(16) public static inline Runnable postOnAnimationDelayed(android.view.View, long delayInMillis, kotlin.jvm.functions.Function0<kotlin.Unit> action);
+ method public static inline void setGone(android.view.View, boolean value);
+ method public static inline void setInvisible(android.view.View, boolean value);
+ method public static inline void setPadding(android.view.View, @Px int size);
+ method public static inline void setVisible(android.view.View, boolean value);
+ method public static inline void updateLayoutParams(android.view.View, kotlin.jvm.functions.Function1<? super android.view.ViewGroup.LayoutParams,kotlin.Unit> block);
+ method public static inline <reified T extends android.view.ViewGroup.LayoutParams> void updateLayoutParams(android.view.View, kotlin.jvm.functions.Function1<? super T,? extends kotlin.Unit> block);
+ method public static inline void updatePadding(android.view.View, optional @Px int left, optional @Px int top, optional @Px int right, optional @Px int bottom);
+ method @RequiresApi(17) public static inline void updatePaddingRelative(android.view.View, optional @Px int start, optional @Px int top, optional @Px int end, optional @Px int bottom);
+ }
+
+}
+
+package androidx.core.widget {
+
+ public final class TextViewKt {
+ method public static inline android.text.TextWatcher addTextChangedListener(android.widget.TextView, optional kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> beforeTextChanged, optional kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> onTextChanged, optional kotlin.jvm.functions.Function1<? super android.text.Editable,kotlin.Unit> afterTextChanged);
+ method public static inline android.text.TextWatcher doAfterTextChanged(android.widget.TextView, kotlin.jvm.functions.Function1<? super android.text.Editable,kotlin.Unit> action);
+ method public static inline android.text.TextWatcher doBeforeTextChanged(android.widget.TextView, kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> action);
+ method public static inline android.text.TextWatcher doOnTextChanged(android.widget.TextView, kotlin.jvm.functions.Function4<? super java.lang.CharSequence,? super java.lang.Integer,? super java.lang.Integer,? super java.lang.Integer,kotlin.Unit> action);
+ }
+
+}
+
diff --git a/core/core/api/1.5.0-beta01.txt b/core/core/api/1.5.0-beta01.txt
index ebb6cd5..c7d59de9 100644
--- a/core/core/api/1.5.0-beta01.txt
+++ b/core/core/api/1.5.0-beta01.txt
@@ -1940,14 +1940,13 @@
}
public final class DisplayCompat {
- method public static androidx.core.view.DisplayCompat.ModeCompat getMode(android.content.Context, android.view.Display);
method public static androidx.core.view.DisplayCompat.ModeCompat![] getSupportedModes(android.content.Context, android.view.Display);
}
public static final class DisplayCompat.ModeCompat {
method public int getPhysicalHeight();
method public int getPhysicalWidth();
- method @Deprecated public boolean isNative();
+ method public boolean isNative();
method @RequiresApi(android.os.Build.VERSION_CODES.M) public android.view.Display.Mode? toMode();
}
diff --git a/core/core/api/1.5.0-beta02.txt b/core/core/api/1.5.0-beta02.txt
new file mode 100644
index 0000000..c7d59de9
--- /dev/null
+++ b/core/core/api/1.5.0-beta02.txt
@@ -0,0 +1,3505 @@
+// Signature format: 4.0
+package androidx.core.accessibilityservice {
+
+ public final class AccessibilityServiceInfoCompat {
+ method public static String capabilityToString(int);
+ method public static String feedbackTypeToString(int);
+ method public static String? flagToString(int);
+ method public static int getCapabilities(android.accessibilityservice.AccessibilityServiceInfo);
+ method public static String? loadDescription(android.accessibilityservice.AccessibilityServiceInfo, android.content.pm.PackageManager);
+ field public static final int CAPABILITY_CAN_FILTER_KEY_EVENTS = 8; // 0x8
+ field public static final int CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 4; // 0x4
+ field public static final int CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION = 2; // 0x2
+ field public static final int CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT = 1; // 0x1
+ field public static final int FEEDBACK_ALL_MASK = -1; // 0xffffffff
+ field public static final int FEEDBACK_BRAILLE = 32; // 0x20
+ field public static final int FLAG_INCLUDE_NOT_IMPORTANT_VIEWS = 2; // 0x2
+ field public static final int FLAG_REPORT_VIEW_IDS = 16; // 0x10
+ field public static final int FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 8; // 0x8
+ field public static final int FLAG_REQUEST_FILTER_KEY_EVENTS = 32; // 0x20
+ field public static final int FLAG_REQUEST_TOUCH_EXPLORATION_MODE = 4; // 0x4
+ }
+
+}
+
+package androidx.core.app {
+
+ public class ActivityCompat extends androidx.core.content.ContextCompat {
+ ctor protected ActivityCompat();
+ method public static void finishAffinity(android.app.Activity);
+ method public static void finishAfterTransition(android.app.Activity);
+ method public static android.net.Uri? getReferrer(android.app.Activity);
+ method @Deprecated public static boolean invalidateOptionsMenu(android.app.Activity!);
+ method public static void postponeEnterTransition(android.app.Activity);
+ method public static void recreate(android.app.Activity);
+ method public static androidx.core.view.DragAndDropPermissionsCompat? requestDragAndDropPermissions(android.app.Activity!, android.view.DragEvent!);
+ method public static void requestPermissions(android.app.Activity, String![], @IntRange(from=0) int);
+ method public static <T extends android.view.View> T requireViewById(android.app.Activity, @IdRes int);
+ method public static void setEnterSharedElementCallback(android.app.Activity, androidx.core.app.SharedElementCallback?);
+ method public static void setExitSharedElementCallback(android.app.Activity, androidx.core.app.SharedElementCallback?);
+ method public static void setLocusContext(android.app.Activity, androidx.core.content.LocusIdCompat?, android.os.Bundle?);
+ method public static void setPermissionCompatDelegate(androidx.core.app.ActivityCompat.PermissionCompatDelegate?);
+ method public static boolean shouldShowRequestPermissionRationale(android.app.Activity, String);
+ method public static void startActivityForResult(android.app.Activity, android.content.Intent, int, android.os.Bundle?);
+ method public static void startIntentSenderForResult(android.app.Activity, android.content.IntentSender, int, android.content.Intent?, int, int, int, android.os.Bundle?) throws android.content.IntentSender.SendIntentException;
+ method public static void startPostponedEnterTransition(android.app.Activity);
+ }
+
+ public static interface ActivityCompat.OnRequestPermissionsResultCallback {
+ method public void onRequestPermissionsResult(int, String![], int[]);
+ }
+
+ public static interface ActivityCompat.PermissionCompatDelegate {
+ method public boolean onActivityResult(android.app.Activity, @IntRange(from=0) int, int, android.content.Intent?);
+ method public boolean requestPermissions(android.app.Activity, String![], @IntRange(from=0) int);
+ }
+
+ public final class ActivityManagerCompat {
+ method public static boolean isLowRamDevice(android.app.ActivityManager);
+ }
+
+ public class ActivityOptionsCompat {
+ ctor protected ActivityOptionsCompat();
+ method public android.graphics.Rect? getLaunchBounds();
+ method public static androidx.core.app.ActivityOptionsCompat makeBasic();
+ method public static androidx.core.app.ActivityOptionsCompat makeClipRevealAnimation(android.view.View, int, int, int, int);
+ method public static androidx.core.app.ActivityOptionsCompat makeCustomAnimation(android.content.Context, int, int);
+ method public static androidx.core.app.ActivityOptionsCompat makeScaleUpAnimation(android.view.View, int, int, int, int);
+ method public static androidx.core.app.ActivityOptionsCompat makeSceneTransitionAnimation(android.app.Activity, android.view.View, String);
+ method public static androidx.core.app.ActivityOptionsCompat makeSceneTransitionAnimation(android.app.Activity, androidx.core.util.Pair<android.view.View!,java.lang.String!>!...);
+ method public static androidx.core.app.ActivityOptionsCompat makeTaskLaunchBehind();
+ method public static androidx.core.app.ActivityOptionsCompat makeThumbnailScaleUpAnimation(android.view.View, android.graphics.Bitmap, int, int);
+ method public void requestUsageTimeReport(android.app.PendingIntent);
+ method public androidx.core.app.ActivityOptionsCompat setLaunchBounds(android.graphics.Rect?);
+ method public android.os.Bundle? toBundle();
+ method public void update(androidx.core.app.ActivityOptionsCompat);
+ field public static final String EXTRA_USAGE_TIME_REPORT = "android.activity.usage_time";
+ field public static final String EXTRA_USAGE_TIME_REPORT_PACKAGES = "android.usage_time_packages";
+ }
+
+ public final class AlarmManagerCompat {
+ method public static void setAlarmClock(android.app.AlarmManager, long, android.app.PendingIntent, android.app.PendingIntent);
+ method public static void setAndAllowWhileIdle(android.app.AlarmManager, int, long, android.app.PendingIntent);
+ method public static void setExact(android.app.AlarmManager, int, long, android.app.PendingIntent);
+ method public static void setExactAndAllowWhileIdle(android.app.AlarmManager, int, long, android.app.PendingIntent);
+ }
+
+ @RequiresApi(28) public class AppComponentFactory extends android.app.AppComponentFactory {
+ ctor public AppComponentFactory();
+ method public final android.app.Activity instantiateActivity(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public android.app.Activity instantiateActivityCompat(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public final android.app.Application instantiateApplication(ClassLoader, String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public android.app.Application instantiateApplicationCompat(ClassLoader, String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public final android.content.ContentProvider instantiateProvider(ClassLoader, String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public android.content.ContentProvider instantiateProviderCompat(ClassLoader, String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public final android.content.BroadcastReceiver instantiateReceiver(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public android.content.BroadcastReceiver instantiateReceiverCompat(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public final android.app.Service instantiateService(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public android.app.Service instantiateServiceCompat(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ }
+
+ public class AppLaunchChecker {
+ ctor @Deprecated public AppLaunchChecker();
+ method public static boolean hasStartedFromLauncher(android.content.Context);
+ method public static void onActivityCreate(android.app.Activity);
+ }
+
+ public final class AppOpsManagerCompat {
+ method public static int noteOp(android.content.Context, String, int, String);
+ method public static int noteOpNoThrow(android.content.Context, String, int, String);
+ method public static int noteProxyOp(android.content.Context, String, String);
+ method public static int noteProxyOpNoThrow(android.content.Context, String, String);
+ method public static String? permissionToOp(String);
+ field public static final int MODE_ALLOWED = 0; // 0x0
+ field public static final int MODE_DEFAULT = 3; // 0x3
+ field public static final int MODE_ERRORED = 2; // 0x2
+ field public static final int MODE_IGNORED = 1; // 0x1
+ }
+
+ public final class BundleCompat {
+ method public static android.os.IBinder? getBinder(android.os.Bundle, String?);
+ method public static void putBinder(android.os.Bundle, String?, android.os.IBinder?);
+ }
+
+ public class DialogCompat {
+ method public static android.view.View requireViewById(android.app.Dialog, int);
+ }
+
+ public class FrameMetricsAggregator {
+ ctor public FrameMetricsAggregator();
+ ctor public FrameMetricsAggregator(int);
+ method public void add(android.app.Activity);
+ method public android.util.SparseIntArray![]? getMetrics();
+ method public android.util.SparseIntArray![]? remove(android.app.Activity);
+ method public android.util.SparseIntArray![]? reset();
+ method public android.util.SparseIntArray![]? stop();
+ field public static final int ANIMATION_DURATION = 256; // 0x100
+ field public static final int ANIMATION_INDEX = 8; // 0x8
+ field public static final int COMMAND_DURATION = 32; // 0x20
+ field public static final int COMMAND_INDEX = 5; // 0x5
+ field public static final int DELAY_DURATION = 128; // 0x80
+ field public static final int DELAY_INDEX = 7; // 0x7
+ field public static final int DRAW_DURATION = 8; // 0x8
+ field public static final int DRAW_INDEX = 3; // 0x3
+ field public static final int EVERY_DURATION = 511; // 0x1ff
+ field public static final int INPUT_DURATION = 2; // 0x2
+ field public static final int INPUT_INDEX = 1; // 0x1
+ field public static final int LAYOUT_MEASURE_DURATION = 4; // 0x4
+ field public static final int LAYOUT_MEASURE_INDEX = 2; // 0x2
+ field public static final int SWAP_DURATION = 64; // 0x40
+ field public static final int SWAP_INDEX = 6; // 0x6
+ field public static final int SYNC_DURATION = 16; // 0x10
+ field public static final int SYNC_INDEX = 4; // 0x4
+ field public static final int TOTAL_DURATION = 1; // 0x1
+ field public static final int TOTAL_INDEX = 0; // 0x0
+ }
+
+ public abstract class JobIntentService extends android.app.Service {
+ ctor public JobIntentService();
+ method public static void enqueueWork(android.content.Context, Class<?>, int, android.content.Intent);
+ method public static void enqueueWork(android.content.Context, android.content.ComponentName, int, android.content.Intent);
+ method public boolean isStopped();
+ method public android.os.IBinder! onBind(android.content.Intent);
+ method protected abstract void onHandleWork(android.content.Intent);
+ method public boolean onStopCurrentWork();
+ method public void setInterruptIfStopped(boolean);
+ }
+
+ public final class NavUtils {
+ method public static android.content.Intent? getParentActivityIntent(android.app.Activity);
+ method public static android.content.Intent? getParentActivityIntent(android.content.Context, Class<?>) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public static android.content.Intent? getParentActivityIntent(android.content.Context, android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public static String? getParentActivityName(android.app.Activity);
+ method public static String? getParentActivityName(android.content.Context, android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public static void navigateUpFromSameTask(android.app.Activity);
+ method public static void navigateUpTo(android.app.Activity, android.content.Intent);
+ method public static boolean shouldUpRecreateTask(android.app.Activity, android.content.Intent);
+ field public static final String PARENT_ACTIVITY = "android.support.PARENT_ACTIVITY";
+ }
+
+ public class NotificationChannelCompat {
+ method public boolean canBubble();
+ method public boolean canBypassDnd();
+ method public boolean canShowBadge();
+ method public android.media.AudioAttributes? getAudioAttributes();
+ method public String? getConversationId();
+ method public String? getDescription();
+ method public String? getGroup();
+ method public String getId();
+ method public int getImportance();
+ method public int getLightColor();
+ method public int getLockscreenVisibility();
+ method public CharSequence? getName();
+ method public String? getParentChannelId();
+ method public android.net.Uri? getSound();
+ method public long[]? getVibrationPattern();
+ method public boolean isImportantConversation();
+ method public boolean shouldShowLights();
+ method public boolean shouldVibrate();
+ method public androidx.core.app.NotificationChannelCompat.Builder toBuilder();
+ field public static final String DEFAULT_CHANNEL_ID = "miscellaneous";
+ }
+
+ public static class NotificationChannelCompat.Builder {
+ ctor public NotificationChannelCompat.Builder(String, int);
+ method public androidx.core.app.NotificationChannelCompat build();
+ method public androidx.core.app.NotificationChannelCompat.Builder setConversationId(String, String);
+ method public androidx.core.app.NotificationChannelCompat.Builder setDescription(String?);
+ method public androidx.core.app.NotificationChannelCompat.Builder setGroup(String?);
+ method public androidx.core.app.NotificationChannelCompat.Builder setImportance(int);
+ method public androidx.core.app.NotificationChannelCompat.Builder setLightColor(int);
+ method public androidx.core.app.NotificationChannelCompat.Builder setLightsEnabled(boolean);
+ method public androidx.core.app.NotificationChannelCompat.Builder setName(CharSequence?);
+ method public androidx.core.app.NotificationChannelCompat.Builder setShowBadge(boolean);
+ method public androidx.core.app.NotificationChannelCompat.Builder setSound(android.net.Uri?, android.media.AudioAttributes?);
+ method public androidx.core.app.NotificationChannelCompat.Builder setVibrationEnabled(boolean);
+ method public androidx.core.app.NotificationChannelCompat.Builder setVibrationPattern(long[]?);
+ }
+
+ public class NotificationChannelGroupCompat {
+ method public java.util.List<androidx.core.app.NotificationChannelCompat!> getChannels();
+ method public String? getDescription();
+ method public String getId();
+ method public CharSequence? getName();
+ method public boolean isBlocked();
+ method public androidx.core.app.NotificationChannelGroupCompat.Builder toBuilder();
+ }
+
+ public static class NotificationChannelGroupCompat.Builder {
+ ctor public NotificationChannelGroupCompat.Builder(String);
+ method public androidx.core.app.NotificationChannelGroupCompat build();
+ method public androidx.core.app.NotificationChannelGroupCompat.Builder setDescription(String?);
+ method public androidx.core.app.NotificationChannelGroupCompat.Builder setName(CharSequence?);
+ }
+
+ public class NotificationCompat {
+ ctor @Deprecated public NotificationCompat();
+ method public static androidx.core.app.NotificationCompat.Action? getAction(android.app.Notification, int);
+ method public static int getActionCount(android.app.Notification);
+ method public static boolean getAllowSystemGeneratedContextualActions(android.app.Notification);
+ method public static boolean getAutoCancel(android.app.Notification);
+ method public static int getBadgeIconType(android.app.Notification);
+ method public static androidx.core.app.NotificationCompat.BubbleMetadata? getBubbleMetadata(android.app.Notification);
+ method public static String? getCategory(android.app.Notification);
+ method public static String? getChannelId(android.app.Notification);
+ method public static int getColor(android.app.Notification);
+ method @RequiresApi(19) public static CharSequence? getContentInfo(android.app.Notification);
+ method @RequiresApi(19) public static CharSequence? getContentText(android.app.Notification);
+ method @RequiresApi(19) public static CharSequence? getContentTitle(android.app.Notification);
+ method public static android.os.Bundle? getExtras(android.app.Notification);
+ method public static String? getGroup(android.app.Notification);
+ method public static int getGroupAlertBehavior(android.app.Notification);
+ method @RequiresApi(21) public static java.util.List<androidx.core.app.NotificationCompat.Action!> getInvisibleActions(android.app.Notification);
+ method public static boolean getLocalOnly(android.app.Notification);
+ method public static androidx.core.content.LocusIdCompat? getLocusId(android.app.Notification);
+ method public static boolean getOngoing(android.app.Notification);
+ method public static boolean getOnlyAlertOnce(android.app.Notification);
+ method public static java.util.List<androidx.core.app.Person!> getPeople(android.app.Notification);
+ method public static android.app.Notification? getPublicVersion(android.app.Notification);
+ method public static CharSequence? getSettingsText(android.app.Notification);
+ method public static String? getShortcutId(android.app.Notification);
+ method @RequiresApi(19) public static boolean getShowWhen(android.app.Notification);
+ method public static String? getSortKey(android.app.Notification);
+ method @RequiresApi(19) public static CharSequence? getSubText(android.app.Notification);
+ method public static long getTimeoutAfter(android.app.Notification);
+ method @RequiresApi(19) public static boolean getUsesChronometer(android.app.Notification);
+ method public static int getVisibility(android.app.Notification);
+ method public static boolean isGroupSummary(android.app.Notification);
+ field public static final int BADGE_ICON_LARGE = 2; // 0x2
+ field public static final int BADGE_ICON_NONE = 0; // 0x0
+ field public static final int BADGE_ICON_SMALL = 1; // 0x1
+ field public static final String CATEGORY_ALARM = "alarm";
+ field public static final String CATEGORY_CALL = "call";
+ field public static final String CATEGORY_EMAIL = "email";
+ field public static final String CATEGORY_ERROR = "err";
+ field public static final String CATEGORY_EVENT = "event";
+ field public static final String CATEGORY_LOCATION_SHARING = "location_sharing";
+ field public static final String CATEGORY_MESSAGE = "msg";
+ field public static final String CATEGORY_MISSED_CALL = "missed_call";
+ field public static final String CATEGORY_NAVIGATION = "navigation";
+ field public static final String CATEGORY_PROGRESS = "progress";
+ field public static final String CATEGORY_PROMO = "promo";
+ field public static final String CATEGORY_RECOMMENDATION = "recommendation";
+ field public static final String CATEGORY_REMINDER = "reminder";
+ field public static final String CATEGORY_SERVICE = "service";
+ field public static final String CATEGORY_SOCIAL = "social";
+ field public static final String CATEGORY_STATUS = "status";
+ field public static final String CATEGORY_STOPWATCH = "stopwatch";
+ field public static final String CATEGORY_SYSTEM = "sys";
+ field public static final String CATEGORY_TRANSPORT = "transport";
+ field public static final String CATEGORY_WORKOUT = "workout";
+ field @ColorInt public static final int COLOR_DEFAULT = 0; // 0x0
+ field public static final int DEFAULT_ALL = -1; // 0xffffffff
+ field public static final int DEFAULT_LIGHTS = 4; // 0x4
+ field public static final int DEFAULT_SOUND = 1; // 0x1
+ field public static final int DEFAULT_VIBRATE = 2; // 0x2
+ field public static final String EXTRA_AUDIO_CONTENTS_URI = "android.audioContents";
+ field public static final String EXTRA_BACKGROUND_IMAGE_URI = "android.backgroundImageUri";
+ field public static final String EXTRA_BIG_TEXT = "android.bigText";
+ field public static final String EXTRA_CHANNEL_GROUP_ID = "android.intent.extra.CHANNEL_GROUP_ID";
+ field public static final String EXTRA_CHANNEL_ID = "android.intent.extra.CHANNEL_ID";
+ field public static final String EXTRA_CHRONOMETER_COUNT_DOWN = "android.chronometerCountDown";
+ field public static final String EXTRA_COLORIZED = "android.colorized";
+ field public static final String EXTRA_COMPACT_ACTIONS = "android.compactActions";
+ field public static final String EXTRA_COMPAT_TEMPLATE = "androidx.core.app.extra.COMPAT_TEMPLATE";
+ field public static final String EXTRA_CONVERSATION_TITLE = "android.conversationTitle";
+ field public static final String EXTRA_HIDDEN_CONVERSATION_TITLE = "android.hiddenConversationTitle";
+ field public static final String EXTRA_HISTORIC_MESSAGES = "android.messages.historic";
+ field public static final String EXTRA_INFO_TEXT = "android.infoText";
+ field public static final String EXTRA_IS_GROUP_CONVERSATION = "android.isGroupConversation";
+ field public static final String EXTRA_LARGE_ICON = "android.largeIcon";
+ field public static final String EXTRA_LARGE_ICON_BIG = "android.largeIcon.big";
+ field public static final String EXTRA_MEDIA_SESSION = "android.mediaSession";
+ field public static final String EXTRA_MESSAGES = "android.messages";
+ field public static final String EXTRA_MESSAGING_STYLE_USER = "android.messagingStyleUser";
+ field public static final String EXTRA_NOTIFICATION_ID = "android.intent.extra.NOTIFICATION_ID";
+ field public static final String EXTRA_NOTIFICATION_TAG = "android.intent.extra.NOTIFICATION_TAG";
+ field @Deprecated public static final String EXTRA_PEOPLE = "android.people";
+ field public static final String EXTRA_PEOPLE_LIST = "android.people.list";
+ field public static final String EXTRA_PICTURE = "android.picture";
+ field public static final String EXTRA_PROGRESS = "android.progress";
+ field public static final String EXTRA_PROGRESS_INDETERMINATE = "android.progressIndeterminate";
+ field public static final String EXTRA_PROGRESS_MAX = "android.progressMax";
+ field public static final String EXTRA_REMOTE_INPUT_HISTORY = "android.remoteInputHistory";
+ field public static final String EXTRA_SELF_DISPLAY_NAME = "android.selfDisplayName";
+ field public static final String EXTRA_SHOW_CHRONOMETER = "android.showChronometer";
+ field public static final String EXTRA_SHOW_WHEN = "android.showWhen";
+ field public static final String EXTRA_SMALL_ICON = "android.icon";
+ field public static final String EXTRA_SUB_TEXT = "android.subText";
+ field public static final String EXTRA_SUMMARY_TEXT = "android.summaryText";
+ field public static final String EXTRA_TEMPLATE = "android.template";
+ field public static final String EXTRA_TEXT = "android.text";
+ field public static final String EXTRA_TEXT_LINES = "android.textLines";
+ field public static final String EXTRA_TITLE = "android.title";
+ field public static final String EXTRA_TITLE_BIG = "android.title.big";
+ field public static final int FLAG_AUTO_CANCEL = 16; // 0x10
+ field public static final int FLAG_BUBBLE = 4096; // 0x1000
+ field public static final int FLAG_FOREGROUND_SERVICE = 64; // 0x40
+ field public static final int FLAG_GROUP_SUMMARY = 512; // 0x200
+ field @Deprecated public static final int FLAG_HIGH_PRIORITY = 128; // 0x80
+ field public static final int FLAG_INSISTENT = 4; // 0x4
+ field public static final int FLAG_LOCAL_ONLY = 256; // 0x100
+ field public static final int FLAG_NO_CLEAR = 32; // 0x20
+ field public static final int FLAG_ONGOING_EVENT = 2; // 0x2
+ field public static final int FLAG_ONLY_ALERT_ONCE = 8; // 0x8
+ field public static final int FLAG_SHOW_LIGHTS = 1; // 0x1
+ field public static final int GROUP_ALERT_ALL = 0; // 0x0
+ field public static final int GROUP_ALERT_CHILDREN = 2; // 0x2
+ field public static final int GROUP_ALERT_SUMMARY = 1; // 0x1
+ field public static final String GROUP_KEY_SILENT = "silent";
+ field public static final String INTENT_CATEGORY_NOTIFICATION_PREFERENCES = "android.intent.category.NOTIFICATION_PREFERENCES";
+ field public static final int PRIORITY_DEFAULT = 0; // 0x0
+ field public static final int PRIORITY_HIGH = 1; // 0x1
+ field public static final int PRIORITY_LOW = -1; // 0xffffffff
+ field public static final int PRIORITY_MAX = 2; // 0x2
+ field public static final int PRIORITY_MIN = -2; // 0xfffffffe
+ field public static final int STREAM_DEFAULT = -1; // 0xffffffff
+ field public static final int VISIBILITY_PRIVATE = 0; // 0x0
+ field public static final int VISIBILITY_PUBLIC = 1; // 0x1
+ field public static final int VISIBILITY_SECRET = -1; // 0xffffffff
+ }
+
+ public static class NotificationCompat.Action {
+ ctor public NotificationCompat.Action(int, CharSequence?, android.app.PendingIntent?);
+ ctor public NotificationCompat.Action(androidx.core.graphics.drawable.IconCompat?, CharSequence?, android.app.PendingIntent?);
+ method public android.app.PendingIntent? getActionIntent();
+ method public boolean getAllowGeneratedReplies();
+ method public androidx.core.app.RemoteInput![]? getDataOnlyRemoteInputs();
+ method public android.os.Bundle getExtras();
+ method @Deprecated public int getIcon();
+ method public androidx.core.graphics.drawable.IconCompat? getIconCompat();
+ method public androidx.core.app.RemoteInput![]? getRemoteInputs();
+ method @androidx.core.app.NotificationCompat.Action.SemanticAction public int getSemanticAction();
+ method public boolean getShowsUserInterface();
+ method public CharSequence? getTitle();
+ method public boolean isContextual();
+ field public static final int SEMANTIC_ACTION_ARCHIVE = 5; // 0x5
+ field public static final int SEMANTIC_ACTION_CALL = 10; // 0xa
+ field public static final int SEMANTIC_ACTION_DELETE = 4; // 0x4
+ field public static final int SEMANTIC_ACTION_MARK_AS_READ = 2; // 0x2
+ field public static final int SEMANTIC_ACTION_MARK_AS_UNREAD = 3; // 0x3
+ field public static final int SEMANTIC_ACTION_MUTE = 6; // 0x6
+ field public static final int SEMANTIC_ACTION_NONE = 0; // 0x0
+ field public static final int SEMANTIC_ACTION_REPLY = 1; // 0x1
+ field public static final int SEMANTIC_ACTION_THUMBS_DOWN = 9; // 0x9
+ field public static final int SEMANTIC_ACTION_THUMBS_UP = 8; // 0x8
+ field public static final int SEMANTIC_ACTION_UNMUTE = 7; // 0x7
+ field public android.app.PendingIntent! actionIntent;
+ field @Deprecated public int icon;
+ field public CharSequence! title;
+ }
+
+ public static final class NotificationCompat.Action.Builder {
+ ctor public NotificationCompat.Action.Builder(androidx.core.graphics.drawable.IconCompat?, CharSequence?, android.app.PendingIntent?);
+ ctor public NotificationCompat.Action.Builder(int, CharSequence?, android.app.PendingIntent?);
+ ctor public NotificationCompat.Action.Builder(androidx.core.app.NotificationCompat.Action);
+ method public androidx.core.app.NotificationCompat.Action.Builder addExtras(android.os.Bundle?);
+ method public androidx.core.app.NotificationCompat.Action.Builder addRemoteInput(androidx.core.app.RemoteInput?);
+ method public androidx.core.app.NotificationCompat.Action build();
+ method public androidx.core.app.NotificationCompat.Action.Builder extend(androidx.core.app.NotificationCompat.Action.Extender);
+ method public android.os.Bundle getExtras();
+ method public androidx.core.app.NotificationCompat.Action.Builder setAllowGeneratedReplies(boolean);
+ method public androidx.core.app.NotificationCompat.Action.Builder setContextual(boolean);
+ method public androidx.core.app.NotificationCompat.Action.Builder setSemanticAction(@androidx.core.app.NotificationCompat.Action.SemanticAction int);
+ method public androidx.core.app.NotificationCompat.Action.Builder setShowsUserInterface(boolean);
+ }
+
+ public static interface NotificationCompat.Action.Extender {
+ method public androidx.core.app.NotificationCompat.Action.Builder extend(androidx.core.app.NotificationCompat.Action.Builder);
+ }
+
+ @IntDef({androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_NONE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_REPLY, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_MARK_AS_READ, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_MARK_AS_UNREAD, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_DELETE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_ARCHIVE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_MUTE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_UNMUTE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_THUMBS_UP, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_THUMBS_DOWN, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_CALL}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface NotificationCompat.Action.SemanticAction {
+ }
+
+ public static final class NotificationCompat.Action.WearableExtender implements androidx.core.app.NotificationCompat.Action.Extender {
+ ctor public NotificationCompat.Action.WearableExtender();
+ ctor public NotificationCompat.Action.WearableExtender(androidx.core.app.NotificationCompat.Action);
+ method public androidx.core.app.NotificationCompat.Action.WearableExtender clone();
+ method public androidx.core.app.NotificationCompat.Action.Builder extend(androidx.core.app.NotificationCompat.Action.Builder);
+ method @Deprecated public CharSequence? getCancelLabel();
+ method @Deprecated public CharSequence? getConfirmLabel();
+ method public boolean getHintDisplayActionInline();
+ method public boolean getHintLaunchesActivity();
+ method @Deprecated public CharSequence? getInProgressLabel();
+ method public boolean isAvailableOffline();
+ method public androidx.core.app.NotificationCompat.Action.WearableExtender setAvailableOffline(boolean);
+ method @Deprecated public androidx.core.app.NotificationCompat.Action.WearableExtender setCancelLabel(CharSequence?);
+ method @Deprecated public androidx.core.app.NotificationCompat.Action.WearableExtender setConfirmLabel(CharSequence?);
+ method public androidx.core.app.NotificationCompat.Action.WearableExtender setHintDisplayActionInline(boolean);
+ method public androidx.core.app.NotificationCompat.Action.WearableExtender setHintLaunchesActivity(boolean);
+ method @Deprecated public androidx.core.app.NotificationCompat.Action.WearableExtender setInProgressLabel(CharSequence?);
+ }
+
+ public static class NotificationCompat.BigPictureStyle extends androidx.core.app.NotificationCompat.Style {
+ ctor public NotificationCompat.BigPictureStyle();
+ ctor public NotificationCompat.BigPictureStyle(androidx.core.app.NotificationCompat.Builder?);
+ method public androidx.core.app.NotificationCompat.BigPictureStyle bigLargeIcon(android.graphics.Bitmap?);
+ method public androidx.core.app.NotificationCompat.BigPictureStyle bigPicture(android.graphics.Bitmap?);
+ method public androidx.core.app.NotificationCompat.BigPictureStyle setBigContentTitle(CharSequence?);
+ method public androidx.core.app.NotificationCompat.BigPictureStyle setSummaryText(CharSequence?);
+ }
+
+ public static class NotificationCompat.BigTextStyle extends androidx.core.app.NotificationCompat.Style {
+ ctor public NotificationCompat.BigTextStyle();
+ ctor public NotificationCompat.BigTextStyle(androidx.core.app.NotificationCompat.Builder?);
+ method public androidx.core.app.NotificationCompat.BigTextStyle bigText(CharSequence?);
+ method public androidx.core.app.NotificationCompat.BigTextStyle setBigContentTitle(CharSequence?);
+ method public androidx.core.app.NotificationCompat.BigTextStyle setSummaryText(CharSequence?);
+ }
+
+ public static final class NotificationCompat.BubbleMetadata {
+ method public static androidx.core.app.NotificationCompat.BubbleMetadata? fromPlatform(android.app.Notification.BubbleMetadata?);
+ method public boolean getAutoExpandBubble();
+ method public android.app.PendingIntent? getDeleteIntent();
+ method @Dimension(unit=androidx.annotation.Dimension.DP) public int getDesiredHeight();
+ method @DimenRes public int getDesiredHeightResId();
+ method public androidx.core.graphics.drawable.IconCompat? getIcon();
+ method public android.app.PendingIntent? getIntent();
+ method public String? getShortcutId();
+ method public boolean isNotificationSuppressed();
+ method public static android.app.Notification.BubbleMetadata? toPlatform(androidx.core.app.NotificationCompat.BubbleMetadata?);
+ }
+
+ public static final class NotificationCompat.BubbleMetadata.Builder {
+ ctor @Deprecated public NotificationCompat.BubbleMetadata.Builder();
+ ctor @RequiresApi(30) public NotificationCompat.BubbleMetadata.Builder(String);
+ ctor public NotificationCompat.BubbleMetadata.Builder(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat);
+ method public androidx.core.app.NotificationCompat.BubbleMetadata build();
+ method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setAutoExpandBubble(boolean);
+ method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setDeleteIntent(android.app.PendingIntent?);
+ method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setDesiredHeight(@Dimension(unit=androidx.annotation.Dimension.DP) int);
+ method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setDesiredHeightResId(@DimenRes int);
+ method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setIcon(androidx.core.graphics.drawable.IconCompat);
+ method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setIntent(android.app.PendingIntent);
+ method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setSuppressNotification(boolean);
+ }
+
+ public static class NotificationCompat.Builder {
+ ctor @RequiresApi(19) public NotificationCompat.Builder(android.content.Context, android.app.Notification);
+ ctor public NotificationCompat.Builder(android.content.Context, String);
+ ctor @Deprecated public NotificationCompat.Builder(android.content.Context);
+ method public androidx.core.app.NotificationCompat.Builder addAction(int, CharSequence?, android.app.PendingIntent?);
+ method public androidx.core.app.NotificationCompat.Builder addAction(androidx.core.app.NotificationCompat.Action?);
+ method public androidx.core.app.NotificationCompat.Builder addExtras(android.os.Bundle?);
+ method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder addInvisibleAction(int, CharSequence?, android.app.PendingIntent?);
+ method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder addInvisibleAction(androidx.core.app.NotificationCompat.Action?);
+ method @Deprecated public androidx.core.app.NotificationCompat.Builder addPerson(String?);
+ method public androidx.core.app.NotificationCompat.Builder addPerson(androidx.core.app.Person?);
+ method public android.app.Notification build();
+ method public androidx.core.app.NotificationCompat.Builder clearActions();
+ method public androidx.core.app.NotificationCompat.Builder clearInvisibleActions();
+ method public androidx.core.app.NotificationCompat.Builder clearPeople();
+ method public android.widget.RemoteViews? createBigContentView();
+ method public android.widget.RemoteViews? createContentView();
+ method public android.widget.RemoteViews? createHeadsUpContentView();
+ method public androidx.core.app.NotificationCompat.Builder extend(androidx.core.app.NotificationCompat.Extender);
+ method public android.os.Bundle getExtras();
+ method @Deprecated public android.app.Notification getNotification();
+ method protected static CharSequence? limitCharSequenceLength(CharSequence?);
+ method public androidx.core.app.NotificationCompat.Builder setAllowSystemGeneratedContextualActions(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setAutoCancel(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setBadgeIconType(int);
+ method public androidx.core.app.NotificationCompat.Builder setBubbleMetadata(androidx.core.app.NotificationCompat.BubbleMetadata?);
+ method public androidx.core.app.NotificationCompat.Builder setCategory(String?);
+ method public androidx.core.app.NotificationCompat.Builder setChannelId(String);
+ method @RequiresApi(24) public androidx.core.app.NotificationCompat.Builder setChronometerCountDown(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setColor(@ColorInt int);
+ method public androidx.core.app.NotificationCompat.Builder setColorized(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setContent(android.widget.RemoteViews?);
+ method public androidx.core.app.NotificationCompat.Builder setContentInfo(CharSequence?);
+ method public androidx.core.app.NotificationCompat.Builder setContentIntent(android.app.PendingIntent?);
+ method public androidx.core.app.NotificationCompat.Builder setContentText(CharSequence?);
+ method public androidx.core.app.NotificationCompat.Builder setContentTitle(CharSequence?);
+ method public androidx.core.app.NotificationCompat.Builder setCustomBigContentView(android.widget.RemoteViews?);
+ method public androidx.core.app.NotificationCompat.Builder setCustomContentView(android.widget.RemoteViews?);
+ method public androidx.core.app.NotificationCompat.Builder setCustomHeadsUpContentView(android.widget.RemoteViews?);
+ method public androidx.core.app.NotificationCompat.Builder setDefaults(int);
+ method public androidx.core.app.NotificationCompat.Builder setDeleteIntent(android.app.PendingIntent?);
+ method public androidx.core.app.NotificationCompat.Builder setExtras(android.os.Bundle?);
+ method public androidx.core.app.NotificationCompat.Builder setFullScreenIntent(android.app.PendingIntent?, boolean);
+ method public androidx.core.app.NotificationCompat.Builder setGroup(String?);
+ method public androidx.core.app.NotificationCompat.Builder setGroupAlertBehavior(int);
+ method public androidx.core.app.NotificationCompat.Builder setGroupSummary(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setLargeIcon(android.graphics.Bitmap?);
+ method public androidx.core.app.NotificationCompat.Builder setLights(@ColorInt int, int, int);
+ method public androidx.core.app.NotificationCompat.Builder setLocalOnly(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setLocusId(androidx.core.content.LocusIdCompat?);
+ method @Deprecated public androidx.core.app.NotificationCompat.Builder setNotificationSilent();
+ method public androidx.core.app.NotificationCompat.Builder setNumber(int);
+ method public androidx.core.app.NotificationCompat.Builder setOngoing(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setOnlyAlertOnce(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setPriority(int);
+ method public androidx.core.app.NotificationCompat.Builder setProgress(int, int, boolean);
+ method public androidx.core.app.NotificationCompat.Builder setPublicVersion(android.app.Notification?);
+ method public androidx.core.app.NotificationCompat.Builder setRemoteInputHistory(CharSequence![]?);
+ method public androidx.core.app.NotificationCompat.Builder setSettingsText(CharSequence?);
+ method public androidx.core.app.NotificationCompat.Builder setShortcutId(String?);
+ method public androidx.core.app.NotificationCompat.Builder setShortcutInfo(androidx.core.content.pm.ShortcutInfoCompat?);
+ method public androidx.core.app.NotificationCompat.Builder setShowWhen(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setSilent(boolean);
+ method @RequiresApi(23) public androidx.core.app.NotificationCompat.Builder setSmallIcon(androidx.core.graphics.drawable.IconCompat);
+ method public androidx.core.app.NotificationCompat.Builder setSmallIcon(int);
+ method public androidx.core.app.NotificationCompat.Builder setSmallIcon(int, int);
+ method public androidx.core.app.NotificationCompat.Builder setSortKey(String?);
+ method public androidx.core.app.NotificationCompat.Builder setSound(android.net.Uri?);
+ method public androidx.core.app.NotificationCompat.Builder setSound(android.net.Uri?, int);
+ method public androidx.core.app.NotificationCompat.Builder setStyle(androidx.core.app.NotificationCompat.Style?);
+ method public androidx.core.app.NotificationCompat.Builder setSubText(CharSequence?);
+ method public androidx.core.app.NotificationCompat.Builder setTicker(CharSequence?);
+ method @Deprecated public androidx.core.app.NotificationCompat.Builder setTicker(CharSequence?, android.widget.RemoteViews?);
+ method public androidx.core.app.NotificationCompat.Builder setTimeoutAfter(long);
+ method public androidx.core.app.NotificationCompat.Builder setUsesChronometer(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setVibrate(long[]?);
+ method public androidx.core.app.NotificationCompat.Builder setVisibility(int);
+ method public androidx.core.app.NotificationCompat.Builder setWhen(long);
+ field @Deprecated public java.util.ArrayList<java.lang.String!>! mPeople;
+ }
+
+ public static final class NotificationCompat.CarExtender implements androidx.core.app.NotificationCompat.Extender {
+ ctor public NotificationCompat.CarExtender();
+ ctor public NotificationCompat.CarExtender(android.app.Notification);
+ method public androidx.core.app.NotificationCompat.Builder extend(androidx.core.app.NotificationCompat.Builder);
+ method @ColorInt public int getColor();
+ method public android.graphics.Bitmap? getLargeIcon();
+ method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation? getUnreadConversation();
+ method public androidx.core.app.NotificationCompat.CarExtender setColor(@ColorInt int);
+ method public androidx.core.app.NotificationCompat.CarExtender setLargeIcon(android.graphics.Bitmap?);
+ method @Deprecated public androidx.core.app.NotificationCompat.CarExtender setUnreadConversation(androidx.core.app.NotificationCompat.CarExtender.UnreadConversation?);
+ }
+
+ @Deprecated public static class NotificationCompat.CarExtender.UnreadConversation {
+ method @Deprecated public long getLatestTimestamp();
+ method @Deprecated public String![]? getMessages();
+ method @Deprecated public String? getParticipant();
+ method @Deprecated public String![]? getParticipants();
+ method @Deprecated public android.app.PendingIntent? getReadPendingIntent();
+ method @Deprecated public androidx.core.app.RemoteInput? getRemoteInput();
+ method @Deprecated public android.app.PendingIntent? getReplyPendingIntent();
+ }
+
+ @Deprecated public static class NotificationCompat.CarExtender.UnreadConversation.Builder {
+ ctor @Deprecated public NotificationCompat.CarExtender.UnreadConversation.Builder(String);
+ method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation.Builder addMessage(String?);
+ method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation build();
+ method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation.Builder setLatestTimestamp(long);
+ method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation.Builder setReadPendingIntent(android.app.PendingIntent?);
+ method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation.Builder setReplyAction(android.app.PendingIntent?, androidx.core.app.RemoteInput?);
+ }
+
+ public static class NotificationCompat.DecoratedCustomViewStyle extends androidx.core.app.NotificationCompat.Style {
+ ctor public NotificationCompat.DecoratedCustomViewStyle();
+ }
+
+ public static interface NotificationCompat.Extender {
+ method public androidx.core.app.NotificationCompat.Builder extend(androidx.core.app.NotificationCompat.Builder);
+ }
+
+ public static class NotificationCompat.InboxStyle extends androidx.core.app.NotificationCompat.Style {
+ ctor public NotificationCompat.InboxStyle();
+ ctor public NotificationCompat.InboxStyle(androidx.core.app.NotificationCompat.Builder?);
+ method public androidx.core.app.NotificationCompat.InboxStyle addLine(CharSequence?);
+ method public androidx.core.app.NotificationCompat.InboxStyle setBigContentTitle(CharSequence?);
+ method public androidx.core.app.NotificationCompat.InboxStyle setSummaryText(CharSequence?);
+ }
+
+ public static class NotificationCompat.MessagingStyle extends androidx.core.app.NotificationCompat.Style {
+ ctor @Deprecated public NotificationCompat.MessagingStyle(CharSequence);
+ ctor public NotificationCompat.MessagingStyle(androidx.core.app.Person);
+ method public void addCompatExtras(android.os.Bundle);
+ method public androidx.core.app.NotificationCompat.MessagingStyle addHistoricMessage(androidx.core.app.NotificationCompat.MessagingStyle.Message?);
+ method @Deprecated public androidx.core.app.NotificationCompat.MessagingStyle addMessage(CharSequence?, long, CharSequence?);
+ method public androidx.core.app.NotificationCompat.MessagingStyle addMessage(CharSequence?, long, androidx.core.app.Person?);
+ method public androidx.core.app.NotificationCompat.MessagingStyle addMessage(androidx.core.app.NotificationCompat.MessagingStyle.Message?);
+ method public static androidx.core.app.NotificationCompat.MessagingStyle? extractMessagingStyleFromNotification(android.app.Notification);
+ method public CharSequence? getConversationTitle();
+ method public java.util.List<androidx.core.app.NotificationCompat.MessagingStyle.Message!> getHistoricMessages();
+ method public java.util.List<androidx.core.app.NotificationCompat.MessagingStyle.Message!> getMessages();
+ method public androidx.core.app.Person getUser();
+ method @Deprecated public CharSequence? getUserDisplayName();
+ method public boolean isGroupConversation();
+ method public androidx.core.app.NotificationCompat.MessagingStyle setConversationTitle(CharSequence?);
+ method public androidx.core.app.NotificationCompat.MessagingStyle setGroupConversation(boolean);
+ field public static final int MAXIMUM_RETAINED_MESSAGES = 25; // 0x19
+ }
+
+ public static final class NotificationCompat.MessagingStyle.Message {
+ ctor public NotificationCompat.MessagingStyle.Message(CharSequence?, long, androidx.core.app.Person?);
+ ctor @Deprecated public NotificationCompat.MessagingStyle.Message(CharSequence?, long, CharSequence?);
+ method public String? getDataMimeType();
+ method public android.net.Uri? getDataUri();
+ method public android.os.Bundle getExtras();
+ method public androidx.core.app.Person? getPerson();
+ method @Deprecated public CharSequence? getSender();
+ method public CharSequence? getText();
+ method public long getTimestamp();
+ method public androidx.core.app.NotificationCompat.MessagingStyle.Message setData(String?, android.net.Uri?);
+ }
+
+ public abstract static class NotificationCompat.Style {
+ ctor public NotificationCompat.Style();
+ method public android.app.Notification? build();
+ method public void setBuilder(androidx.core.app.NotificationCompat.Builder?);
+ }
+
+ public static final class NotificationCompat.WearableExtender implements androidx.core.app.NotificationCompat.Extender {
+ ctor public NotificationCompat.WearableExtender();
+ ctor public NotificationCompat.WearableExtender(android.app.Notification);
+ method public androidx.core.app.NotificationCompat.WearableExtender addAction(androidx.core.app.NotificationCompat.Action);
+ method public androidx.core.app.NotificationCompat.WearableExtender addActions(java.util.List<androidx.core.app.NotificationCompat.Action!>);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender addPage(android.app.Notification);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender addPages(java.util.List<android.app.Notification!>);
+ method public androidx.core.app.NotificationCompat.WearableExtender clearActions();
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender clearPages();
+ method public androidx.core.app.NotificationCompat.WearableExtender clone();
+ method public androidx.core.app.NotificationCompat.Builder extend(androidx.core.app.NotificationCompat.Builder);
+ method public java.util.List<androidx.core.app.NotificationCompat.Action!> getActions();
+ method @Deprecated public android.graphics.Bitmap? getBackground();
+ method public String? getBridgeTag();
+ method public int getContentAction();
+ method @Deprecated public int getContentIcon();
+ method @Deprecated public int getContentIconGravity();
+ method public boolean getContentIntentAvailableOffline();
+ method @Deprecated public int getCustomContentHeight();
+ method @Deprecated public int getCustomSizePreset();
+ method public String? getDismissalId();
+ method @Deprecated public android.app.PendingIntent? getDisplayIntent();
+ method @Deprecated public int getGravity();
+ method @Deprecated public boolean getHintAmbientBigPicture();
+ method @Deprecated public boolean getHintAvoidBackgroundClipping();
+ method public boolean getHintContentIntentLaunchesActivity();
+ method @Deprecated public boolean getHintHideIcon();
+ method @Deprecated public int getHintScreenTimeout();
+ method @Deprecated public boolean getHintShowBackgroundOnly();
+ method @Deprecated public java.util.List<android.app.Notification!> getPages();
+ method public boolean getStartScrollBottom();
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setBackground(android.graphics.Bitmap?);
+ method public androidx.core.app.NotificationCompat.WearableExtender setBridgeTag(String?);
+ method public androidx.core.app.NotificationCompat.WearableExtender setContentAction(int);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setContentIcon(int);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setContentIconGravity(int);
+ method public androidx.core.app.NotificationCompat.WearableExtender setContentIntentAvailableOffline(boolean);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setCustomContentHeight(int);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setCustomSizePreset(int);
+ method public androidx.core.app.NotificationCompat.WearableExtender setDismissalId(String?);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setDisplayIntent(android.app.PendingIntent?);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setGravity(int);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setHintAmbientBigPicture(boolean);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setHintAvoidBackgroundClipping(boolean);
+ method public androidx.core.app.NotificationCompat.WearableExtender setHintContentIntentLaunchesActivity(boolean);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setHintHideIcon(boolean);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setHintScreenTimeout(int);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setHintShowBackgroundOnly(boolean);
+ method public androidx.core.app.NotificationCompat.WearableExtender setStartScrollBottom(boolean);
+ field @Deprecated public static final int SCREEN_TIMEOUT_LONG = -1; // 0xffffffff
+ field @Deprecated public static final int SCREEN_TIMEOUT_SHORT = 0; // 0x0
+ field @Deprecated public static final int SIZE_DEFAULT = 0; // 0x0
+ field @Deprecated public static final int SIZE_FULL_SCREEN = 5; // 0x5
+ field @Deprecated public static final int SIZE_LARGE = 4; // 0x4
+ field @Deprecated public static final int SIZE_MEDIUM = 3; // 0x3
+ field @Deprecated public static final int SIZE_SMALL = 2; // 0x2
+ field @Deprecated public static final int SIZE_XSMALL = 1; // 0x1
+ field public static final int UNSET_ACTION_INDEX = -1; // 0xffffffff
+ }
+
+ public final class NotificationCompatExtras {
+ field public static final String EXTRA_ACTION_EXTRAS = "android.support.actionExtras";
+ field public static final String EXTRA_GROUP_KEY = "android.support.groupKey";
+ field public static final String EXTRA_GROUP_SUMMARY = "android.support.isGroupSummary";
+ field public static final String EXTRA_LOCAL_ONLY = "android.support.localOnly";
+ field public static final String EXTRA_REMOTE_INPUTS = "android.support.remoteInputs";
+ field public static final String EXTRA_SORT_KEY = "android.support.sortKey";
+ }
+
+ public abstract class NotificationCompatSideChannelService extends android.app.Service {
+ ctor public NotificationCompatSideChannelService();
+ method public abstract void cancel(String!, int, String!);
+ method public abstract void cancelAll(String!);
+ method public abstract void notify(String!, int, String!, android.app.Notification!);
+ method public android.os.IBinder! onBind(android.content.Intent!);
+ }
+
+ public final class NotificationManagerCompat {
+ method public boolean areNotificationsEnabled();
+ method public void cancel(int);
+ method public void cancel(String?, int);
+ method public void cancelAll();
+ method public void createNotificationChannel(android.app.NotificationChannel);
+ method public void createNotificationChannel(androidx.core.app.NotificationChannelCompat);
+ method public void createNotificationChannelGroup(android.app.NotificationChannelGroup);
+ method public void createNotificationChannelGroup(androidx.core.app.NotificationChannelGroupCompat);
+ method public void createNotificationChannelGroups(java.util.List<android.app.NotificationChannelGroup!>);
+ method public void createNotificationChannelGroupsCompat(java.util.List<androidx.core.app.NotificationChannelGroupCompat!>);
+ method public void createNotificationChannels(java.util.List<android.app.NotificationChannel!>);
+ method public void createNotificationChannelsCompat(java.util.List<androidx.core.app.NotificationChannelCompat!>);
+ method public void deleteNotificationChannel(String);
+ method public void deleteNotificationChannelGroup(String);
+ method public void deleteUnlistedNotificationChannels(java.util.Collection<java.lang.String!>);
+ method public static androidx.core.app.NotificationManagerCompat from(android.content.Context);
+ method public static java.util.Set<java.lang.String!> getEnabledListenerPackages(android.content.Context);
+ method public int getImportance();
+ method public android.app.NotificationChannel? getNotificationChannel(String);
+ method public android.app.NotificationChannel? getNotificationChannel(String, String);
+ method public androidx.core.app.NotificationChannelCompat? getNotificationChannelCompat(String);
+ method public androidx.core.app.NotificationChannelCompat? getNotificationChannelCompat(String, String);
+ method public android.app.NotificationChannelGroup? getNotificationChannelGroup(String);
+ method public androidx.core.app.NotificationChannelGroupCompat? getNotificationChannelGroupCompat(String);
+ method public java.util.List<android.app.NotificationChannelGroup!> getNotificationChannelGroups();
+ method public java.util.List<androidx.core.app.NotificationChannelGroupCompat!> getNotificationChannelGroupsCompat();
+ method public java.util.List<android.app.NotificationChannel!> getNotificationChannels();
+ method public java.util.List<androidx.core.app.NotificationChannelCompat!> getNotificationChannelsCompat();
+ method public void notify(int, android.app.Notification);
+ method public void notify(String?, int, android.app.Notification);
+ field public static final String ACTION_BIND_SIDE_CHANNEL = "android.support.BIND_NOTIFICATION_SIDE_CHANNEL";
+ field public static final String EXTRA_USE_SIDE_CHANNEL = "android.support.useSideChannel";
+ field public static final int IMPORTANCE_DEFAULT = 3; // 0x3
+ field public static final int IMPORTANCE_HIGH = 4; // 0x4
+ field public static final int IMPORTANCE_LOW = 2; // 0x2
+ field public static final int IMPORTANCE_MAX = 5; // 0x5
+ field public static final int IMPORTANCE_MIN = 1; // 0x1
+ field public static final int IMPORTANCE_NONE = 0; // 0x0
+ field public static final int IMPORTANCE_UNSPECIFIED = -1000; // 0xfffffc18
+ }
+
+ public class Person {
+ method public static androidx.core.app.Person fromBundle(android.os.Bundle);
+ method public androidx.core.graphics.drawable.IconCompat? getIcon();
+ method public String? getKey();
+ method public CharSequence? getName();
+ method public String? getUri();
+ method public boolean isBot();
+ method public boolean isImportant();
+ method public androidx.core.app.Person.Builder toBuilder();
+ method public android.os.Bundle toBundle();
+ }
+
+ public static class Person.Builder {
+ ctor public Person.Builder();
+ method public androidx.core.app.Person build();
+ method public androidx.core.app.Person.Builder setBot(boolean);
+ method public androidx.core.app.Person.Builder setIcon(androidx.core.graphics.drawable.IconCompat?);
+ method public androidx.core.app.Person.Builder setImportant(boolean);
+ method public androidx.core.app.Person.Builder setKey(String?);
+ method public androidx.core.app.Person.Builder setName(CharSequence?);
+ method public androidx.core.app.Person.Builder setUri(String?);
+ }
+
+ public final class RemoteActionCompat implements androidx.versionedparcelable.VersionedParcelable {
+ ctor public RemoteActionCompat(androidx.core.graphics.drawable.IconCompat, CharSequence, CharSequence, android.app.PendingIntent);
+ ctor public RemoteActionCompat(androidx.core.app.RemoteActionCompat);
+ method @RequiresApi(26) public static androidx.core.app.RemoteActionCompat createFromRemoteAction(android.app.RemoteAction);
+ method public android.app.PendingIntent getActionIntent();
+ method public CharSequence getContentDescription();
+ method public androidx.core.graphics.drawable.IconCompat getIcon();
+ method public CharSequence getTitle();
+ method public boolean isEnabled();
+ method public void setEnabled(boolean);
+ method public void setShouldShowIcon(boolean);
+ method public boolean shouldShowIcon();
+ method @RequiresApi(26) public android.app.RemoteAction toRemoteAction();
+ }
+
+ public final class RemoteInput {
+ method public static void addDataResultToIntent(androidx.core.app.RemoteInput!, android.content.Intent!, java.util.Map<java.lang.String!,android.net.Uri!>!);
+ method public static void addResultsToIntent(androidx.core.app.RemoteInput![]!, android.content.Intent!, android.os.Bundle!);
+ method public boolean getAllowFreeFormInput();
+ method public java.util.Set<java.lang.String!>! getAllowedDataTypes();
+ method public CharSequence![]! getChoices();
+ method public static java.util.Map<java.lang.String!,android.net.Uri!>! getDataResultsFromIntent(android.content.Intent!, String!);
+ method public int getEditChoicesBeforeSending();
+ method public android.os.Bundle! getExtras();
+ method public CharSequence! getLabel();
+ method public String! getResultKey();
+ method public static android.os.Bundle! getResultsFromIntent(android.content.Intent!);
+ method public static int getResultsSource(android.content.Intent);
+ method public boolean isDataOnly();
+ method public static void setResultsSource(android.content.Intent, int);
+ field public static final int EDIT_CHOICES_BEFORE_SENDING_AUTO = 0; // 0x0
+ field public static final int EDIT_CHOICES_BEFORE_SENDING_DISABLED = 1; // 0x1
+ field public static final int EDIT_CHOICES_BEFORE_SENDING_ENABLED = 2; // 0x2
+ field public static final String EXTRA_RESULTS_DATA = "android.remoteinput.resultsData";
+ field public static final String RESULTS_CLIP_LABEL = "android.remoteinput.results";
+ field public static final int SOURCE_CHOICE = 1; // 0x1
+ field public static final int SOURCE_FREE_FORM_INPUT = 0; // 0x0
+ }
+
+ public static final class RemoteInput.Builder {
+ ctor public RemoteInput.Builder(String);
+ method public androidx.core.app.RemoteInput.Builder addExtras(android.os.Bundle);
+ method public androidx.core.app.RemoteInput build();
+ method public android.os.Bundle getExtras();
+ method public androidx.core.app.RemoteInput.Builder setAllowDataType(String, boolean);
+ method public androidx.core.app.RemoteInput.Builder setAllowFreeFormInput(boolean);
+ method public androidx.core.app.RemoteInput.Builder setChoices(CharSequence![]?);
+ method public androidx.core.app.RemoteInput.Builder setEditChoicesBeforeSending(int);
+ method public androidx.core.app.RemoteInput.Builder setLabel(CharSequence?);
+ }
+
+ public final class ServiceCompat {
+ method public static void stopForeground(android.app.Service, int);
+ field public static final int START_STICKY = 1; // 0x1
+ field public static final int STOP_FOREGROUND_DETACH = 2; // 0x2
+ field public static final int STOP_FOREGROUND_REMOVE = 1; // 0x1
+ }
+
+ public final class ShareCompat {
+ method @Deprecated public static void configureMenuItem(android.view.MenuItem, androidx.core.app.ShareCompat.IntentBuilder);
+ method @Deprecated public static void configureMenuItem(android.view.Menu, @IdRes int, androidx.core.app.ShareCompat.IntentBuilder);
+ method public static android.content.ComponentName? getCallingActivity(android.app.Activity);
+ method public static String? getCallingPackage(android.app.Activity);
+ field public static final String EXTRA_CALLING_ACTIVITY = "androidx.core.app.EXTRA_CALLING_ACTIVITY";
+ field public static final String EXTRA_CALLING_ACTIVITY_INTEROP = "android.support.v4.app.EXTRA_CALLING_ACTIVITY";
+ field public static final String EXTRA_CALLING_PACKAGE = "androidx.core.app.EXTRA_CALLING_PACKAGE";
+ field public static final String EXTRA_CALLING_PACKAGE_INTEROP = "android.support.v4.app.EXTRA_CALLING_PACKAGE";
+ }
+
+ public static class ShareCompat.IntentBuilder {
+ ctor public ShareCompat.IntentBuilder(android.content.Context);
+ method public androidx.core.app.ShareCompat.IntentBuilder addEmailBcc(String);
+ method public androidx.core.app.ShareCompat.IntentBuilder addEmailBcc(String![]);
+ method public androidx.core.app.ShareCompat.IntentBuilder addEmailCc(String);
+ method public androidx.core.app.ShareCompat.IntentBuilder addEmailCc(String![]);
+ method public androidx.core.app.ShareCompat.IntentBuilder addEmailTo(String);
+ method public androidx.core.app.ShareCompat.IntentBuilder addEmailTo(String![]);
+ method public androidx.core.app.ShareCompat.IntentBuilder addStream(android.net.Uri);
+ method public android.content.Intent createChooserIntent();
+ method @Deprecated public static androidx.core.app.ShareCompat.IntentBuilder from(android.app.Activity);
+ method public android.content.Intent getIntent();
+ method public androidx.core.app.ShareCompat.IntentBuilder setChooserTitle(CharSequence?);
+ method public androidx.core.app.ShareCompat.IntentBuilder setChooserTitle(@StringRes int);
+ method public androidx.core.app.ShareCompat.IntentBuilder setEmailBcc(String![]?);
+ method public androidx.core.app.ShareCompat.IntentBuilder setEmailCc(String![]?);
+ method public androidx.core.app.ShareCompat.IntentBuilder setEmailTo(String![]?);
+ method public androidx.core.app.ShareCompat.IntentBuilder setHtmlText(String?);
+ method public androidx.core.app.ShareCompat.IntentBuilder setStream(android.net.Uri?);
+ method public androidx.core.app.ShareCompat.IntentBuilder setSubject(String?);
+ method public androidx.core.app.ShareCompat.IntentBuilder setText(CharSequence?);
+ method public androidx.core.app.ShareCompat.IntentBuilder setType(String?);
+ method public void startChooser();
+ }
+
+ public static class ShareCompat.IntentReader {
+ ctor public ShareCompat.IntentReader(android.app.Activity);
+ ctor public ShareCompat.IntentReader(android.content.Context, android.content.Intent);
+ method @Deprecated public static androidx.core.app.ShareCompat.IntentReader from(android.app.Activity);
+ method public android.content.ComponentName? getCallingActivity();
+ method public android.graphics.drawable.Drawable? getCallingActivityIcon();
+ method public android.graphics.drawable.Drawable? getCallingApplicationIcon();
+ method public CharSequence? getCallingApplicationLabel();
+ method public String? getCallingPackage();
+ method public String![]? getEmailBcc();
+ method public String![]? getEmailCc();
+ method public String![]? getEmailTo();
+ method public String? getHtmlText();
+ method public android.net.Uri? getStream();
+ method public android.net.Uri? getStream(int);
+ method public int getStreamCount();
+ method public String? getSubject();
+ method public CharSequence? getText();
+ method public String? getType();
+ method public boolean isMultipleShare();
+ method public boolean isShareIntent();
+ method public boolean isSingleShare();
+ }
+
+ public abstract class SharedElementCallback {
+ ctor public SharedElementCallback();
+ method public android.os.Parcelable! onCaptureSharedElementSnapshot(android.view.View!, android.graphics.Matrix!, android.graphics.RectF!);
+ method public android.view.View! onCreateSnapshotView(android.content.Context!, android.os.Parcelable!);
+ method public void onMapSharedElements(java.util.List<java.lang.String!>!, java.util.Map<java.lang.String!,android.view.View!>!);
+ method public void onRejectSharedElements(java.util.List<android.view.View!>!);
+ method public void onSharedElementEnd(java.util.List<java.lang.String!>!, java.util.List<android.view.View!>!, java.util.List<android.view.View!>!);
+ method public void onSharedElementStart(java.util.List<java.lang.String!>!, java.util.List<android.view.View!>!, java.util.List<android.view.View!>!);
+ method public void onSharedElementsArrived(java.util.List<java.lang.String!>!, java.util.List<android.view.View!>!, androidx.core.app.SharedElementCallback.OnSharedElementsReadyListener!);
+ }
+
+ public static interface SharedElementCallback.OnSharedElementsReadyListener {
+ method public void onSharedElementsReady();
+ }
+
+ public final class TaskStackBuilder implements java.lang.Iterable<android.content.Intent> {
+ method public androidx.core.app.TaskStackBuilder addNextIntent(android.content.Intent);
+ method public androidx.core.app.TaskStackBuilder addNextIntentWithParentStack(android.content.Intent);
+ method public androidx.core.app.TaskStackBuilder addParentStack(android.app.Activity);
+ method public androidx.core.app.TaskStackBuilder addParentStack(Class<?>);
+ method public androidx.core.app.TaskStackBuilder! addParentStack(android.content.ComponentName!);
+ method public static androidx.core.app.TaskStackBuilder create(android.content.Context);
+ method public android.content.Intent? editIntentAt(int);
+ method @Deprecated public static androidx.core.app.TaskStackBuilder! from(android.content.Context!);
+ method @Deprecated public android.content.Intent! getIntent(int);
+ method public int getIntentCount();
+ method public android.content.Intent![] getIntents();
+ method public android.app.PendingIntent? getPendingIntent(int, int);
+ method public android.app.PendingIntent? getPendingIntent(int, int, android.os.Bundle?);
+ method @Deprecated public java.util.Iterator<android.content.Intent!>! iterator();
+ method public void startActivities();
+ method public void startActivities(android.os.Bundle?);
+ }
+
+ public static interface TaskStackBuilder.SupportParentable {
+ method public android.content.Intent? getSupportParentActivityIntent();
+ }
+
+}
+
+package androidx.core.content {
+
+ public final class ContentProviderCompat {
+ method public static android.content.Context requireContext(android.content.ContentProvider);
+ }
+
+ public final class ContentResolverCompat {
+ method public static android.database.Cursor! query(android.content.ContentResolver!, android.net.Uri!, String![]!, String!, String![]!, String!, androidx.core.os.CancellationSignal!);
+ }
+
+ public class ContextCompat {
+ ctor protected ContextCompat();
+ method public static int checkSelfPermission(android.content.Context, String);
+ method public static android.content.Context? createDeviceProtectedStorageContext(android.content.Context);
+ method public static java.io.File! getCodeCacheDir(android.content.Context);
+ method @ColorInt public static int getColor(android.content.Context, @ColorRes int);
+ method public static android.content.res.ColorStateList? getColorStateList(android.content.Context, @ColorRes int);
+ method public static java.io.File? getDataDir(android.content.Context);
+ method public static android.graphics.drawable.Drawable? getDrawable(android.content.Context, @DrawableRes int);
+ method public static java.io.File![] getExternalCacheDirs(android.content.Context);
+ method public static java.io.File![] getExternalFilesDirs(android.content.Context, String?);
+ method public static java.util.concurrent.Executor! getMainExecutor(android.content.Context!);
+ method public static java.io.File? getNoBackupFilesDir(android.content.Context);
+ method public static java.io.File![] getObbDirs(android.content.Context);
+ method public static <T> T? getSystemService(android.content.Context, Class<T!>);
+ method public static String? getSystemServiceName(android.content.Context, Class<?>);
+ method public static boolean isDeviceProtectedStorage(android.content.Context);
+ method public static boolean startActivities(android.content.Context, android.content.Intent![]);
+ method public static boolean startActivities(android.content.Context, android.content.Intent![], android.os.Bundle?);
+ method public static void startActivity(android.content.Context, android.content.Intent, android.os.Bundle?);
+ method public static void startForegroundService(android.content.Context, android.content.Intent);
+ }
+
+ public class FileProvider extends android.content.ContentProvider {
+ ctor public FileProvider();
+ method public int delete(android.net.Uri, String?, String![]?);
+ method public String! getType(android.net.Uri);
+ method public static android.net.Uri! getUriForFile(android.content.Context, String, java.io.File);
+ method public static android.net.Uri getUriForFile(android.content.Context, String, java.io.File, String);
+ method public android.net.Uri! insert(android.net.Uri, android.content.ContentValues!);
+ method public boolean onCreate();
+ method public android.database.Cursor! query(android.net.Uri, String![]?, String?, String![]?, String?);
+ method public int update(android.net.Uri, android.content.ContentValues!, String?, String![]?);
+ }
+
+ public final class IntentCompat {
+ method public static android.content.Intent makeMainSelectorActivity(String, String);
+ field public static final String ACTION_CREATE_REMINDER = "android.intent.action.CREATE_REMINDER";
+ field public static final String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER";
+ field public static final String EXTRA_HTML_TEXT = "android.intent.extra.HTML_TEXT";
+ field public static final String EXTRA_START_PLAYBACK = "android.intent.extra.START_PLAYBACK";
+ field public static final String EXTRA_TIME = "android.intent.extra.TIME";
+ }
+
+ public final class LocusIdCompat {
+ ctor public LocusIdCompat(String);
+ method public String getId();
+ method @RequiresApi(29) public android.content.LocusId toLocusId();
+ method @RequiresApi(29) public static androidx.core.content.LocusIdCompat toLocusIdCompat(android.content.LocusId);
+ }
+
+ public final class MimeTypeFilter {
+ method public static boolean matches(String?, String);
+ method public static String? matches(String?, String![]);
+ method public static String? matches(String![]?, String);
+ method public static String![] matchesMany(String![]?, String);
+ }
+
+ public final class PermissionChecker {
+ method public static int checkCallingOrSelfPermission(android.content.Context, String);
+ method public static int checkCallingPermission(android.content.Context, String, String?);
+ method public static int checkPermission(android.content.Context, String, int, int, String?);
+ method public static int checkSelfPermission(android.content.Context, String);
+ field public static final int PERMISSION_DENIED = -1; // 0xffffffff
+ field public static final int PERMISSION_DENIED_APP_OP = -2; // 0xfffffffe
+ field public static final int PERMISSION_GRANTED = 0; // 0x0
+ }
+
+ @Deprecated public final class SharedPreferencesCompat {
+ }
+
+ @Deprecated public static final class SharedPreferencesCompat.EditorCompat {
+ method @Deprecated public void apply(android.content.SharedPreferences.Editor);
+ method @Deprecated public static androidx.core.content.SharedPreferencesCompat.EditorCompat! getInstance();
+ }
+
+}
+
+package androidx.core.content.pm {
+
+ @Deprecated public final class ActivityInfoCompat {
+ field @Deprecated public static final int CONFIG_UI_MODE = 512; // 0x200
+ }
+
+ public final class PackageInfoCompat {
+ method public static long getLongVersionCode(android.content.pm.PackageInfo);
+ method public static java.util.List<android.content.pm.Signature!> getSignatures(android.content.pm.PackageManager, String) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public static boolean hasSignatures(android.content.pm.PackageManager, String, @Size(min=1) java.util.Map<byte[]!,java.lang.Integer!>, boolean) throws android.content.pm.PackageManager.NameNotFoundException;
+ }
+
+ public final class PermissionInfoCompat {
+ method public static int getProtection(android.content.pm.PermissionInfo);
+ method public static int getProtectionFlags(android.content.pm.PermissionInfo);
+ }
+
+ public class ShortcutInfoCompat {
+ method public android.content.ComponentName? getActivity();
+ method public java.util.Set<java.lang.String!>? getCategories();
+ method public CharSequence? getDisabledMessage();
+ method public int getDisabledReason();
+ method public android.os.PersistableBundle? getExtras();
+ method public String getId();
+ method public android.content.Intent getIntent();
+ method public android.content.Intent![] getIntents();
+ method public long getLastChangedTimestamp();
+ method public androidx.core.content.LocusIdCompat? getLocusId();
+ method public CharSequence? getLongLabel();
+ method public String getPackage();
+ method public int getRank();
+ method public CharSequence getShortLabel();
+ method public android.os.UserHandle? getUserHandle();
+ method public boolean hasKeyFieldsOnly();
+ method public boolean isCached();
+ method public boolean isDeclaredInManifest();
+ method public boolean isDynamic();
+ method public boolean isEnabled();
+ method public boolean isImmutable();
+ method public boolean isPinned();
+ method @RequiresApi(25) public android.content.pm.ShortcutInfo! toShortcutInfo();
+ }
+
+ public static class ShortcutInfoCompat.Builder {
+ ctor public ShortcutInfoCompat.Builder(android.content.Context, String);
+ method public androidx.core.content.pm.ShortcutInfoCompat build();
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setActivity(android.content.ComponentName);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setAlwaysBadged();
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setCategories(java.util.Set<java.lang.String!>);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setDisabledMessage(CharSequence);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setExtras(android.os.PersistableBundle);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIcon(androidx.core.graphics.drawable.IconCompat!);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntent(android.content.Intent);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntents(android.content.Intent![]);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIsConversation();
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setLocusId(androidx.core.content.LocusIdCompat?);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setLongLabel(CharSequence);
+ method @Deprecated public androidx.core.content.pm.ShortcutInfoCompat.Builder setLongLived();
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setLongLived(boolean);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setPerson(androidx.core.app.Person);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setPersons(androidx.core.app.Person![]);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setRank(int);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setShortLabel(CharSequence);
+ }
+
+ public class ShortcutManagerCompat {
+ method public static boolean addDynamicShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
+ method public static android.content.Intent createShortcutResultIntent(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat);
+ method public static void disableShortcuts(android.content.Context, java.util.List<java.lang.String!>, CharSequence?);
+ method public static void enableShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
+ method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getDynamicShortcuts(android.content.Context);
+ method public static int getIconMaxHeight(android.content.Context);
+ method public static int getIconMaxWidth(android.content.Context);
+ method public static int getMaxShortcutCountPerActivity(android.content.Context);
+ method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getShortcuts(android.content.Context, int);
+ method public static boolean isRateLimitingActive(android.content.Context);
+ method public static boolean isRequestPinShortcutSupported(android.content.Context);
+ method public static boolean pushDynamicShortcut(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat);
+ method public static void removeAllDynamicShortcuts(android.content.Context);
+ method public static void removeDynamicShortcuts(android.content.Context, java.util.List<java.lang.String!>);
+ method public static void removeLongLivedShortcuts(android.content.Context, java.util.List<java.lang.String!>);
+ method public static void reportShortcutUsed(android.content.Context, String);
+ method public static boolean requestPinShortcut(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat, android.content.IntentSender?);
+ method public static boolean setDynamicShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
+ method public static boolean updateShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
+ field public static final String EXTRA_SHORTCUT_ID = "android.intent.extra.shortcut.ID";
+ field public static final int FLAG_MATCH_CACHED = 8; // 0x8
+ field public static final int FLAG_MATCH_DYNAMIC = 2; // 0x2
+ field public static final int FLAG_MATCH_MANIFEST = 1; // 0x1
+ field public static final int FLAG_MATCH_PINNED = 4; // 0x4
+ }
+
+}
+
+package androidx.core.content.res {
+
+ public final class ConfigurationHelper {
+ method public static int getDensityDpi(android.content.res.Resources);
+ }
+
+ public final class ResourcesCompat {
+ method public static android.graphics.Typeface? getCachedFont(android.content.Context, @FontRes int) throws android.content.res.Resources.NotFoundException;
+ method @ColorInt public static int getColor(android.content.res.Resources, @ColorRes int, android.content.res.Resources.Theme?) throws android.content.res.Resources.NotFoundException;
+ method public static android.content.res.ColorStateList? getColorStateList(android.content.res.Resources, @ColorRes int, android.content.res.Resources.Theme?) throws android.content.res.Resources.NotFoundException;
+ method public static android.graphics.drawable.Drawable? getDrawable(android.content.res.Resources, @DrawableRes int, android.content.res.Resources.Theme?) throws android.content.res.Resources.NotFoundException;
+ method public static android.graphics.drawable.Drawable? getDrawableForDensity(android.content.res.Resources, @DrawableRes int, int, android.content.res.Resources.Theme?) throws android.content.res.Resources.NotFoundException;
+ method public static float getFloat(android.content.res.Resources, @DimenRes int);
+ method public static android.graphics.Typeface? getFont(android.content.Context, @FontRes int) throws android.content.res.Resources.NotFoundException;
+ method public static void getFont(android.content.Context, @FontRes int, androidx.core.content.res.ResourcesCompat.FontCallback, android.os.Handler?) throws android.content.res.Resources.NotFoundException;
+ field @AnyRes public static final int ID_NULL = 0; // 0x0
+ }
+
+ public abstract static class ResourcesCompat.FontCallback {
+ ctor public ResourcesCompat.FontCallback();
+ method public abstract void onFontRetrievalFailed(int);
+ method public abstract void onFontRetrieved(android.graphics.Typeface);
+ }
+
+ public static final class ResourcesCompat.ThemeCompat {
+ method public static void rebase(android.content.res.Resources.Theme);
+ }
+
+}
+
+package androidx.core.database {
+
+ public final class CursorWindowCompat {
+ method public static android.database.CursorWindow create(String?, long);
+ }
+
+ @Deprecated public final class DatabaseUtilsCompat {
+ method @Deprecated public static String![]! appendSelectionArgs(String![]!, String![]!);
+ method @Deprecated public static String! concatenateWhere(String!, String!);
+ }
+
+}
+
+package androidx.core.database.sqlite {
+
+ public final class SQLiteCursorCompat {
+ method public static void setFillWindowForwardOnly(android.database.sqlite.SQLiteCursor, boolean);
+ }
+
+}
+
+package androidx.core.graphics {
+
+ public final class BitmapCompat {
+ method public static int getAllocationByteCount(android.graphics.Bitmap);
+ method public static boolean hasMipMap(android.graphics.Bitmap);
+ method public static void setHasMipMap(android.graphics.Bitmap, boolean);
+ }
+
+ public class BlendModeColorFilterCompat {
+ method public static android.graphics.ColorFilter? createBlendModeColorFilterCompat(int, androidx.core.graphics.BlendModeCompat);
+ }
+
+ public enum BlendModeCompat {
+ enum_constant public static final androidx.core.graphics.BlendModeCompat CLEAR;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat COLOR;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat COLOR_BURN;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat COLOR_DODGE;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat DARKEN;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat DIFFERENCE;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat DST;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat DST_ATOP;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat DST_IN;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat DST_OUT;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat DST_OVER;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat EXCLUSION;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat HARD_LIGHT;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat HUE;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat LIGHTEN;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat LUMINOSITY;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat MODULATE;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat MULTIPLY;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat OVERLAY;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat PLUS;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat SATURATION;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat SCREEN;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat SOFT_LIGHT;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat SRC;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat SRC_ATOP;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat SRC_IN;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat SRC_OUT;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat SRC_OVER;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat XOR;
+ }
+
+ public final class ColorUtils {
+ method @ColorInt public static int HSLToColor(float[]);
+ method @ColorInt public static int LABToColor(@FloatRange(from=0.0f, to=100) double, @FloatRange(from=0xffffff80, to=127) double, @FloatRange(from=0xffffff80, to=127) double);
+ method public static void LABToXYZ(@FloatRange(from=0.0f, to=100) double, @FloatRange(from=0xffffff80, to=127) double, @FloatRange(from=0xffffff80, to=127) double, double[]);
+ method public static void RGBToHSL(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, float[]);
+ method public static void RGBToLAB(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, double[]);
+ method public static void RGBToXYZ(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, double[]);
+ method @ColorInt public static int XYZToColor(@FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_X) double, @FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_Y) double, @FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_Z) double);
+ method public static void XYZToLAB(@FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_X) double, @FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_Y) double, @FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_Z) double, double[]);
+ method @ColorInt public static int blendARGB(@ColorInt int, @ColorInt int, @FloatRange(from=0.0, to=1.0) float);
+ method public static void blendHSL(float[], float[], @FloatRange(from=0.0, to=1.0) float, float[]);
+ method public static void blendLAB(double[], double[], @FloatRange(from=0.0, to=1.0) double, double[]);
+ method public static double calculateContrast(@ColorInt int, @ColorInt int);
+ method @FloatRange(from=0.0, to=1.0) public static double calculateLuminance(@ColorInt int);
+ method public static int calculateMinimumAlpha(@ColorInt int, @ColorInt int, float);
+ method public static void colorToHSL(@ColorInt int, float[]);
+ method public static void colorToLAB(@ColorInt int, double[]);
+ method public static void colorToXYZ(@ColorInt int, double[]);
+ method public static int compositeColors(@ColorInt int, @ColorInt int);
+ method @RequiresApi(26) public static android.graphics.Color compositeColors(android.graphics.Color, android.graphics.Color);
+ method public static double distanceEuclidean(double[], double[]);
+ method @ColorInt public static int setAlphaComponent(@ColorInt int, @IntRange(from=0, to=255) int);
+ }
+
+ public final class Insets {
+ method public static androidx.core.graphics.Insets add(androidx.core.graphics.Insets, androidx.core.graphics.Insets);
+ method public static androidx.core.graphics.Insets max(androidx.core.graphics.Insets, androidx.core.graphics.Insets);
+ method public static androidx.core.graphics.Insets min(androidx.core.graphics.Insets, androidx.core.graphics.Insets);
+ method public static androidx.core.graphics.Insets of(int, int, int, int);
+ method public static androidx.core.graphics.Insets of(android.graphics.Rect);
+ method public static androidx.core.graphics.Insets subtract(androidx.core.graphics.Insets, androidx.core.graphics.Insets);
+ method @RequiresApi(api=29) public static androidx.core.graphics.Insets toCompatInsets(android.graphics.Insets);
+ method @RequiresApi(api=29) public android.graphics.Insets toPlatformInsets();
+ field public static final androidx.core.graphics.Insets NONE;
+ field public final int bottom;
+ field public final int left;
+ field public final int right;
+ field public final int top;
+ }
+
+ public final class PaintCompat {
+ method public static boolean hasGlyph(android.graphics.Paint, String);
+ method public static boolean setBlendMode(android.graphics.Paint, androidx.core.graphics.BlendModeCompat?);
+ }
+
+ public final class PathSegment {
+ ctor public PathSegment(android.graphics.PointF, float, android.graphics.PointF, float);
+ method public android.graphics.PointF getEnd();
+ method public float getEndFraction();
+ method public android.graphics.PointF getStart();
+ method public float getStartFraction();
+ }
+
+ public final class PathUtils {
+ method @RequiresApi(26) public static java.util.Collection<androidx.core.graphics.PathSegment!> flatten(android.graphics.Path);
+ method @RequiresApi(26) public static java.util.Collection<androidx.core.graphics.PathSegment!> flatten(android.graphics.Path, @FloatRange(from=0) float);
+ }
+
+ public class TypefaceCompat {
+ method public static android.graphics.Typeface create(android.content.Context, android.graphics.Typeface?, int);
+ }
+
+}
+
+package androidx.core.graphics.drawable {
+
+ public final class DrawableCompat {
+ method public static void applyTheme(android.graphics.drawable.Drawable, android.content.res.Resources.Theme);
+ method public static boolean canApplyTheme(android.graphics.drawable.Drawable);
+ method public static void clearColorFilter(android.graphics.drawable.Drawable);
+ method public static int getAlpha(android.graphics.drawable.Drawable);
+ method public static android.graphics.ColorFilter! getColorFilter(android.graphics.drawable.Drawable);
+ method public static int getLayoutDirection(android.graphics.drawable.Drawable);
+ method public static void inflate(android.graphics.drawable.Drawable, android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.content.res.Resources.Theme?) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+ method public static boolean isAutoMirrored(android.graphics.drawable.Drawable);
+ method @Deprecated public static void jumpToCurrentState(android.graphics.drawable.Drawable);
+ method public static void setAutoMirrored(android.graphics.drawable.Drawable, boolean);
+ method public static void setHotspot(android.graphics.drawable.Drawable, float, float);
+ method public static void setHotspotBounds(android.graphics.drawable.Drawable, int, int, int, int);
+ method public static boolean setLayoutDirection(android.graphics.drawable.Drawable, int);
+ method public static void setTint(android.graphics.drawable.Drawable, @ColorInt int);
+ method public static void setTintList(android.graphics.drawable.Drawable, android.content.res.ColorStateList?);
+ method public static void setTintMode(android.graphics.drawable.Drawable, android.graphics.PorterDuff.Mode);
+ method public static <T extends android.graphics.drawable.Drawable> T! unwrap(android.graphics.drawable.Drawable);
+ method public static android.graphics.drawable.Drawable! wrap(android.graphics.drawable.Drawable);
+ }
+
+ public class IconCompat implements androidx.versionedparcelable.VersionedParcelable {
+ method public static androidx.core.graphics.drawable.IconCompat? createFromBundle(android.os.Bundle);
+ method @RequiresApi(23) public static androidx.core.graphics.drawable.IconCompat? createFromIcon(android.content.Context, android.graphics.drawable.Icon);
+ method public static androidx.core.graphics.drawable.IconCompat! createWithAdaptiveBitmap(android.graphics.Bitmap!);
+ method public static androidx.core.graphics.drawable.IconCompat createWithAdaptiveBitmapContentUri(String);
+ method public static androidx.core.graphics.drawable.IconCompat createWithAdaptiveBitmapContentUri(android.net.Uri);
+ method public static androidx.core.graphics.drawable.IconCompat! createWithBitmap(android.graphics.Bitmap!);
+ method public static androidx.core.graphics.drawable.IconCompat! createWithContentUri(String!);
+ method public static androidx.core.graphics.drawable.IconCompat! createWithContentUri(android.net.Uri!);
+ method public static androidx.core.graphics.drawable.IconCompat! createWithData(byte[]!, int, int);
+ method public static androidx.core.graphics.drawable.IconCompat! createWithResource(android.content.Context!, @DrawableRes int);
+ method @IdRes public int getResId();
+ method public String getResPackage();
+ method public int getType();
+ method public android.net.Uri getUri();
+ method public android.graphics.drawable.Drawable? loadDrawable(android.content.Context);
+ method public void onPostParceling();
+ method public void onPreParceling(boolean);
+ method public androidx.core.graphics.drawable.IconCompat! setTint(@ColorInt int);
+ method public androidx.core.graphics.drawable.IconCompat! setTintList(android.content.res.ColorStateList!);
+ method public androidx.core.graphics.drawable.IconCompat! setTintMode(android.graphics.PorterDuff.Mode!);
+ method public android.os.Bundle toBundle();
+ method @Deprecated @RequiresApi(23) public android.graphics.drawable.Icon toIcon();
+ method @RequiresApi(23) public android.graphics.drawable.Icon toIcon(android.content.Context?);
+ field public static final int TYPE_ADAPTIVE_BITMAP = 5; // 0x5
+ field public static final int TYPE_BITMAP = 1; // 0x1
+ field public static final int TYPE_DATA = 3; // 0x3
+ field public static final int TYPE_RESOURCE = 2; // 0x2
+ field public static final int TYPE_UNKNOWN = -1; // 0xffffffff
+ field public static final int TYPE_URI = 4; // 0x4
+ field public static final int TYPE_URI_ADAPTIVE_BITMAP = 6; // 0x6
+ }
+
+ public abstract class RoundedBitmapDrawable extends android.graphics.drawable.Drawable {
+ method public void draw(android.graphics.Canvas);
+ method public final android.graphics.Bitmap? getBitmap();
+ method public float getCornerRadius();
+ method public int getGravity();
+ method public int getOpacity();
+ method public final android.graphics.Paint getPaint();
+ method public boolean hasAntiAlias();
+ method public boolean hasMipMap();
+ method public boolean isCircular();
+ method public void setAlpha(int);
+ method public void setAntiAlias(boolean);
+ method public void setCircular(boolean);
+ method public void setColorFilter(android.graphics.ColorFilter!);
+ method public void setCornerRadius(float);
+ method public void setDither(boolean);
+ method public void setGravity(int);
+ method public void setMipMap(boolean);
+ method public void setTargetDensity(android.graphics.Canvas);
+ method public void setTargetDensity(android.util.DisplayMetrics);
+ method public void setTargetDensity(int);
+ }
+
+ public final class RoundedBitmapDrawableFactory {
+ method public static androidx.core.graphics.drawable.RoundedBitmapDrawable create(android.content.res.Resources, android.graphics.Bitmap?);
+ method public static androidx.core.graphics.drawable.RoundedBitmapDrawable create(android.content.res.Resources, String);
+ method public static androidx.core.graphics.drawable.RoundedBitmapDrawable create(android.content.res.Resources, java.io.InputStream);
+ }
+
+}
+
+package androidx.core.hardware.display {
+
+ public final class DisplayManagerCompat {
+ method public android.view.Display? getDisplay(int);
+ method public android.view.Display![] getDisplays();
+ method public android.view.Display![] getDisplays(String?);
+ method public static androidx.core.hardware.display.DisplayManagerCompat getInstance(android.content.Context);
+ field public static final String DISPLAY_CATEGORY_PRESENTATION = "android.hardware.display.category.PRESENTATION";
+ }
+
+}
+
+package androidx.core.hardware.fingerprint {
+
+ @Deprecated public class FingerprintManagerCompat {
+ method @Deprecated @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) public void authenticate(androidx.core.hardware.fingerprint.FingerprintManagerCompat.CryptoObject?, int, androidx.core.os.CancellationSignal?, androidx.core.hardware.fingerprint.FingerprintManagerCompat.AuthenticationCallback, android.os.Handler?);
+ method @Deprecated public static androidx.core.hardware.fingerprint.FingerprintManagerCompat from(android.content.Context);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) public boolean hasEnrolledFingerprints();
+ method @Deprecated @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) public boolean isHardwareDetected();
+ }
+
+ @Deprecated public abstract static class FingerprintManagerCompat.AuthenticationCallback {
+ ctor @Deprecated public FingerprintManagerCompat.AuthenticationCallback();
+ method @Deprecated public void onAuthenticationError(int, CharSequence!);
+ method @Deprecated public void onAuthenticationFailed();
+ method @Deprecated public void onAuthenticationHelp(int, CharSequence!);
+ method @Deprecated public void onAuthenticationSucceeded(androidx.core.hardware.fingerprint.FingerprintManagerCompat.AuthenticationResult!);
+ }
+
+ @Deprecated public static final class FingerprintManagerCompat.AuthenticationResult {
+ ctor @Deprecated public FingerprintManagerCompat.AuthenticationResult(androidx.core.hardware.fingerprint.FingerprintManagerCompat.CryptoObject!);
+ method @Deprecated public androidx.core.hardware.fingerprint.FingerprintManagerCompat.CryptoObject! getCryptoObject();
+ }
+
+ @Deprecated public static class FingerprintManagerCompat.CryptoObject {
+ ctor @Deprecated public FingerprintManagerCompat.CryptoObject(java.security.Signature);
+ ctor @Deprecated public FingerprintManagerCompat.CryptoObject(javax.crypto.Cipher);
+ ctor @Deprecated public FingerprintManagerCompat.CryptoObject(javax.crypto.Mac);
+ method @Deprecated public javax.crypto.Cipher? getCipher();
+ method @Deprecated public javax.crypto.Mac? getMac();
+ method @Deprecated public java.security.Signature? getSignature();
+ }
+
+}
+
+package androidx.core.location {
+
+ public abstract class GnssStatusCompat {
+ method @FloatRange(from=0, to=360) public abstract float getAzimuthDegrees(@IntRange(from=0) int);
+ method @FloatRange(from=0, to=63) public abstract float getBasebandCn0DbHz(@IntRange(from=0) int);
+ method @FloatRange(from=0) public abstract float getCarrierFrequencyHz(@IntRange(from=0) int);
+ method @FloatRange(from=0, to=63) public abstract float getCn0DbHz(@IntRange(from=0) int);
+ method public abstract int getConstellationType(@IntRange(from=0) int);
+ method @FloatRange(from=0xffffffa6, to=90) public abstract float getElevationDegrees(@IntRange(from=0) int);
+ method @IntRange(from=0) public abstract int getSatelliteCount();
+ method @IntRange(from=1, to=200) public abstract int getSvid(@IntRange(from=0) int);
+ method public abstract boolean hasAlmanacData(@IntRange(from=0) int);
+ method public abstract boolean hasBasebandCn0DbHz(@IntRange(from=0) int);
+ method public abstract boolean hasCarrierFrequencyHz(@IntRange(from=0) int);
+ method public abstract boolean hasEphemerisData(@IntRange(from=0) int);
+ method public abstract boolean usedInFix(@IntRange(from=0) int);
+ method @RequiresApi(android.os.Build.VERSION_CODES.N) public static androidx.core.location.GnssStatusCompat wrap(android.location.GnssStatus);
+ method public static androidx.core.location.GnssStatusCompat wrap(android.location.GpsStatus);
+ field public static final int CONSTELLATION_BEIDOU = 5; // 0x5
+ field public static final int CONSTELLATION_GALILEO = 6; // 0x6
+ field public static final int CONSTELLATION_GLONASS = 3; // 0x3
+ field public static final int CONSTELLATION_GPS = 1; // 0x1
+ field public static final int CONSTELLATION_IRNSS = 7; // 0x7
+ field public static final int CONSTELLATION_QZSS = 4; // 0x4
+ field public static final int CONSTELLATION_SBAS = 2; // 0x2
+ field public static final int CONSTELLATION_UNKNOWN = 0; // 0x0
+ }
+
+ public abstract static class GnssStatusCompat.Callback {
+ ctor public GnssStatusCompat.Callback();
+ method public void onFirstFix(@IntRange(from=0) int);
+ method public void onSatelliteStatusChanged(androidx.core.location.GnssStatusCompat);
+ method public void onStarted();
+ method public void onStopped();
+ }
+
+ public final class LocationManagerCompat {
+ method public static boolean isLocationEnabled(android.location.LocationManager);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback, android.os.Handler);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, java.util.concurrent.Executor, androidx.core.location.GnssStatusCompat.Callback);
+ method public static void unregisterGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback);
+ }
+
+}
+
+package androidx.core.math {
+
+ public class MathUtils {
+ method public static float clamp(float, float, float);
+ method public static double clamp(double, double, double);
+ method public static int clamp(int, int, int);
+ method public static long clamp(long, long, long);
+ }
+
+}
+
+package androidx.core.net {
+
+ public final class ConnectivityManagerCompat {
+ method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public static android.net.NetworkInfo? getNetworkInfoFromBroadcast(android.net.ConnectivityManager, android.content.Intent);
+ method public static int getRestrictBackgroundStatus(android.net.ConnectivityManager);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public static boolean isActiveNetworkMetered(android.net.ConnectivityManager);
+ field public static final int RESTRICT_BACKGROUND_STATUS_DISABLED = 1; // 0x1
+ field public static final int RESTRICT_BACKGROUND_STATUS_ENABLED = 3; // 0x3
+ field public static final int RESTRICT_BACKGROUND_STATUS_WHITELISTED = 2; // 0x2
+ }
+
+ public final class MailTo {
+ method public String? getBcc();
+ method public String? getBody();
+ method public String? getCc();
+ method public java.util.Map<java.lang.String!,java.lang.String!>? getHeaders();
+ method public String? getSubject();
+ method public String? getTo();
+ method public static boolean isMailTo(String?);
+ method public static boolean isMailTo(android.net.Uri?);
+ method public static androidx.core.net.MailTo parse(String) throws androidx.core.net.ParseException;
+ method public static androidx.core.net.MailTo parse(android.net.Uri) throws androidx.core.net.ParseException;
+ field public static final String MAILTO_SCHEME = "mailto:";
+ }
+
+ public class ParseException extends java.lang.RuntimeException {
+ field public final String response;
+ }
+
+ public final class TrafficStatsCompat {
+ method @Deprecated public static void clearThreadStatsTag();
+ method @Deprecated public static int getThreadStatsTag();
+ method @Deprecated public static void incrementOperationCount(int);
+ method @Deprecated public static void incrementOperationCount(int, int);
+ method @Deprecated public static void setThreadStatsTag(int);
+ method public static void tagDatagramSocket(java.net.DatagramSocket) throws java.net.SocketException;
+ method @Deprecated public static void tagSocket(java.net.Socket!) throws java.net.SocketException;
+ method public static void untagDatagramSocket(java.net.DatagramSocket) throws java.net.SocketException;
+ method @Deprecated public static void untagSocket(java.net.Socket!) throws java.net.SocketException;
+ }
+
+ public final class UriCompat {
+ method public static String toSafeString(android.net.Uri);
+ }
+
+}
+
+package androidx.core.os {
+
+ public class BuildCompat {
+ method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.N) public static boolean isAtLeastN();
+ method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.N_MR1) public static boolean isAtLeastNMR1();
+ method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.O) public static boolean isAtLeastO();
+ method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.O_MR1) public static boolean isAtLeastOMR1();
+ method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.P) public static boolean isAtLeastP();
+ method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.Q) public static boolean isAtLeastQ();
+ method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.R) public static boolean isAtLeastR();
+ method @ChecksSdkIntAtLeast(codename="S") public static boolean isAtLeastS();
+ }
+
+ public final class CancellationSignal {
+ ctor public CancellationSignal();
+ method public void cancel();
+ method public Object? getCancellationSignalObject();
+ method public boolean isCanceled();
+ method public void setOnCancelListener(androidx.core.os.CancellationSignal.OnCancelListener?);
+ method public void throwIfCanceled();
+ }
+
+ public static interface CancellationSignal.OnCancelListener {
+ method public void onCancel();
+ }
+
+ public final class ConfigurationCompat {
+ method public static androidx.core.os.LocaleListCompat getLocales(android.content.res.Configuration);
+ }
+
+ public final class EnvironmentCompat {
+ method public static String getStorageState(java.io.File);
+ field public static final String MEDIA_UNKNOWN = "unknown";
+ }
+
+ public final class HandlerCompat {
+ method public static android.os.Handler createAsync(android.os.Looper);
+ method public static android.os.Handler createAsync(android.os.Looper, android.os.Handler.Callback);
+ method public static boolean postDelayed(android.os.Handler, Runnable, Object?, long);
+ }
+
+ public class HandlerExecutor implements java.util.concurrent.Executor {
+ ctor public HandlerExecutor(android.os.Handler);
+ method public void execute(Runnable);
+ }
+
+ public final class LocaleListCompat {
+ method public static androidx.core.os.LocaleListCompat create(java.util.Locale!...);
+ method public static androidx.core.os.LocaleListCompat forLanguageTags(String?);
+ method public java.util.Locale! get(int);
+ method @Size(min=1) public static androidx.core.os.LocaleListCompat getAdjustedDefault();
+ method @Size(min=1) public static androidx.core.os.LocaleListCompat getDefault();
+ method public static androidx.core.os.LocaleListCompat getEmptyLocaleList();
+ method public java.util.Locale? getFirstMatch(String![]);
+ method @IntRange(from=0xffffffff) public int indexOf(java.util.Locale!);
+ method public boolean isEmpty();
+ method @IntRange(from=0) public int size();
+ method public String toLanguageTags();
+ method public Object? unwrap();
+ method @Deprecated @RequiresApi(24) public static androidx.core.os.LocaleListCompat! wrap(Object!);
+ method @RequiresApi(24) public static androidx.core.os.LocaleListCompat wrap(android.os.LocaleList);
+ }
+
+ public final class MessageCompat {
+ method public static boolean isAsynchronous(android.os.Message);
+ method public static void setAsynchronous(android.os.Message, boolean);
+ }
+
+ public class OperationCanceledException extends java.lang.RuntimeException {
+ ctor public OperationCanceledException();
+ ctor public OperationCanceledException(String?);
+ }
+
+ public final class ParcelCompat {
+ method public static boolean readBoolean(android.os.Parcel);
+ method public static void writeBoolean(android.os.Parcel, boolean);
+ }
+
+ @Deprecated public final class ParcelableCompat {
+ method @Deprecated public static <T> android.os.Parcelable.Creator<T!>! newCreator(androidx.core.os.ParcelableCompatCreatorCallbacks<T!>!);
+ }
+
+ @Deprecated public interface ParcelableCompatCreatorCallbacks<T> {
+ method @Deprecated public T! createFromParcel(android.os.Parcel!, ClassLoader!);
+ method @Deprecated public T![]! newArray(int);
+ }
+
+ public final class ProcessCompat {
+ method public static boolean isApplicationUid(int);
+ }
+
+ @Deprecated public final class TraceCompat {
+ method @Deprecated public static void beginAsyncSection(String, int);
+ method @Deprecated public static void beginSection(String);
+ method @Deprecated public static void endAsyncSection(String, int);
+ method @Deprecated public static void endSection();
+ method @Deprecated public static boolean isEnabled();
+ method @Deprecated public static void setCounter(String, int);
+ }
+
+ public class UserManagerCompat {
+ method public static boolean isUserUnlocked(android.content.Context);
+ }
+
+}
+
+package androidx.core.provider {
+
+ public final class FontRequest {
+ ctor public FontRequest(String, String, String, java.util.List<java.util.List<byte[]!>!>);
+ ctor public FontRequest(String, String, String, @ArrayRes int);
+ method public java.util.List<java.util.List<byte[]!>!>? getCertificates();
+ method @ArrayRes public int getCertificatesArrayResId();
+ method public String getProviderAuthority();
+ method public String getProviderPackage();
+ method public String getQuery();
+ }
+
+ public class FontsContractCompat {
+ method public static android.graphics.Typeface? buildTypeface(android.content.Context, android.os.CancellationSignal?, androidx.core.provider.FontsContractCompat.FontInfo![]);
+ method public static androidx.core.provider.FontsContractCompat.FontFamilyResult fetchFonts(android.content.Context, android.os.CancellationSignal?, androidx.core.provider.FontRequest) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public static void requestFont(android.content.Context, androidx.core.provider.FontRequest, androidx.core.provider.FontsContractCompat.FontRequestCallback, android.os.Handler);
+ }
+
+ public static final class FontsContractCompat.Columns implements android.provider.BaseColumns {
+ ctor public FontsContractCompat.Columns();
+ field public static final String FILE_ID = "file_id";
+ field public static final String ITALIC = "font_italic";
+ field public static final String RESULT_CODE = "result_code";
+ field public static final int RESULT_CODE_FONT_NOT_FOUND = 1; // 0x1
+ field public static final int RESULT_CODE_FONT_UNAVAILABLE = 2; // 0x2
+ field public static final int RESULT_CODE_MALFORMED_QUERY = 3; // 0x3
+ field public static final int RESULT_CODE_OK = 0; // 0x0
+ field public static final String TTC_INDEX = "font_ttc_index";
+ field public static final String VARIATION_SETTINGS = "font_variation_settings";
+ field public static final String WEIGHT = "font_weight";
+ }
+
+ public static class FontsContractCompat.FontFamilyResult {
+ method public androidx.core.provider.FontsContractCompat.FontInfo![]! getFonts();
+ method public int getStatusCode();
+ field public static final int STATUS_OK = 0; // 0x0
+ field public static final int STATUS_UNEXPECTED_DATA_PROVIDED = 2; // 0x2
+ field public static final int STATUS_WRONG_CERTIFICATES = 1; // 0x1
+ }
+
+ public static class FontsContractCompat.FontInfo {
+ method public int getResultCode();
+ method @IntRange(from=0) public int getTtcIndex();
+ method public android.net.Uri getUri();
+ method @IntRange(from=1, to=1000) public int getWeight();
+ method public boolean isItalic();
+ }
+
+ public static class FontsContractCompat.FontRequestCallback {
+ ctor public FontsContractCompat.FontRequestCallback();
+ method public void onTypefaceRequestFailed(int);
+ method public void onTypefaceRetrieved(android.graphics.Typeface!);
+ field public static final int FAIL_REASON_FONT_LOAD_ERROR = -3; // 0xfffffffd
+ field public static final int FAIL_REASON_FONT_NOT_FOUND = 1; // 0x1
+ field public static final int FAIL_REASON_FONT_UNAVAILABLE = 2; // 0x2
+ field public static final int FAIL_REASON_MALFORMED_QUERY = 3; // 0x3
+ field public static final int FAIL_REASON_PROVIDER_NOT_FOUND = -1; // 0xffffffff
+ field public static final int FAIL_REASON_SECURITY_VIOLATION = -4; // 0xfffffffc
+ field public static final int FAIL_REASON_WRONG_CERTIFICATES = -2; // 0xfffffffe
+ }
+
+}
+
+package androidx.core.telephony.mbms {
+
+ public final class MbmsHelper {
+ method public static CharSequence? getBestNameForService(android.content.Context, android.telephony.mbms.ServiceInfo);
+ }
+
+}
+
+package androidx.core.text {
+
+ public final class BidiFormatter {
+ method public static androidx.core.text.BidiFormatter! getInstance();
+ method public static androidx.core.text.BidiFormatter! getInstance(boolean);
+ method public static androidx.core.text.BidiFormatter! getInstance(java.util.Locale!);
+ method public boolean getStereoReset();
+ method public boolean isRtl(String!);
+ method public boolean isRtl(CharSequence!);
+ method public boolean isRtlContext();
+ method public String! unicodeWrap(String!, androidx.core.text.TextDirectionHeuristicCompat!, boolean);
+ method public CharSequence! unicodeWrap(CharSequence!, androidx.core.text.TextDirectionHeuristicCompat!, boolean);
+ method public String! unicodeWrap(String!, androidx.core.text.TextDirectionHeuristicCompat!);
+ method public CharSequence! unicodeWrap(CharSequence!, androidx.core.text.TextDirectionHeuristicCompat!);
+ method public String! unicodeWrap(String!, boolean);
+ method public CharSequence! unicodeWrap(CharSequence!, boolean);
+ method public String! unicodeWrap(String!);
+ method public CharSequence! unicodeWrap(CharSequence!);
+ }
+
+ public static final class BidiFormatter.Builder {
+ ctor public BidiFormatter.Builder();
+ ctor public BidiFormatter.Builder(boolean);
+ ctor public BidiFormatter.Builder(java.util.Locale!);
+ method public androidx.core.text.BidiFormatter! build();
+ method public androidx.core.text.BidiFormatter.Builder! setTextDirectionHeuristic(androidx.core.text.TextDirectionHeuristicCompat!);
+ method public androidx.core.text.BidiFormatter.Builder! stereoReset(boolean);
+ }
+
+ public final class HtmlCompat {
+ method public static android.text.Spanned fromHtml(String, int);
+ method public static android.text.Spanned fromHtml(String, int, android.text.Html.ImageGetter?, android.text.Html.TagHandler?);
+ method public static String toHtml(android.text.Spanned, int);
+ field public static final int FROM_HTML_MODE_COMPACT = 63; // 0x3f
+ field public static final int FROM_HTML_MODE_LEGACY = 0; // 0x0
+ field public static final int FROM_HTML_OPTION_USE_CSS_COLORS = 256; // 0x100
+ field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_BLOCKQUOTE = 32; // 0x20
+ field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_DIV = 16; // 0x10
+ field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_HEADING = 2; // 0x2
+ field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_LIST = 8; // 0x8
+ field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_LIST_ITEM = 4; // 0x4
+ field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_PARAGRAPH = 1; // 0x1
+ field public static final int TO_HTML_PARAGRAPH_LINES_CONSECUTIVE = 0; // 0x0
+ field public static final int TO_HTML_PARAGRAPH_LINES_INDIVIDUAL = 1; // 0x1
+ }
+
+ public final class ICUCompat {
+ method public static String? maximizeAndGetScript(java.util.Locale!);
+ }
+
+ public class PrecomputedTextCompat implements android.text.Spannable {
+ method public char charAt(int);
+ method public static androidx.core.text.PrecomputedTextCompat! create(CharSequence, androidx.core.text.PrecomputedTextCompat.Params);
+ method @IntRange(from=0) public int getParagraphCount();
+ method @IntRange(from=0) public int getParagraphEnd(@IntRange(from=0) int);
+ method @IntRange(from=0) public int getParagraphStart(@IntRange(from=0) int);
+ method public androidx.core.text.PrecomputedTextCompat.Params getParams();
+ method public int getSpanEnd(Object!);
+ method public int getSpanFlags(Object!);
+ method public int getSpanStart(Object!);
+ method public <T> T![]! getSpans(int, int, Class<T!>!);
+ method @UiThread public static java.util.concurrent.Future<androidx.core.text.PrecomputedTextCompat!>! getTextFuture(CharSequence, androidx.core.text.PrecomputedTextCompat.Params, java.util.concurrent.Executor?);
+ method public int length();
+ method public int nextSpanTransition(int, int, Class!);
+ method public void removeSpan(Object!);
+ method public void setSpan(Object!, int, int, int);
+ method public CharSequence! subSequence(int, int);
+ }
+
+ public static final class PrecomputedTextCompat.Params {
+ ctor @RequiresApi(28) public PrecomputedTextCompat.Params(android.text.PrecomputedText.Params);
+ method @RequiresApi(23) public int getBreakStrategy();
+ method @RequiresApi(23) public int getHyphenationFrequency();
+ method @RequiresApi(18) public android.text.TextDirectionHeuristic? getTextDirection();
+ method public android.text.TextPaint getTextPaint();
+ }
+
+ public static class PrecomputedTextCompat.Params.Builder {
+ ctor public PrecomputedTextCompat.Params.Builder(android.text.TextPaint);
+ method public androidx.core.text.PrecomputedTextCompat.Params build();
+ method @RequiresApi(23) public androidx.core.text.PrecomputedTextCompat.Params.Builder! setBreakStrategy(int);
+ method @RequiresApi(23) public androidx.core.text.PrecomputedTextCompat.Params.Builder! setHyphenationFrequency(int);
+ method @RequiresApi(18) public androidx.core.text.PrecomputedTextCompat.Params.Builder! setTextDirection(android.text.TextDirectionHeuristic);
+ }
+
+ public interface TextDirectionHeuristicCompat {
+ method public boolean isRtl(char[]!, int, int);
+ method public boolean isRtl(CharSequence!, int, int);
+ }
+
+ public final class TextDirectionHeuristicsCompat {
+ field public static final androidx.core.text.TextDirectionHeuristicCompat! ANYRTL_LTR;
+ field public static final androidx.core.text.TextDirectionHeuristicCompat! FIRSTSTRONG_LTR;
+ field public static final androidx.core.text.TextDirectionHeuristicCompat! FIRSTSTRONG_RTL;
+ field public static final androidx.core.text.TextDirectionHeuristicCompat! LOCALE;
+ field public static final androidx.core.text.TextDirectionHeuristicCompat! LTR;
+ field public static final androidx.core.text.TextDirectionHeuristicCompat! RTL;
+ }
+
+ public final class TextUtilsCompat {
+ method public static int getLayoutDirectionFromLocale(java.util.Locale?);
+ method public static String htmlEncode(String);
+ }
+
+}
+
+package androidx.core.text.util {
+
+ public final class LinkifyCompat {
+ method public static boolean addLinks(android.text.Spannable, int);
+ method public static boolean addLinks(android.widget.TextView, int);
+ method public static void addLinks(android.widget.TextView, java.util.regex.Pattern, String?);
+ method public static void addLinks(android.widget.TextView, java.util.regex.Pattern, String?, android.text.util.Linkify.MatchFilter?, android.text.util.Linkify.TransformFilter?);
+ method public static void addLinks(android.widget.TextView, java.util.regex.Pattern, String?, String![]?, android.text.util.Linkify.MatchFilter?, android.text.util.Linkify.TransformFilter?);
+ method public static boolean addLinks(android.text.Spannable, java.util.regex.Pattern, String?);
+ method public static boolean addLinks(android.text.Spannable, java.util.regex.Pattern, String?, android.text.util.Linkify.MatchFilter?, android.text.util.Linkify.TransformFilter?);
+ method public static boolean addLinks(android.text.Spannable, java.util.regex.Pattern, String?, String![]?, android.text.util.Linkify.MatchFilter?, android.text.util.Linkify.TransformFilter?);
+ }
+
+}
+
+package androidx.core.util {
+
+ public class AtomicFile {
+ ctor public AtomicFile(java.io.File);
+ method public void delete();
+ method public void failWrite(java.io.FileOutputStream?);
+ method public void finishWrite(java.io.FileOutputStream?);
+ method public java.io.File getBaseFile();
+ method public java.io.FileInputStream openRead() throws java.io.FileNotFoundException;
+ method public byte[] readFully() throws java.io.IOException;
+ method public java.io.FileOutputStream startWrite() throws java.io.IOException;
+ }
+
+ public interface Consumer<T> {
+ method public void accept(T!);
+ }
+
+ public class ObjectsCompat {
+ method public static boolean equals(Object?, Object?);
+ method public static int hash(java.lang.Object!...);
+ method public static int hashCode(Object?);
+ method public static String? toString(Object?, String?);
+ }
+
+ public class Pair<F, S> {
+ ctor public Pair(F!, S!);
+ method public static <A, B> androidx.core.util.Pair<A!,B!> create(A!, B!);
+ field public final F! first;
+ field public final S! second;
+ }
+
+ public final class PatternsCompat {
+ field public static final java.util.regex.Pattern DOMAIN_NAME;
+ field public static final java.util.regex.Pattern EMAIL_ADDRESS;
+ field public static final java.util.regex.Pattern IP_ADDRESS;
+ field public static final java.util.regex.Pattern WEB_URL;
+ }
+
+ public final class Pools {
+ }
+
+ public static interface Pools.Pool<T> {
+ method public T? acquire();
+ method public boolean release(T);
+ }
+
+ public static class Pools.SimplePool<T> implements androidx.core.util.Pools.Pool<T> {
+ ctor public Pools.SimplePool(int);
+ method public T! acquire();
+ method public boolean release(T);
+ }
+
+ public static class Pools.SynchronizedPool<T> extends androidx.core.util.Pools.SimplePool<T> {
+ ctor public Pools.SynchronizedPool(int);
+ }
+
+ public interface Predicate<T> {
+ method public boolean test(T!);
+ }
+
+ public interface Supplier<T> {
+ method public T! get();
+ }
+
+}
+
+package androidx.core.view {
+
+ public class AccessibilityDelegateCompat {
+ ctor public AccessibilityDelegateCompat();
+ method public boolean dispatchPopulateAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
+ method public androidx.core.view.accessibility.AccessibilityNodeProviderCompat! getAccessibilityNodeProvider(android.view.View!);
+ method public void onInitializeAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
+ method public void onInitializeAccessibilityNodeInfo(android.view.View!, androidx.core.view.accessibility.AccessibilityNodeInfoCompat!);
+ method public void onPopulateAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
+ method public boolean onRequestSendAccessibilityEvent(android.view.ViewGroup!, android.view.View!, android.view.accessibility.AccessibilityEvent!);
+ method public boolean performAccessibilityAction(android.view.View!, int, android.os.Bundle!);
+ method public void sendAccessibilityEvent(android.view.View!, int);
+ method public void sendAccessibilityEventUnchecked(android.view.View!, android.view.accessibility.AccessibilityEvent!);
+ }
+
+ public abstract class ActionProvider {
+ ctor public ActionProvider(android.content.Context!);
+ method public android.content.Context! getContext();
+ method public boolean hasSubMenu();
+ method public boolean isVisible();
+ method public abstract android.view.View! onCreateActionView();
+ method public android.view.View! onCreateActionView(android.view.MenuItem!);
+ method public boolean onPerformDefaultAction();
+ method public void onPrepareSubMenu(android.view.SubMenu!);
+ method public boolean overridesItemVisibility();
+ method public void refreshVisibility();
+ method public void setVisibilityListener(androidx.core.view.ActionProvider.VisibilityListener!);
+ }
+
+ public static interface ActionProvider.VisibilityListener {
+ method public void onActionProviderVisibilityChanged(boolean);
+ }
+
+ public final class ContentInfoCompat {
+ method public android.content.ClipData getClip();
+ method public android.os.Bundle? getExtras();
+ method public int getFlags();
+ method public android.net.Uri? getLinkUri();
+ method public int getSource();
+ method public android.util.Pair<androidx.core.view.ContentInfoCompat!,androidx.core.view.ContentInfoCompat!> partition(androidx.core.util.Predicate<android.content.ClipData.Item!>);
+ field public static final int FLAG_CONVERT_TO_PLAIN_TEXT = 1; // 0x1
+ field public static final int SOURCE_APP = 0; // 0x0
+ field public static final int SOURCE_CLIPBOARD = 1; // 0x1
+ field public static final int SOURCE_DRAG_AND_DROP = 3; // 0x3
+ field public static final int SOURCE_INPUT_METHOD = 2; // 0x2
+ }
+
+ public static final class ContentInfoCompat.Builder {
+ ctor public ContentInfoCompat.Builder(androidx.core.view.ContentInfoCompat);
+ ctor public ContentInfoCompat.Builder(android.content.ClipData, int);
+ method public androidx.core.view.ContentInfoCompat build();
+ method public androidx.core.view.ContentInfoCompat.Builder setClip(android.content.ClipData);
+ method public androidx.core.view.ContentInfoCompat.Builder setExtras(android.os.Bundle?);
+ method public androidx.core.view.ContentInfoCompat.Builder setFlags(int);
+ method public androidx.core.view.ContentInfoCompat.Builder setLinkUri(android.net.Uri?);
+ method public androidx.core.view.ContentInfoCompat.Builder setSource(int);
+ }
+
+ public final class DisplayCompat {
+ method public static androidx.core.view.DisplayCompat.ModeCompat![] getSupportedModes(android.content.Context, android.view.Display);
+ }
+
+ public static final class DisplayCompat.ModeCompat {
+ method public int getPhysicalHeight();
+ method public int getPhysicalWidth();
+ method public boolean isNative();
+ method @RequiresApi(android.os.Build.VERSION_CODES.M) public android.view.Display.Mode? toMode();
+ }
+
+ public final class DisplayCutoutCompat {
+ ctor public DisplayCutoutCompat(android.graphics.Rect!, java.util.List<android.graphics.Rect!>!);
+ ctor public DisplayCutoutCompat(androidx.core.graphics.Insets, android.graphics.Rect?, android.graphics.Rect?, android.graphics.Rect?, android.graphics.Rect?, androidx.core.graphics.Insets);
+ method public java.util.List<android.graphics.Rect!> getBoundingRects();
+ method public int getSafeInsetBottom();
+ method public int getSafeInsetLeft();
+ method public int getSafeInsetRight();
+ method public int getSafeInsetTop();
+ method public androidx.core.graphics.Insets getWaterfallInsets();
+ }
+
+ public final class DragAndDropPermissionsCompat {
+ method public void release();
+ }
+
+ public class DragStartHelper {
+ ctor public DragStartHelper(android.view.View!, androidx.core.view.DragStartHelper.OnDragStartListener!);
+ method public void attach();
+ method public void detach();
+ method public void getTouchPosition(android.graphics.Point!);
+ method public boolean onLongClick(android.view.View!);
+ method public boolean onTouch(android.view.View!, android.view.MotionEvent!);
+ }
+
+ public static interface DragStartHelper.OnDragStartListener {
+ method public boolean onDragStart(android.view.View!, androidx.core.view.DragStartHelper!);
+ }
+
+ public final class GestureDetectorCompat {
+ ctor public GestureDetectorCompat(android.content.Context!, android.view.GestureDetector.OnGestureListener!);
+ ctor public GestureDetectorCompat(android.content.Context!, android.view.GestureDetector.OnGestureListener!, android.os.Handler!);
+ method public boolean isLongpressEnabled();
+ method public boolean onTouchEvent(android.view.MotionEvent!);
+ method public void setIsLongpressEnabled(boolean);
+ method public void setOnDoubleTapListener(android.view.GestureDetector.OnDoubleTapListener!);
+ }
+
+ public final class GravityCompat {
+ method public static void apply(int, int, int, android.graphics.Rect!, android.graphics.Rect!, int);
+ method public static void apply(int, int, int, android.graphics.Rect!, int, int, android.graphics.Rect!, int);
+ method public static void applyDisplay(int, android.graphics.Rect!, android.graphics.Rect!, int);
+ method public static int getAbsoluteGravity(int, int);
+ field public static final int END = 8388613; // 0x800005
+ field public static final int RELATIVE_HORIZONTAL_GRAVITY_MASK = 8388615; // 0x800007
+ field public static final int RELATIVE_LAYOUT_DIRECTION = 8388608; // 0x800000
+ field public static final int START = 8388611; // 0x800003
+ }
+
+ public final class InputDeviceCompat {
+ field public static final int SOURCE_ANY = -256; // 0xffffff00
+ field public static final int SOURCE_CLASS_BUTTON = 1; // 0x1
+ field public static final int SOURCE_CLASS_JOYSTICK = 16; // 0x10
+ field public static final int SOURCE_CLASS_MASK = 255; // 0xff
+ field public static final int SOURCE_CLASS_NONE = 0; // 0x0
+ field public static final int SOURCE_CLASS_POINTER = 2; // 0x2
+ field public static final int SOURCE_CLASS_POSITION = 8; // 0x8
+ field public static final int SOURCE_CLASS_TRACKBALL = 4; // 0x4
+ field public static final int SOURCE_DPAD = 513; // 0x201
+ field public static final int SOURCE_GAMEPAD = 1025; // 0x401
+ field public static final int SOURCE_HDMI = 33554433; // 0x2000001
+ field public static final int SOURCE_JOYSTICK = 16777232; // 0x1000010
+ field public static final int SOURCE_KEYBOARD = 257; // 0x101
+ field public static final int SOURCE_MOUSE = 8194; // 0x2002
+ field public static final int SOURCE_ROTARY_ENCODER = 4194304; // 0x400000
+ field public static final int SOURCE_STYLUS = 16386; // 0x4002
+ field public static final int SOURCE_TOUCHPAD = 1048584; // 0x100008
+ field public static final int SOURCE_TOUCHSCREEN = 4098; // 0x1002
+ field public static final int SOURCE_TOUCH_NAVIGATION = 2097152; // 0x200000
+ field public static final int SOURCE_TRACKBALL = 65540; // 0x10004
+ field public static final int SOURCE_UNKNOWN = 0; // 0x0
+ }
+
+ public final class LayoutInflaterCompat {
+ method @Deprecated public static androidx.core.view.LayoutInflaterFactory! getFactory(android.view.LayoutInflater!);
+ method @Deprecated public static void setFactory(android.view.LayoutInflater, androidx.core.view.LayoutInflaterFactory);
+ method public static void setFactory2(android.view.LayoutInflater, android.view.LayoutInflater.Factory2);
+ }
+
+ @Deprecated public interface LayoutInflaterFactory {
+ method @Deprecated public android.view.View! onCreateView(android.view.View!, String!, android.content.Context!, android.util.AttributeSet!);
+ }
+
+ public final class MarginLayoutParamsCompat {
+ method public static int getLayoutDirection(android.view.ViewGroup.MarginLayoutParams!);
+ method public static int getMarginEnd(android.view.ViewGroup.MarginLayoutParams!);
+ method public static int getMarginStart(android.view.ViewGroup.MarginLayoutParams!);
+ method public static boolean isMarginRelative(android.view.ViewGroup.MarginLayoutParams!);
+ method public static void resolveLayoutDirection(android.view.ViewGroup.MarginLayoutParams!, int);
+ method public static void setLayoutDirection(android.view.ViewGroup.MarginLayoutParams!, int);
+ method public static void setMarginEnd(android.view.ViewGroup.MarginLayoutParams!, int);
+ method public static void setMarginStart(android.view.ViewGroup.MarginLayoutParams!, int);
+ }
+
+ public final class MenuCompat {
+ method public static void setGroupDividerEnabled(android.view.Menu!, boolean);
+ method @Deprecated public static void setShowAsAction(android.view.MenuItem!, int);
+ }
+
+ public final class MenuItemCompat {
+ method @Deprecated public static boolean collapseActionView(android.view.MenuItem!);
+ method @Deprecated public static boolean expandActionView(android.view.MenuItem!);
+ method public static androidx.core.view.ActionProvider! getActionProvider(android.view.MenuItem!);
+ method @Deprecated public static android.view.View! getActionView(android.view.MenuItem!);
+ method public static int getAlphabeticModifiers(android.view.MenuItem!);
+ method public static CharSequence! getContentDescription(android.view.MenuItem!);
+ method public static android.content.res.ColorStateList! getIconTintList(android.view.MenuItem!);
+ method public static android.graphics.PorterDuff.Mode! getIconTintMode(android.view.MenuItem!);
+ method public static int getNumericModifiers(android.view.MenuItem!);
+ method public static CharSequence! getTooltipText(android.view.MenuItem!);
+ method @Deprecated public static boolean isActionViewExpanded(android.view.MenuItem!);
+ method public static android.view.MenuItem! setActionProvider(android.view.MenuItem!, androidx.core.view.ActionProvider!);
+ method @Deprecated public static android.view.MenuItem! setActionView(android.view.MenuItem!, android.view.View!);
+ method @Deprecated public static android.view.MenuItem! setActionView(android.view.MenuItem!, int);
+ method public static void setAlphabeticShortcut(android.view.MenuItem!, char, int);
+ method public static void setContentDescription(android.view.MenuItem!, CharSequence!);
+ method public static void setIconTintList(android.view.MenuItem!, android.content.res.ColorStateList!);
+ method public static void setIconTintMode(android.view.MenuItem!, android.graphics.PorterDuff.Mode!);
+ method public static void setNumericShortcut(android.view.MenuItem!, char, int);
+ method @Deprecated public static android.view.MenuItem! setOnActionExpandListener(android.view.MenuItem!, androidx.core.view.MenuItemCompat.OnActionExpandListener!);
+ method public static void setShortcut(android.view.MenuItem!, char, char, int, int);
+ method @Deprecated public static void setShowAsAction(android.view.MenuItem!, int);
+ method public static void setTooltipText(android.view.MenuItem!, CharSequence!);
+ field @Deprecated public static final int SHOW_AS_ACTION_ALWAYS = 2; // 0x2
+ field @Deprecated public static final int SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW = 8; // 0x8
+ field @Deprecated public static final int SHOW_AS_ACTION_IF_ROOM = 1; // 0x1
+ field @Deprecated public static final int SHOW_AS_ACTION_NEVER = 0; // 0x0
+ field @Deprecated public static final int SHOW_AS_ACTION_WITH_TEXT = 4; // 0x4
+ }
+
+ @Deprecated public static interface MenuItemCompat.OnActionExpandListener {
+ method @Deprecated public boolean onMenuItemActionCollapse(android.view.MenuItem!);
+ method @Deprecated public boolean onMenuItemActionExpand(android.view.MenuItem!);
+ }
+
+ public final class MotionEventCompat {
+ method @Deprecated public static int findPointerIndex(android.view.MotionEvent!, int);
+ method @Deprecated public static int getActionIndex(android.view.MotionEvent!);
+ method @Deprecated public static int getActionMasked(android.view.MotionEvent!);
+ method @Deprecated public static float getAxisValue(android.view.MotionEvent!, int);
+ method @Deprecated public static float getAxisValue(android.view.MotionEvent!, int, int);
+ method @Deprecated public static int getButtonState(android.view.MotionEvent!);
+ method @Deprecated public static int getPointerCount(android.view.MotionEvent!);
+ method @Deprecated public static int getPointerId(android.view.MotionEvent!, int);
+ method @Deprecated public static int getSource(android.view.MotionEvent!);
+ method @Deprecated public static float getX(android.view.MotionEvent!, int);
+ method @Deprecated public static float getY(android.view.MotionEvent!, int);
+ method public static boolean isFromSource(android.view.MotionEvent!, int);
+ field @Deprecated public static final int ACTION_HOVER_ENTER = 9; // 0x9
+ field @Deprecated public static final int ACTION_HOVER_EXIT = 10; // 0xa
+ field @Deprecated public static final int ACTION_HOVER_MOVE = 7; // 0x7
+ field @Deprecated public static final int ACTION_MASK = 255; // 0xff
+ field @Deprecated public static final int ACTION_POINTER_DOWN = 5; // 0x5
+ field @Deprecated public static final int ACTION_POINTER_INDEX_MASK = 65280; // 0xff00
+ field @Deprecated public static final int ACTION_POINTER_INDEX_SHIFT = 8; // 0x8
+ field @Deprecated public static final int ACTION_POINTER_UP = 6; // 0x6
+ field @Deprecated public static final int ACTION_SCROLL = 8; // 0x8
+ field @Deprecated public static final int AXIS_BRAKE = 23; // 0x17
+ field @Deprecated public static final int AXIS_DISTANCE = 24; // 0x18
+ field @Deprecated public static final int AXIS_GAS = 22; // 0x16
+ field @Deprecated public static final int AXIS_GENERIC_1 = 32; // 0x20
+ field @Deprecated public static final int AXIS_GENERIC_10 = 41; // 0x29
+ field @Deprecated public static final int AXIS_GENERIC_11 = 42; // 0x2a
+ field @Deprecated public static final int AXIS_GENERIC_12 = 43; // 0x2b
+ field @Deprecated public static final int AXIS_GENERIC_13 = 44; // 0x2c
+ field @Deprecated public static final int AXIS_GENERIC_14 = 45; // 0x2d
+ field @Deprecated public static final int AXIS_GENERIC_15 = 46; // 0x2e
+ field @Deprecated public static final int AXIS_GENERIC_16 = 47; // 0x2f
+ field @Deprecated public static final int AXIS_GENERIC_2 = 33; // 0x21
+ field @Deprecated public static final int AXIS_GENERIC_3 = 34; // 0x22
+ field @Deprecated public static final int AXIS_GENERIC_4 = 35; // 0x23
+ field @Deprecated public static final int AXIS_GENERIC_5 = 36; // 0x24
+ field @Deprecated public static final int AXIS_GENERIC_6 = 37; // 0x25
+ field @Deprecated public static final int AXIS_GENERIC_7 = 38; // 0x26
+ field @Deprecated public static final int AXIS_GENERIC_8 = 39; // 0x27
+ field @Deprecated public static final int AXIS_GENERIC_9 = 40; // 0x28
+ field @Deprecated public static final int AXIS_HAT_X = 15; // 0xf
+ field @Deprecated public static final int AXIS_HAT_Y = 16; // 0x10
+ field @Deprecated public static final int AXIS_HSCROLL = 10; // 0xa
+ field @Deprecated public static final int AXIS_LTRIGGER = 17; // 0x11
+ field @Deprecated public static final int AXIS_ORIENTATION = 8; // 0x8
+ field @Deprecated public static final int AXIS_PRESSURE = 2; // 0x2
+ field public static final int AXIS_RELATIVE_X = 27; // 0x1b
+ field public static final int AXIS_RELATIVE_Y = 28; // 0x1c
+ field @Deprecated public static final int AXIS_RTRIGGER = 18; // 0x12
+ field @Deprecated public static final int AXIS_RUDDER = 20; // 0x14
+ field @Deprecated public static final int AXIS_RX = 12; // 0xc
+ field @Deprecated public static final int AXIS_RY = 13; // 0xd
+ field @Deprecated public static final int AXIS_RZ = 14; // 0xe
+ field public static final int AXIS_SCROLL = 26; // 0x1a
+ field @Deprecated public static final int AXIS_SIZE = 3; // 0x3
+ field @Deprecated public static final int AXIS_THROTTLE = 19; // 0x13
+ field @Deprecated public static final int AXIS_TILT = 25; // 0x19
+ field @Deprecated public static final int AXIS_TOOL_MAJOR = 6; // 0x6
+ field @Deprecated public static final int AXIS_TOOL_MINOR = 7; // 0x7
+ field @Deprecated public static final int AXIS_TOUCH_MAJOR = 4; // 0x4
+ field @Deprecated public static final int AXIS_TOUCH_MINOR = 5; // 0x5
+ field @Deprecated public static final int AXIS_VSCROLL = 9; // 0x9
+ field @Deprecated public static final int AXIS_WHEEL = 21; // 0x15
+ field @Deprecated public static final int AXIS_X = 0; // 0x0
+ field @Deprecated public static final int AXIS_Y = 1; // 0x1
+ field @Deprecated public static final int AXIS_Z = 11; // 0xb
+ field @Deprecated public static final int BUTTON_PRIMARY = 1; // 0x1
+ }
+
+ public interface NestedScrollingChild {
+ method public boolean dispatchNestedFling(float, float, boolean);
+ method public boolean dispatchNestedPreFling(float, float);
+ method public boolean dispatchNestedPreScroll(int, int, int[]?, int[]?);
+ method public boolean dispatchNestedScroll(int, int, int, int, int[]?);
+ method public boolean hasNestedScrollingParent();
+ method public boolean isNestedScrollingEnabled();
+ method public void setNestedScrollingEnabled(boolean);
+ method public boolean startNestedScroll(int);
+ method public void stopNestedScroll();
+ }
+
+ public interface NestedScrollingChild2 extends androidx.core.view.NestedScrollingChild {
+ method public boolean dispatchNestedPreScroll(int, int, int[]?, int[]?, int);
+ method public boolean dispatchNestedScroll(int, int, int, int, int[]?, int);
+ method public boolean hasNestedScrollingParent(int);
+ method public boolean startNestedScroll(int, int);
+ method public void stopNestedScroll(int);
+ }
+
+ public interface NestedScrollingChild3 extends androidx.core.view.NestedScrollingChild2 {
+ method public void dispatchNestedScroll(int, int, int, int, int[]?, int, int[]);
+ }
+
+ public class NestedScrollingChildHelper {
+ ctor public NestedScrollingChildHelper(android.view.View);
+ method public boolean dispatchNestedFling(float, float, boolean);
+ method public boolean dispatchNestedPreFling(float, float);
+ method public boolean dispatchNestedPreScroll(int, int, int[]?, int[]?);
+ method public boolean dispatchNestedPreScroll(int, int, int[]?, int[]?, int);
+ method public boolean dispatchNestedScroll(int, int, int, int, int[]?);
+ method public boolean dispatchNestedScroll(int, int, int, int, int[]?, int);
+ method public void dispatchNestedScroll(int, int, int, int, int[]?, int, int[]?);
+ method public boolean hasNestedScrollingParent();
+ method public boolean hasNestedScrollingParent(int);
+ method public boolean isNestedScrollingEnabled();
+ method public void onDetachedFromWindow();
+ method public void onStopNestedScroll(android.view.View);
+ method public void setNestedScrollingEnabled(boolean);
+ method public boolean startNestedScroll(int);
+ method public boolean startNestedScroll(int, int);
+ method public void stopNestedScroll();
+ method public void stopNestedScroll(int);
+ }
+
+ public interface NestedScrollingParent {
+ method public int getNestedScrollAxes();
+ method public boolean onNestedFling(android.view.View, float, float, boolean);
+ method public boolean onNestedPreFling(android.view.View, float, float);
+ method public void onNestedPreScroll(android.view.View, int, int, int[]);
+ method public void onNestedScroll(android.view.View, int, int, int, int);
+ method public void onNestedScrollAccepted(android.view.View, android.view.View, int);
+ method public boolean onStartNestedScroll(android.view.View, android.view.View, int);
+ method public void onStopNestedScroll(android.view.View);
+ }
+
+ public interface NestedScrollingParent2 extends androidx.core.view.NestedScrollingParent {
+ method public void onNestedPreScroll(android.view.View, int, int, int[], int);
+ method public void onNestedScroll(android.view.View, int, int, int, int, int);
+ method public void onNestedScrollAccepted(android.view.View, android.view.View, int, int);
+ method public boolean onStartNestedScroll(android.view.View, android.view.View, int, int);
+ method public void onStopNestedScroll(android.view.View, int);
+ }
+
+ public interface NestedScrollingParent3 extends androidx.core.view.NestedScrollingParent2 {
+ method public void onNestedScroll(android.view.View, int, int, int, int, int, int[]);
+ }
+
+ public class NestedScrollingParentHelper {
+ ctor public NestedScrollingParentHelper(android.view.ViewGroup);
+ method public int getNestedScrollAxes();
+ method public void onNestedScrollAccepted(android.view.View, android.view.View, int);
+ method public void onNestedScrollAccepted(android.view.View, android.view.View, int, int);
+ method public void onStopNestedScroll(android.view.View);
+ method public void onStopNestedScroll(android.view.View, int);
+ }
+
+ public interface OnApplyWindowInsetsListener {
+ method public androidx.core.view.WindowInsetsCompat! onApplyWindowInsets(android.view.View!, androidx.core.view.WindowInsetsCompat!);
+ }
+
+ public interface OnReceiveContentListener {
+ method public androidx.core.view.ContentInfoCompat? onReceiveContent(android.view.View, androidx.core.view.ContentInfoCompat);
+ }
+
+ public interface OnReceiveContentViewBehavior {
+ method public androidx.core.view.ContentInfoCompat? onReceiveContent(androidx.core.view.ContentInfoCompat);
+ }
+
+ public final class OneShotPreDrawListener implements android.view.View.OnAttachStateChangeListener android.view.ViewTreeObserver.OnPreDrawListener {
+ method public static androidx.core.view.OneShotPreDrawListener add(android.view.View, Runnable);
+ method public boolean onPreDraw();
+ method public void onViewAttachedToWindow(android.view.View!);
+ method public void onViewDetachedFromWindow(android.view.View!);
+ method public void removeListener();
+ }
+
+ public final class PointerIconCompat {
+ method public static androidx.core.view.PointerIconCompat! create(android.graphics.Bitmap!, float, float);
+ method public static androidx.core.view.PointerIconCompat! getSystemIcon(android.content.Context!, int);
+ method public static androidx.core.view.PointerIconCompat! load(android.content.res.Resources!, int);
+ field public static final int TYPE_ALIAS = 1010; // 0x3f2
+ field public static final int TYPE_ALL_SCROLL = 1013; // 0x3f5
+ field public static final int TYPE_ARROW = 1000; // 0x3e8
+ field public static final int TYPE_CELL = 1006; // 0x3ee
+ field public static final int TYPE_CONTEXT_MENU = 1001; // 0x3e9
+ field public static final int TYPE_COPY = 1011; // 0x3f3
+ field public static final int TYPE_CROSSHAIR = 1007; // 0x3ef
+ field public static final int TYPE_DEFAULT = 1000; // 0x3e8
+ field public static final int TYPE_GRAB = 1020; // 0x3fc
+ field public static final int TYPE_GRABBING = 1021; // 0x3fd
+ field public static final int TYPE_HAND = 1002; // 0x3ea
+ field public static final int TYPE_HELP = 1003; // 0x3eb
+ field public static final int TYPE_HORIZONTAL_DOUBLE_ARROW = 1014; // 0x3f6
+ field public static final int TYPE_NO_DROP = 1012; // 0x3f4
+ field public static final int TYPE_NULL = 0; // 0x0
+ field public static final int TYPE_TEXT = 1008; // 0x3f0
+ field public static final int TYPE_TOP_LEFT_DIAGONAL_DOUBLE_ARROW = 1017; // 0x3f9
+ field public static final int TYPE_TOP_RIGHT_DIAGONAL_DOUBLE_ARROW = 1016; // 0x3f8
+ field public static final int TYPE_VERTICAL_DOUBLE_ARROW = 1015; // 0x3f7
+ field public static final int TYPE_VERTICAL_TEXT = 1009; // 0x3f1
+ field public static final int TYPE_WAIT = 1004; // 0x3ec
+ field public static final int TYPE_ZOOM_IN = 1018; // 0x3fa
+ field public static final int TYPE_ZOOM_OUT = 1019; // 0x3fb
+ }
+
+ public final class ScaleGestureDetectorCompat {
+ method @Deprecated public static boolean isQuickScaleEnabled(Object!);
+ method public static boolean isQuickScaleEnabled(android.view.ScaleGestureDetector!);
+ method @Deprecated public static void setQuickScaleEnabled(Object!, boolean);
+ method public static void setQuickScaleEnabled(android.view.ScaleGestureDetector!, boolean);
+ }
+
+ public interface ScrollingView {
+ method public int computeHorizontalScrollExtent();
+ method public int computeHorizontalScrollOffset();
+ method public int computeHorizontalScrollRange();
+ method public int computeVerticalScrollExtent();
+ method public int computeVerticalScrollOffset();
+ method public int computeVerticalScrollRange();
+ }
+
+ public interface TintableBackgroundView {
+ method public android.content.res.ColorStateList? getSupportBackgroundTintList();
+ method public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
+ method public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
+ method public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
+ }
+
+ @Deprecated public final class VelocityTrackerCompat {
+ method @Deprecated public static float getXVelocity(android.view.VelocityTracker!, int);
+ method @Deprecated public static float getYVelocity(android.view.VelocityTracker!, int);
+ }
+
+ public class ViewCompat {
+ ctor @Deprecated protected ViewCompat();
+ method public static int addAccessibilityAction(android.view.View, CharSequence, androidx.core.view.accessibility.AccessibilityViewCommand);
+ method public static void addKeyboardNavigationClusters(android.view.View, java.util.Collection<android.view.View!>, int);
+ method public static void addOnUnhandledKeyEventListener(android.view.View, androidx.core.view.ViewCompat.OnUnhandledKeyEventListenerCompat);
+ method public static androidx.core.view.ViewPropertyAnimatorCompat animate(android.view.View);
+ method @Deprecated public static boolean canScrollHorizontally(android.view.View!, int);
+ method @Deprecated public static boolean canScrollVertically(android.view.View!, int);
+ method public static void cancelDragAndDrop(android.view.View);
+ method @Deprecated public static int combineMeasuredStates(int, int);
+ method public static androidx.core.view.WindowInsetsCompat computeSystemWindowInsets(android.view.View, androidx.core.view.WindowInsetsCompat, android.graphics.Rect);
+ method public static androidx.core.view.WindowInsetsCompat dispatchApplyWindowInsets(android.view.View, androidx.core.view.WindowInsetsCompat);
+ method public static void dispatchFinishTemporaryDetach(android.view.View);
+ method public static boolean dispatchNestedFling(android.view.View, float, float, boolean);
+ method public static boolean dispatchNestedPreFling(android.view.View, float, float);
+ method public static boolean dispatchNestedPreScroll(android.view.View, int, int, int[]?, int[]?);
+ method public static boolean dispatchNestedPreScroll(android.view.View, int, int, int[]?, int[]?, int);
+ method public static boolean dispatchNestedScroll(android.view.View, int, int, int, int, int[]?);
+ method public static void dispatchNestedScroll(android.view.View, int, int, int, int, int[]?, int, int[]);
+ method public static boolean dispatchNestedScroll(android.view.View, int, int, int, int, int[]?, int);
+ method public static void dispatchStartTemporaryDetach(android.view.View);
+ method public static void enableAccessibleClickableSpanSupport(android.view.View!);
+ method public static int generateViewId();
+ method public static androidx.core.view.AccessibilityDelegateCompat? getAccessibilityDelegate(android.view.View);
+ method public static int getAccessibilityLiveRegion(android.view.View);
+ method public static androidx.core.view.accessibility.AccessibilityNodeProviderCompat! getAccessibilityNodeProvider(android.view.View);
+ method @UiThread public static CharSequence! getAccessibilityPaneTitle(android.view.View!);
+ method @Deprecated public static float getAlpha(android.view.View!);
+ method public static android.content.res.ColorStateList! getBackgroundTintList(android.view.View);
+ method public static android.graphics.PorterDuff.Mode! getBackgroundTintMode(android.view.View);
+ method public static android.graphics.Rect? getClipBounds(android.view.View);
+ method public static android.view.Display? getDisplay(android.view.View);
+ method public static float getElevation(android.view.View);
+ method public static boolean getFitsSystemWindows(android.view.View);
+ method public static int getImportantForAccessibility(android.view.View);
+ method public static int getImportantForAutofill(android.view.View);
+ method public static int getLabelFor(android.view.View);
+ method @Deprecated public static int getLayerType(android.view.View!);
+ method public static int getLayoutDirection(android.view.View);
+ method @Deprecated public static android.graphics.Matrix? getMatrix(android.view.View!);
+ method @Deprecated public static int getMeasuredHeightAndState(android.view.View!);
+ method @Deprecated public static int getMeasuredState(android.view.View!);
+ method @Deprecated public static int getMeasuredWidthAndState(android.view.View!);
+ method public static int getMinimumHeight(android.view.View);
+ method public static int getMinimumWidth(android.view.View);
+ method public static int getNextClusterForwardId(android.view.View);
+ method public static String![]? getOnReceiveContentMimeTypes(android.view.View);
+ method @Deprecated public static int getOverScrollMode(android.view.View!);
+ method @Px public static int getPaddingEnd(android.view.View);
+ method @Px public static int getPaddingStart(android.view.View);
+ method public static android.view.ViewParent! getParentForAccessibility(android.view.View);
+ method @Deprecated public static float getPivotX(android.view.View!);
+ method @Deprecated public static float getPivotY(android.view.View!);
+ method public static androidx.core.view.WindowInsetsCompat? getRootWindowInsets(android.view.View);
+ method @Deprecated public static float getRotation(android.view.View!);
+ method @Deprecated public static float getRotationX(android.view.View!);
+ method @Deprecated public static float getRotationY(android.view.View!);
+ method @Deprecated public static float getScaleX(android.view.View!);
+ method @Deprecated public static float getScaleY(android.view.View!);
+ method public static int getScrollIndicators(android.view.View);
+ method @UiThread public static final CharSequence? getStateDescription(android.view.View);
+ method public static java.util.List<android.graphics.Rect!> getSystemGestureExclusionRects(android.view.View);
+ method public static String? getTransitionName(android.view.View);
+ method @Deprecated public static float getTranslationX(android.view.View!);
+ method @Deprecated public static float getTranslationY(android.view.View!);
+ method public static float getTranslationZ(android.view.View);
+ method public static androidx.core.view.WindowInsetsControllerCompat? getWindowInsetsController(android.view.View);
+ method public static int getWindowSystemUiVisibility(android.view.View);
+ method @Deprecated public static float getX(android.view.View!);
+ method @Deprecated public static float getY(android.view.View!);
+ method public static float getZ(android.view.View);
+ method public static boolean hasAccessibilityDelegate(android.view.View);
+ method public static boolean hasExplicitFocusable(android.view.View);
+ method public static boolean hasNestedScrollingParent(android.view.View);
+ method public static boolean hasNestedScrollingParent(android.view.View, int);
+ method public static boolean hasOnClickListeners(android.view.View);
+ method public static boolean hasOverlappingRendering(android.view.View);
+ method public static boolean hasTransientState(android.view.View);
+ method @UiThread public static boolean isAccessibilityHeading(android.view.View!);
+ method public static boolean isAttachedToWindow(android.view.View);
+ method public static boolean isFocusedByDefault(android.view.View);
+ method public static boolean isImportantForAccessibility(android.view.View);
+ method public static boolean isImportantForAutofill(android.view.View);
+ method public static boolean isInLayout(android.view.View);
+ method public static boolean isKeyboardNavigationCluster(android.view.View);
+ method public static boolean isLaidOut(android.view.View);
+ method public static boolean isLayoutDirectionResolved(android.view.View);
+ method public static boolean isNestedScrollingEnabled(android.view.View);
+ method @Deprecated public static boolean isOpaque(android.view.View!);
+ method public static boolean isPaddingRelative(android.view.View);
+ method @UiThread public static boolean isScreenReaderFocusable(android.view.View!);
+ method @Deprecated public static void jumpDrawablesToCurrentState(android.view.View!);
+ method public static android.view.View! keyboardNavigationClusterSearch(android.view.View, android.view.View!, int);
+ method public static void offsetLeftAndRight(android.view.View, int);
+ method public static void offsetTopAndBottom(android.view.View, int);
+ method public static androidx.core.view.WindowInsetsCompat onApplyWindowInsets(android.view.View, androidx.core.view.WindowInsetsCompat);
+ method @Deprecated public static void onInitializeAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
+ method public static void onInitializeAccessibilityNodeInfo(android.view.View, androidx.core.view.accessibility.AccessibilityNodeInfoCompat!);
+ method @Deprecated public static void onPopulateAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
+ method public static boolean performAccessibilityAction(android.view.View, int, android.os.Bundle!);
+ method public static androidx.core.view.ContentInfoCompat? performReceiveContent(android.view.View, androidx.core.view.ContentInfoCompat);
+ method public static void postInvalidateOnAnimation(android.view.View);
+ method public static void postInvalidateOnAnimation(android.view.View, int, int, int, int);
+ method public static void postOnAnimation(android.view.View, Runnable!);
+ method public static void postOnAnimationDelayed(android.view.View, Runnable!, long);
+ method public static void removeAccessibilityAction(android.view.View, int);
+ method public static void removeOnUnhandledKeyEventListener(android.view.View, androidx.core.view.ViewCompat.OnUnhandledKeyEventListenerCompat);
+ method public static void replaceAccessibilityAction(android.view.View, androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat, CharSequence?, androidx.core.view.accessibility.AccessibilityViewCommand?);
+ method public static void requestApplyInsets(android.view.View);
+ method public static <T extends android.view.View> T requireViewById(android.view.View, @IdRes int);
+ method @Deprecated public static int resolveSizeAndState(int, int, int);
+ method public static boolean restoreDefaultFocus(android.view.View);
+ method public static void saveAttributeDataForStyleable(android.view.View, android.content.Context, int[], android.util.AttributeSet?, android.content.res.TypedArray, int, int);
+ method public static void setAccessibilityDelegate(android.view.View, androidx.core.view.AccessibilityDelegateCompat!);
+ method @UiThread public static void setAccessibilityHeading(android.view.View!, boolean);
+ method public static void setAccessibilityLiveRegion(android.view.View, int);
+ method @UiThread public static void setAccessibilityPaneTitle(android.view.View!, CharSequence!);
+ method @Deprecated public static void setActivated(android.view.View!, boolean);
+ method @Deprecated public static void setAlpha(android.view.View!, @FloatRange(from=0.0, to=1.0) float);
+ method public static void setAutofillHints(android.view.View, java.lang.String!...);
+ method public static void setBackground(android.view.View, android.graphics.drawable.Drawable?);
+ method public static void setBackgroundTintList(android.view.View, android.content.res.ColorStateList!);
+ method public static void setBackgroundTintMode(android.view.View, android.graphics.PorterDuff.Mode!);
+ method @Deprecated public static void setChildrenDrawingOrderEnabled(android.view.ViewGroup!, boolean);
+ method public static void setClipBounds(android.view.View, android.graphics.Rect!);
+ method public static void setElevation(android.view.View, float);
+ method @Deprecated public static void setFitsSystemWindows(android.view.View!, boolean);
+ method public static void setFocusedByDefault(android.view.View, boolean);
+ method public static void setHasTransientState(android.view.View, boolean);
+ method public static void setImportantForAccessibility(android.view.View, int);
+ method public static void setImportantForAutofill(android.view.View, int);
+ method public static void setKeyboardNavigationCluster(android.view.View, boolean);
+ method public static void setLabelFor(android.view.View, @IdRes int);
+ method public static void setLayerPaint(android.view.View, android.graphics.Paint!);
+ method @Deprecated public static void setLayerType(android.view.View!, int, android.graphics.Paint!);
+ method public static void setLayoutDirection(android.view.View, int);
+ method public static void setNestedScrollingEnabled(android.view.View, boolean);
+ method public static void setNextClusterForwardId(android.view.View, int);
+ method public static void setOnApplyWindowInsetsListener(android.view.View, androidx.core.view.OnApplyWindowInsetsListener?);
+ method public static void setOnReceiveContentListener(android.view.View, String![]?, androidx.core.view.OnReceiveContentListener?);
+ method @Deprecated public static void setOverScrollMode(android.view.View!, int);
+ method public static void setPaddingRelative(android.view.View, @Px int, @Px int, @Px int, @Px int);
+ method @Deprecated public static void setPivotX(android.view.View!, float);
+ method @Deprecated public static void setPivotY(android.view.View!, float);
+ method public static void setPointerIcon(android.view.View, androidx.core.view.PointerIconCompat!);
+ method @Deprecated public static void setRotation(android.view.View!, float);
+ method @Deprecated public static void setRotationX(android.view.View!, float);
+ method @Deprecated public static void setRotationY(android.view.View!, float);
+ method @Deprecated public static void setSaveFromParentEnabled(android.view.View!, boolean);
+ method @Deprecated public static void setScaleX(android.view.View!, float);
+ method @Deprecated public static void setScaleY(android.view.View!, float);
+ method @UiThread public static void setScreenReaderFocusable(android.view.View!, boolean);
+ method public static void setScrollIndicators(android.view.View, int);
+ method public static void setScrollIndicators(android.view.View, int, int);
+ method @UiThread public static void setStateDescription(android.view.View, CharSequence?);
+ method public static void setSystemGestureExclusionRects(android.view.View, java.util.List<android.graphics.Rect!>);
+ method public static void setTooltipText(android.view.View, CharSequence?);
+ method public static void setTransitionName(android.view.View, String!);
+ method @Deprecated public static void setTranslationX(android.view.View!, float);
+ method @Deprecated public static void setTranslationY(android.view.View!, float);
+ method public static void setTranslationZ(android.view.View, float);
+ method public static void setWindowInsetsAnimationCallback(android.view.View, androidx.core.view.WindowInsetsAnimationCompat.Callback?);
+ method @Deprecated public static void setX(android.view.View!, float);
+ method @Deprecated public static void setY(android.view.View!, float);
+ method public static void setZ(android.view.View, float);
+ method public static boolean startDragAndDrop(android.view.View, android.content.ClipData!, android.view.View.DragShadowBuilder!, Object!, int);
+ method public static boolean startNestedScroll(android.view.View, int);
+ method public static boolean startNestedScroll(android.view.View, int, int);
+ method public static void stopNestedScroll(android.view.View);
+ method public static void stopNestedScroll(android.view.View, int);
+ method public static void updateDragShadow(android.view.View, android.view.View.DragShadowBuilder!);
+ field public static final int ACCESSIBILITY_LIVE_REGION_ASSERTIVE = 2; // 0x2
+ field public static final int ACCESSIBILITY_LIVE_REGION_NONE = 0; // 0x0
+ field public static final int ACCESSIBILITY_LIVE_REGION_POLITE = 1; // 0x1
+ field public static final int IMPORTANT_FOR_ACCESSIBILITY_AUTO = 0; // 0x0
+ field public static final int IMPORTANT_FOR_ACCESSIBILITY_NO = 2; // 0x2
+ field public static final int IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS = 4; // 0x4
+ field public static final int IMPORTANT_FOR_ACCESSIBILITY_YES = 1; // 0x1
+ field @Deprecated public static final int LAYER_TYPE_HARDWARE = 2; // 0x2
+ field @Deprecated public static final int LAYER_TYPE_NONE = 0; // 0x0
+ field @Deprecated public static final int LAYER_TYPE_SOFTWARE = 1; // 0x1
+ field public static final int LAYOUT_DIRECTION_INHERIT = 2; // 0x2
+ field public static final int LAYOUT_DIRECTION_LOCALE = 3; // 0x3
+ field public static final int LAYOUT_DIRECTION_LTR = 0; // 0x0
+ field public static final int LAYOUT_DIRECTION_RTL = 1; // 0x1
+ field @Deprecated public static final int MEASURED_HEIGHT_STATE_SHIFT = 16; // 0x10
+ field @Deprecated public static final int MEASURED_SIZE_MASK = 16777215; // 0xffffff
+ field @Deprecated public static final int MEASURED_STATE_MASK = -16777216; // 0xff000000
+ field @Deprecated public static final int MEASURED_STATE_TOO_SMALL = 16777216; // 0x1000000
+ field @Deprecated public static final int OVER_SCROLL_ALWAYS = 0; // 0x0
+ field @Deprecated public static final int OVER_SCROLL_IF_CONTENT_SCROLLS = 1; // 0x1
+ field @Deprecated public static final int OVER_SCROLL_NEVER = 2; // 0x2
+ field public static final int SCROLL_AXIS_HORIZONTAL = 1; // 0x1
+ field public static final int SCROLL_AXIS_NONE = 0; // 0x0
+ field public static final int SCROLL_AXIS_VERTICAL = 2; // 0x2
+ field public static final int SCROLL_INDICATOR_BOTTOM = 2; // 0x2
+ field public static final int SCROLL_INDICATOR_END = 32; // 0x20
+ field public static final int SCROLL_INDICATOR_LEFT = 4; // 0x4
+ field public static final int SCROLL_INDICATOR_RIGHT = 8; // 0x8
+ field public static final int SCROLL_INDICATOR_START = 16; // 0x10
+ field public static final int SCROLL_INDICATOR_TOP = 1; // 0x1
+ field public static final int TYPE_NON_TOUCH = 1; // 0x1
+ field public static final int TYPE_TOUCH = 0; // 0x0
+ }
+
+ public static interface ViewCompat.OnUnhandledKeyEventListenerCompat {
+ method public boolean onUnhandledKeyEvent(android.view.View!, android.view.KeyEvent!);
+ }
+
+ public final class ViewConfigurationCompat {
+ method public static float getScaledHorizontalScrollFactor(android.view.ViewConfiguration, android.content.Context);
+ method public static int getScaledHoverSlop(android.view.ViewConfiguration!);
+ method @Deprecated public static int getScaledPagingTouchSlop(android.view.ViewConfiguration!);
+ method public static float getScaledVerticalScrollFactor(android.view.ViewConfiguration, android.content.Context);
+ method @Deprecated public static boolean hasPermanentMenuKey(android.view.ViewConfiguration!);
+ method public static boolean shouldShowMenuShortcutsWhenKeyboardPresent(android.view.ViewConfiguration!, android.content.Context);
+ }
+
+ public final class ViewGroupCompat {
+ method public static int getLayoutMode(android.view.ViewGroup);
+ method public static int getNestedScrollAxes(android.view.ViewGroup);
+ method public static boolean isTransitionGroup(android.view.ViewGroup);
+ method @Deprecated public static boolean onRequestSendAccessibilityEvent(android.view.ViewGroup!, android.view.View!, android.view.accessibility.AccessibilityEvent!);
+ method public static void setLayoutMode(android.view.ViewGroup, int);
+ method @Deprecated public static void setMotionEventSplittingEnabled(android.view.ViewGroup!, boolean);
+ method public static void setTransitionGroup(android.view.ViewGroup, boolean);
+ field public static final int LAYOUT_MODE_CLIP_BOUNDS = 0; // 0x0
+ field public static final int LAYOUT_MODE_OPTICAL_BOUNDS = 1; // 0x1
+ }
+
+ public final class ViewParentCompat {
+ method public static void notifySubtreeAccessibilityStateChanged(android.view.ViewParent!, android.view.View!, android.view.View!, int);
+ method public static boolean onNestedFling(android.view.ViewParent!, android.view.View!, float, float, boolean);
+ method public static boolean onNestedPreFling(android.view.ViewParent!, android.view.View!, float, float);
+ method public static void onNestedPreScroll(android.view.ViewParent!, android.view.View!, int, int, int[]!);
+ method public static void onNestedPreScroll(android.view.ViewParent!, android.view.View!, int, int, int[]!, int);
+ method public static void onNestedScroll(android.view.ViewParent!, android.view.View!, int, int, int, int);
+ method public static void onNestedScroll(android.view.ViewParent!, android.view.View!, int, int, int, int, int);
+ method public static void onNestedScroll(android.view.ViewParent!, android.view.View!, int, int, int, int, int, int[]);
+ method public static void onNestedScrollAccepted(android.view.ViewParent!, android.view.View!, android.view.View!, int);
+ method public static void onNestedScrollAccepted(android.view.ViewParent!, android.view.View!, android.view.View!, int, int);
+ method public static boolean onStartNestedScroll(android.view.ViewParent!, android.view.View!, android.view.View!, int);
+ method public static boolean onStartNestedScroll(android.view.ViewParent!, android.view.View!, android.view.View!, int, int);
+ method public static void onStopNestedScroll(android.view.ViewParent!, android.view.View!);
+ method public static void onStopNestedScroll(android.view.ViewParent!, android.view.View!, int);
+ method @Deprecated public static boolean requestSendAccessibilityEvent(android.view.ViewParent!, android.view.View!, android.view.accessibility.AccessibilityEvent!);
+ }
+
+ public final class ViewPropertyAnimatorCompat {
+ method public androidx.core.view.ViewPropertyAnimatorCompat! alpha(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! alphaBy(float);
+ method public void cancel();
+ method public long getDuration();
+ method public android.view.animation.Interpolator! getInterpolator();
+ method public long getStartDelay();
+ method public androidx.core.view.ViewPropertyAnimatorCompat! rotation(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! rotationBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! rotationX(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! rotationXBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! rotationY(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! rotationYBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! scaleX(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! scaleXBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! scaleY(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! scaleYBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! setDuration(long);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! setInterpolator(android.view.animation.Interpolator!);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! setListener(androidx.core.view.ViewPropertyAnimatorListener!);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! setStartDelay(long);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! setUpdateListener(androidx.core.view.ViewPropertyAnimatorUpdateListener!);
+ method public void start();
+ method public androidx.core.view.ViewPropertyAnimatorCompat! translationX(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! translationXBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! translationY(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! translationYBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! translationZ(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! translationZBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! withEndAction(Runnable!);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! withLayer();
+ method public androidx.core.view.ViewPropertyAnimatorCompat! withStartAction(Runnable!);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! x(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! xBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! y(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! yBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! z(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! zBy(float);
+ }
+
+ public interface ViewPropertyAnimatorListener {
+ method public void onAnimationCancel(android.view.View!);
+ method public void onAnimationEnd(android.view.View!);
+ method public void onAnimationStart(android.view.View!);
+ }
+
+ public class ViewPropertyAnimatorListenerAdapter implements androidx.core.view.ViewPropertyAnimatorListener {
+ ctor public ViewPropertyAnimatorListenerAdapter();
+ method public void onAnimationCancel(android.view.View!);
+ method public void onAnimationEnd(android.view.View!);
+ method public void onAnimationStart(android.view.View!);
+ }
+
+ public interface ViewPropertyAnimatorUpdateListener {
+ method public void onAnimationUpdate(android.view.View!);
+ }
+
+ public final class WindowCompat {
+ method public static androidx.core.view.WindowInsetsControllerCompat? getInsetsController(android.view.Window, android.view.View);
+ method public static <T extends android.view.View> T requireViewById(android.view.Window, @IdRes int);
+ method public static void setDecorFitsSystemWindows(android.view.Window, boolean);
+ field public static final int FEATURE_ACTION_BAR = 8; // 0x8
+ field public static final int FEATURE_ACTION_BAR_OVERLAY = 9; // 0x9
+ field public static final int FEATURE_ACTION_MODE_OVERLAY = 10; // 0xa
+ }
+
+ public final class WindowInsetsAnimationCompat {
+ ctor public WindowInsetsAnimationCompat(int, android.view.animation.Interpolator?, long);
+ method @FloatRange(from=0.0f, to=1.0f) public float getAlpha();
+ method public long getDurationMillis();
+ method @FloatRange(from=0.0f, to=1.0f) public float getFraction();
+ method public float getInterpolatedFraction();
+ method public android.view.animation.Interpolator? getInterpolator();
+ method public int getTypeMask();
+ method public void setAlpha(@FloatRange(from=0.0f, to=1.0f) float);
+ method public void setFraction(@FloatRange(from=0.0f, to=1.0f) float);
+ }
+
+ public static final class WindowInsetsAnimationCompat.BoundsCompat {
+ ctor public WindowInsetsAnimationCompat.BoundsCompat(androidx.core.graphics.Insets, androidx.core.graphics.Insets);
+ method public androidx.core.graphics.Insets getLowerBound();
+ method public androidx.core.graphics.Insets getUpperBound();
+ method public androidx.core.view.WindowInsetsAnimationCompat.BoundsCompat inset(androidx.core.graphics.Insets);
+ method @RequiresApi(30) public android.view.WindowInsetsAnimation.Bounds toBounds();
+ method @RequiresApi(30) public static androidx.core.view.WindowInsetsAnimationCompat.BoundsCompat toBoundsCompat(android.view.WindowInsetsAnimation.Bounds);
+ }
+
+ public abstract static class WindowInsetsAnimationCompat.Callback {
+ ctor public WindowInsetsAnimationCompat.Callback(int);
+ method public final int getDispatchMode();
+ method public void onEnd(androidx.core.view.WindowInsetsAnimationCompat);
+ method public void onPrepare(androidx.core.view.WindowInsetsAnimationCompat);
+ method public abstract androidx.core.view.WindowInsetsCompat onProgress(androidx.core.view.WindowInsetsCompat, java.util.List<androidx.core.view.WindowInsetsAnimationCompat!>);
+ method public androidx.core.view.WindowInsetsAnimationCompat.BoundsCompat onStart(androidx.core.view.WindowInsetsAnimationCompat, androidx.core.view.WindowInsetsAnimationCompat.BoundsCompat);
+ field public static final int DISPATCH_MODE_CONTINUE_ON_SUBTREE = 1; // 0x1
+ field public static final int DISPATCH_MODE_STOP = 0; // 0x0
+ }
+
+ public interface WindowInsetsAnimationControlListenerCompat {
+ method public void onCancelled(androidx.core.view.WindowInsetsAnimationControllerCompat?);
+ method public void onFinished(androidx.core.view.WindowInsetsAnimationControllerCompat);
+ method public void onReady(androidx.core.view.WindowInsetsAnimationControllerCompat, int);
+ }
+
+ public final class WindowInsetsAnimationControllerCompat {
+ method public void finish(boolean);
+ method public float getCurrentAlpha();
+ method @FloatRange(from=0.0f, to=1.0f) public float getCurrentFraction();
+ method public androidx.core.graphics.Insets getCurrentInsets();
+ method public androidx.core.graphics.Insets getHiddenStateInsets();
+ method public androidx.core.graphics.Insets getShownStateInsets();
+ method public int getTypes();
+ method public boolean isCancelled();
+ method public boolean isFinished();
+ method public boolean isReady();
+ method public void setInsetsAndAlpha(androidx.core.graphics.Insets?, @FloatRange(from=0.0f, to=1.0f) float, @FloatRange(from=0.0f, to=1.0f) float);
+ }
+
+ public class WindowInsetsCompat {
+ ctor public WindowInsetsCompat(androidx.core.view.WindowInsetsCompat?);
+ method @Deprecated public androidx.core.view.WindowInsetsCompat consumeDisplayCutout();
+ method @Deprecated public androidx.core.view.WindowInsetsCompat consumeStableInsets();
+ method @Deprecated public androidx.core.view.WindowInsetsCompat consumeSystemWindowInsets();
+ method public androidx.core.view.DisplayCutoutCompat? getDisplayCutout();
+ method public androidx.core.graphics.Insets getInsets(int);
+ method public androidx.core.graphics.Insets getInsetsIgnoringVisibility(int);
+ method @Deprecated public androidx.core.graphics.Insets getMandatorySystemGestureInsets();
+ method @Deprecated public int getStableInsetBottom();
+ method @Deprecated public int getStableInsetLeft();
+ method @Deprecated public int getStableInsetRight();
+ method @Deprecated public int getStableInsetTop();
+ method @Deprecated public androidx.core.graphics.Insets getStableInsets();
+ method @Deprecated public androidx.core.graphics.Insets getSystemGestureInsets();
+ method @Deprecated public int getSystemWindowInsetBottom();
+ method @Deprecated public int getSystemWindowInsetLeft();
+ method @Deprecated public int getSystemWindowInsetRight();
+ method @Deprecated public int getSystemWindowInsetTop();
+ method @Deprecated public androidx.core.graphics.Insets getSystemWindowInsets();
+ method @Deprecated public androidx.core.graphics.Insets getTappableElementInsets();
+ method public boolean hasInsets();
+ method @Deprecated public boolean hasStableInsets();
+ method @Deprecated public boolean hasSystemWindowInsets();
+ method public androidx.core.view.WindowInsetsCompat inset(androidx.core.graphics.Insets);
+ method public androidx.core.view.WindowInsetsCompat inset(@IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int);
+ method public boolean isConsumed();
+ method public boolean isRound();
+ method public boolean isVisible(int);
+ method @Deprecated public androidx.core.view.WindowInsetsCompat replaceSystemWindowInsets(int, int, int, int);
+ method @Deprecated public androidx.core.view.WindowInsetsCompat replaceSystemWindowInsets(android.graphics.Rect);
+ method @RequiresApi(20) public android.view.WindowInsets? toWindowInsets();
+ method @RequiresApi(20) public static androidx.core.view.WindowInsetsCompat toWindowInsetsCompat(android.view.WindowInsets);
+ method @RequiresApi(20) public static androidx.core.view.WindowInsetsCompat toWindowInsetsCompat(android.view.WindowInsets, android.view.View?);
+ field public static final androidx.core.view.WindowInsetsCompat CONSUMED;
+ }
+
+ public static final class WindowInsetsCompat.Builder {
+ ctor public WindowInsetsCompat.Builder();
+ ctor public WindowInsetsCompat.Builder(androidx.core.view.WindowInsetsCompat);
+ method public androidx.core.view.WindowInsetsCompat build();
+ method public androidx.core.view.WindowInsetsCompat.Builder setDisplayCutout(androidx.core.view.DisplayCutoutCompat?);
+ method public androidx.core.view.WindowInsetsCompat.Builder setInsets(int, androidx.core.graphics.Insets);
+ method public androidx.core.view.WindowInsetsCompat.Builder setInsetsIgnoringVisibility(int, androidx.core.graphics.Insets);
+ method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setMandatorySystemGestureInsets(androidx.core.graphics.Insets);
+ method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setStableInsets(androidx.core.graphics.Insets);
+ method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setSystemGestureInsets(androidx.core.graphics.Insets);
+ method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setSystemWindowInsets(androidx.core.graphics.Insets);
+ method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setTappableElementInsets(androidx.core.graphics.Insets);
+ method public androidx.core.view.WindowInsetsCompat.Builder setVisible(int, boolean);
+ }
+
+ public static final class WindowInsetsCompat.Type {
+ method public static int captionBar();
+ method public static int displayCutout();
+ method public static int ime();
+ method public static int mandatorySystemGestures();
+ method public static int navigationBars();
+ method public static int statusBars();
+ method public static int systemBars();
+ method public static int systemGestures();
+ method public static int tappableElement();
+ }
+
+ public final class WindowInsetsControllerCompat {
+ ctor public WindowInsetsControllerCompat(android.view.Window, android.view.View);
+ method public void addOnControllableInsetsChangedListener(androidx.core.view.WindowInsetsControllerCompat.OnControllableInsetsChangedListener);
+ method public void controlWindowInsetsAnimation(int, long, android.view.animation.Interpolator?, android.os.CancellationSignal?, androidx.core.view.WindowInsetsAnimationControlListenerCompat);
+ method public int getSystemBarsBehavior();
+ method public void hide(int);
+ method public boolean isAppearanceLightNavigationBars();
+ method public boolean isAppearanceLightStatusBars();
+ method public void removeOnControllableInsetsChangedListener(androidx.core.view.WindowInsetsControllerCompat.OnControllableInsetsChangedListener);
+ method public void setAppearanceLightNavigationBars(boolean);
+ method public void setAppearanceLightStatusBars(boolean);
+ method public void setSystemBarsBehavior(int);
+ method public void show(int);
+ method @RequiresApi(30) public static androidx.core.view.WindowInsetsControllerCompat toWindowInsetsControllerCompat(android.view.WindowInsetsController);
+ field public static final int BEHAVIOR_SHOW_BARS_BY_SWIPE = 1; // 0x1
+ field public static final int BEHAVIOR_SHOW_BARS_BY_TOUCH = 0; // 0x0
+ field public static final int BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE = 2; // 0x2
+ }
+
+ public static interface WindowInsetsControllerCompat.OnControllableInsetsChangedListener {
+ method public void onControllableInsetsChanged(androidx.core.view.WindowInsetsControllerCompat, int);
+ }
+
+}
+
+package androidx.core.view.accessibility {
+
+ public final class AccessibilityClickableSpanCompat extends android.text.style.ClickableSpan {
+ method public void onClick(android.view.View);
+ }
+
+ public final class AccessibilityEventCompat {
+ method @Deprecated public static void appendRecord(android.view.accessibility.AccessibilityEvent!, androidx.core.view.accessibility.AccessibilityRecordCompat!);
+ method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! asRecord(android.view.accessibility.AccessibilityEvent!);
+ method public static int getAction(android.view.accessibility.AccessibilityEvent!);
+ method public static int getContentChangeTypes(android.view.accessibility.AccessibilityEvent!);
+ method public static int getMovementGranularity(android.view.accessibility.AccessibilityEvent!);
+ method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! getRecord(android.view.accessibility.AccessibilityEvent!, int);
+ method @Deprecated public static int getRecordCount(android.view.accessibility.AccessibilityEvent!);
+ method public static void setAction(android.view.accessibility.AccessibilityEvent!, int);
+ method public static void setContentChangeTypes(android.view.accessibility.AccessibilityEvent!, int);
+ method public static void setMovementGranularity(android.view.accessibility.AccessibilityEvent!, int);
+ field public static final int CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION = 4; // 0x4
+ field public static final int CONTENT_CHANGE_TYPE_PANE_APPEARED = 16; // 0x10
+ field public static final int CONTENT_CHANGE_TYPE_PANE_DISAPPEARED = 32; // 0x20
+ field public static final int CONTENT_CHANGE_TYPE_PANE_TITLE = 8; // 0x8
+ field public static final int CONTENT_CHANGE_TYPE_STATE_DESCRIPTION = 64; // 0x40
+ field public static final int CONTENT_CHANGE_TYPE_SUBTREE = 1; // 0x1
+ field public static final int CONTENT_CHANGE_TYPE_TEXT = 2; // 0x2
+ field public static final int CONTENT_CHANGE_TYPE_UNDEFINED = 0; // 0x0
+ field public static final int TYPES_ALL_MASK = -1; // 0xffffffff
+ field public static final int TYPE_ANNOUNCEMENT = 16384; // 0x4000
+ field public static final int TYPE_ASSIST_READING_CONTEXT = 16777216; // 0x1000000
+ field public static final int TYPE_GESTURE_DETECTION_END = 524288; // 0x80000
+ field public static final int TYPE_GESTURE_DETECTION_START = 262144; // 0x40000
+ field @Deprecated public static final int TYPE_TOUCH_EXPLORATION_GESTURE_END = 1024; // 0x400
+ field @Deprecated public static final int TYPE_TOUCH_EXPLORATION_GESTURE_START = 512; // 0x200
+ field public static final int TYPE_TOUCH_INTERACTION_END = 2097152; // 0x200000
+ field public static final int TYPE_TOUCH_INTERACTION_START = 1048576; // 0x100000
+ field public static final int TYPE_VIEW_ACCESSIBILITY_FOCUSED = 32768; // 0x8000
+ field public static final int TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED = 65536; // 0x10000
+ field public static final int TYPE_VIEW_CONTEXT_CLICKED = 8388608; // 0x800000
+ field @Deprecated public static final int TYPE_VIEW_HOVER_ENTER = 128; // 0x80
+ field @Deprecated public static final int TYPE_VIEW_HOVER_EXIT = 256; // 0x100
+ field @Deprecated public static final int TYPE_VIEW_SCROLLED = 4096; // 0x1000
+ field @Deprecated public static final int TYPE_VIEW_TEXT_SELECTION_CHANGED = 8192; // 0x2000
+ field public static final int TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY = 131072; // 0x20000
+ field public static final int TYPE_WINDOWS_CHANGED = 4194304; // 0x400000
+ field @Deprecated public static final int TYPE_WINDOW_CONTENT_CHANGED = 2048; // 0x800
+ }
+
+ public final class AccessibilityManagerCompat {
+ method @Deprecated public static boolean addAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListener!);
+ method public static boolean addTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.TouchExplorationStateChangeListener!);
+ method @Deprecated public static java.util.List<android.accessibilityservice.AccessibilityServiceInfo!>! getEnabledAccessibilityServiceList(android.view.accessibility.AccessibilityManager!, int);
+ method @Deprecated public static java.util.List<android.accessibilityservice.AccessibilityServiceInfo!>! getInstalledAccessibilityServiceList(android.view.accessibility.AccessibilityManager!);
+ method @Deprecated public static boolean isTouchExplorationEnabled(android.view.accessibility.AccessibilityManager!);
+ method @Deprecated public static boolean removeAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListener!);
+ method public static boolean removeTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.TouchExplorationStateChangeListener!);
+ }
+
+ @Deprecated public static interface AccessibilityManagerCompat.AccessibilityStateChangeListener {
+ method @Deprecated public void onAccessibilityStateChanged(boolean);
+ }
+
+ @Deprecated public abstract static class AccessibilityManagerCompat.AccessibilityStateChangeListenerCompat implements androidx.core.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListener {
+ ctor @Deprecated public AccessibilityManagerCompat.AccessibilityStateChangeListenerCompat();
+ }
+
+ public static interface AccessibilityManagerCompat.TouchExplorationStateChangeListener {
+ method public void onTouchExplorationStateChanged(boolean);
+ }
+
+ public class AccessibilityNodeInfoCompat {
+ ctor @Deprecated public AccessibilityNodeInfoCompat(Object!);
+ method public void addAction(int);
+ method public void addAction(androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat!);
+ method public void addChild(android.view.View!);
+ method public void addChild(android.view.View!, int);
+ method public boolean canOpenPopup();
+ method public java.util.List<androidx.core.view.accessibility.AccessibilityNodeInfoCompat!>! findAccessibilityNodeInfosByText(String!);
+ method public java.util.List<androidx.core.view.accessibility.AccessibilityNodeInfoCompat!>! findAccessibilityNodeInfosByViewId(String!);
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! findFocus(int);
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! focusSearch(int);
+ method public java.util.List<androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat!>! getActionList();
+ method public int getActions();
+ method @Deprecated public void getBoundsInParent(android.graphics.Rect!);
+ method public void getBoundsInScreen(android.graphics.Rect!);
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getChild(int);
+ method public int getChildCount();
+ method public CharSequence! getClassName();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionInfoCompat! getCollectionInfo();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionItemInfoCompat! getCollectionItemInfo();
+ method public CharSequence! getContentDescription();
+ method public int getDrawingOrder();
+ method public CharSequence! getError();
+ method public android.os.Bundle! getExtras();
+ method public CharSequence? getHintText();
+ method @Deprecated public Object! getInfo();
+ method public int getInputType();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getLabelFor();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getLabeledBy();
+ method public int getLiveRegion();
+ method public int getMaxTextLength();
+ method public int getMovementGranularities();
+ method public CharSequence! getPackageName();
+ method public CharSequence? getPaneTitle();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getParent();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat! getRangeInfo();
+ method public CharSequence? getRoleDescription();
+ method public CharSequence? getStateDescription();
+ method public CharSequence! getText();
+ method public int getTextSelectionEnd();
+ method public int getTextSelectionStart();
+ method public CharSequence? getTooltipText();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.TouchDelegateInfoCompat? getTouchDelegateInfo();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getTraversalAfter();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getTraversalBefore();
+ method public String! getViewIdResourceName();
+ method public androidx.core.view.accessibility.AccessibilityWindowInfoCompat! getWindow();
+ method public int getWindowId();
+ method public boolean isAccessibilityFocused();
+ method public boolean isCheckable();
+ method public boolean isChecked();
+ method public boolean isClickable();
+ method public boolean isContentInvalid();
+ method public boolean isContextClickable();
+ method public boolean isDismissable();
+ method public boolean isEditable();
+ method public boolean isEnabled();
+ method public boolean isFocusable();
+ method public boolean isFocused();
+ method public boolean isHeading();
+ method public boolean isImportantForAccessibility();
+ method public boolean isLongClickable();
+ method public boolean isMultiLine();
+ method public boolean isPassword();
+ method public boolean isScreenReaderFocusable();
+ method public boolean isScrollable();
+ method public boolean isSelected();
+ method public boolean isShowingHintText();
+ method public boolean isTextEntryKey();
+ method public boolean isVisibleToUser();
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! obtain(android.view.View!);
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! obtain(android.view.View!, int);
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! obtain();
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! obtain(androidx.core.view.accessibility.AccessibilityNodeInfoCompat!);
+ method public boolean performAction(int);
+ method public boolean performAction(int, android.os.Bundle!);
+ method public void recycle();
+ method public boolean refresh();
+ method public boolean removeAction(androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat!);
+ method public boolean removeChild(android.view.View!);
+ method public boolean removeChild(android.view.View!, int);
+ method public void setAccessibilityFocused(boolean);
+ method @Deprecated public void setBoundsInParent(android.graphics.Rect!);
+ method public void setBoundsInScreen(android.graphics.Rect!);
+ method public void setCanOpenPopup(boolean);
+ method public void setCheckable(boolean);
+ method public void setChecked(boolean);
+ method public void setClassName(CharSequence!);
+ method public void setClickable(boolean);
+ method public void setCollectionInfo(Object!);
+ method public void setCollectionItemInfo(Object!);
+ method public void setContentDescription(CharSequence!);
+ method public void setContentInvalid(boolean);
+ method public void setContextClickable(boolean);
+ method public void setDismissable(boolean);
+ method public void setDrawingOrder(int);
+ method public void setEditable(boolean);
+ method public void setEnabled(boolean);
+ method public void setError(CharSequence!);
+ method public void setFocusable(boolean);
+ method public void setFocused(boolean);
+ method public void setHeading(boolean);
+ method public void setHintText(CharSequence?);
+ method public void setImportantForAccessibility(boolean);
+ method public void setInputType(int);
+ method public void setLabelFor(android.view.View!);
+ method public void setLabelFor(android.view.View!, int);
+ method public void setLabeledBy(android.view.View!);
+ method public void setLabeledBy(android.view.View!, int);
+ method public void setLiveRegion(int);
+ method public void setLongClickable(boolean);
+ method public void setMaxTextLength(int);
+ method public void setMovementGranularities(int);
+ method public void setMultiLine(boolean);
+ method public void setPackageName(CharSequence!);
+ method public void setPaneTitle(CharSequence?);
+ method public void setParent(android.view.View!);
+ method public void setParent(android.view.View!, int);
+ method public void setPassword(boolean);
+ method public void setRangeInfo(androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat!);
+ method public void setRoleDescription(CharSequence?);
+ method public void setScreenReaderFocusable(boolean);
+ method public void setScrollable(boolean);
+ method public void setSelected(boolean);
+ method public void setShowingHintText(boolean);
+ method public void setSource(android.view.View!);
+ method public void setSource(android.view.View!, int);
+ method public void setStateDescription(CharSequence?);
+ method public void setText(CharSequence!);
+ method public void setTextEntryKey(boolean);
+ method public void setTextSelection(int, int);
+ method public void setTooltipText(CharSequence?);
+ method public void setTouchDelegateInfo(androidx.core.view.accessibility.AccessibilityNodeInfoCompat.TouchDelegateInfoCompat);
+ method public void setTraversalAfter(android.view.View!);
+ method public void setTraversalAfter(android.view.View!, int);
+ method public void setTraversalBefore(android.view.View!);
+ method public void setTraversalBefore(android.view.View!, int);
+ method public void setViewIdResourceName(String!);
+ method public void setVisibleToUser(boolean);
+ method public android.view.accessibility.AccessibilityNodeInfo! unwrap();
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! wrap(android.view.accessibility.AccessibilityNodeInfo);
+ field public static final int ACTION_ACCESSIBILITY_FOCUS = 64; // 0x40
+ field public static final String ACTION_ARGUMENT_COLUMN_INT = "android.view.accessibility.action.ARGUMENT_COLUMN_INT";
+ field public static final String ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN = "ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN";
+ field public static final String ACTION_ARGUMENT_HTML_ELEMENT_STRING = "ACTION_ARGUMENT_HTML_ELEMENT_STRING";
+ field public static final String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT = "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
+ field public static final String ACTION_ARGUMENT_MOVE_WINDOW_X = "ACTION_ARGUMENT_MOVE_WINDOW_X";
+ field public static final String ACTION_ARGUMENT_MOVE_WINDOW_Y = "ACTION_ARGUMENT_MOVE_WINDOW_Y";
+ field public static final String ACTION_ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT = "android.view.accessibility.action.ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT";
+ field public static final String ACTION_ARGUMENT_PROGRESS_VALUE = "android.view.accessibility.action.ARGUMENT_PROGRESS_VALUE";
+ field public static final String ACTION_ARGUMENT_ROW_INT = "android.view.accessibility.action.ARGUMENT_ROW_INT";
+ field public static final String ACTION_ARGUMENT_SELECTION_END_INT = "ACTION_ARGUMENT_SELECTION_END_INT";
+ field public static final String ACTION_ARGUMENT_SELECTION_START_INT = "ACTION_ARGUMENT_SELECTION_START_INT";
+ field public static final String ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE = "ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE";
+ field public static final int ACTION_CLEAR_ACCESSIBILITY_FOCUS = 128; // 0x80
+ field public static final int ACTION_CLEAR_FOCUS = 2; // 0x2
+ field public static final int ACTION_CLEAR_SELECTION = 8; // 0x8
+ field public static final int ACTION_CLICK = 16; // 0x10
+ field public static final int ACTION_COLLAPSE = 524288; // 0x80000
+ field public static final int ACTION_COPY = 16384; // 0x4000
+ field public static final int ACTION_CUT = 65536; // 0x10000
+ field public static final int ACTION_DISMISS = 1048576; // 0x100000
+ field public static final int ACTION_EXPAND = 262144; // 0x40000
+ field public static final int ACTION_FOCUS = 1; // 0x1
+ field public static final int ACTION_LONG_CLICK = 32; // 0x20
+ field public static final int ACTION_NEXT_AT_MOVEMENT_GRANULARITY = 256; // 0x100
+ field public static final int ACTION_NEXT_HTML_ELEMENT = 1024; // 0x400
+ field public static final int ACTION_PASTE = 32768; // 0x8000
+ field public static final int ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY = 512; // 0x200
+ field public static final int ACTION_PREVIOUS_HTML_ELEMENT = 2048; // 0x800
+ field public static final int ACTION_SCROLL_BACKWARD = 8192; // 0x2000
+ field public static final int ACTION_SCROLL_FORWARD = 4096; // 0x1000
+ field public static final int ACTION_SELECT = 4; // 0x4
+ field public static final int ACTION_SET_SELECTION = 131072; // 0x20000
+ field public static final int ACTION_SET_TEXT = 2097152; // 0x200000
+ field public static final int FOCUS_ACCESSIBILITY = 2; // 0x2
+ field public static final int FOCUS_INPUT = 1; // 0x1
+ field public static final int MOVEMENT_GRANULARITY_CHARACTER = 1; // 0x1
+ field public static final int MOVEMENT_GRANULARITY_LINE = 4; // 0x4
+ field public static final int MOVEMENT_GRANULARITY_PAGE = 16; // 0x10
+ field public static final int MOVEMENT_GRANULARITY_PARAGRAPH = 8; // 0x8
+ field public static final int MOVEMENT_GRANULARITY_WORD = 2; // 0x2
+ }
+
+ public static class AccessibilityNodeInfoCompat.AccessibilityActionCompat {
+ ctor public AccessibilityNodeInfoCompat.AccessibilityActionCompat(int, CharSequence!);
+ method public int getId();
+ method public CharSequence! getLabel();
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_ACCESSIBILITY_FOCUS;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CLEAR_ACCESSIBILITY_FOCUS;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CLEAR_FOCUS;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CLEAR_SELECTION;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CLICK;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_COLLAPSE;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CONTEXT_CLICK;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_COPY;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CUT;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_DISMISS;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_EXPAND;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_FOCUS;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_HIDE_TOOLTIP;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_IME_ENTER;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_LONG_CLICK;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_MOVE_WINDOW;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_NEXT_AT_MOVEMENT_GRANULARITY;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_NEXT_HTML_ELEMENT;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_DOWN;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_LEFT;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_RIGHT;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_UP;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PASTE;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PRESS_AND_HOLD;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_HTML_ELEMENT;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_BACKWARD;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_DOWN;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_FORWARD;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_LEFT;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_RIGHT;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_TO_POSITION;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_UP;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SELECT;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SET_PROGRESS;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SET_SELECTION;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SET_TEXT;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SHOW_ON_SCREEN;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SHOW_TOOLTIP;
+ }
+
+ public static class AccessibilityNodeInfoCompat.CollectionInfoCompat {
+ method public int getColumnCount();
+ method public int getRowCount();
+ method public int getSelectionMode();
+ method public boolean isHierarchical();
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionInfoCompat! obtain(int, int, boolean, int);
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionInfoCompat! obtain(int, int, boolean);
+ field public static final int SELECTION_MODE_MULTIPLE = 2; // 0x2
+ field public static final int SELECTION_MODE_NONE = 0; // 0x0
+ field public static final int SELECTION_MODE_SINGLE = 1; // 0x1
+ }
+
+ public static class AccessibilityNodeInfoCompat.CollectionItemInfoCompat {
+ method public int getColumnIndex();
+ method public int getColumnSpan();
+ method public int getRowIndex();
+ method public int getRowSpan();
+ method @Deprecated public boolean isHeading();
+ method public boolean isSelected();
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionItemInfoCompat! obtain(int, int, int, int, boolean, boolean);
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionItemInfoCompat! obtain(int, int, int, int, boolean);
+ }
+
+ public static class AccessibilityNodeInfoCompat.RangeInfoCompat {
+ method public float getCurrent();
+ method public float getMax();
+ method public float getMin();
+ method public int getType();
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat! obtain(int, float, float, float);
+ field public static final int RANGE_TYPE_FLOAT = 1; // 0x1
+ field public static final int RANGE_TYPE_INT = 0; // 0x0
+ field public static final int RANGE_TYPE_PERCENT = 2; // 0x2
+ }
+
+ public static final class AccessibilityNodeInfoCompat.TouchDelegateInfoCompat {
+ ctor public AccessibilityNodeInfoCompat.TouchDelegateInfoCompat(java.util.Map<android.graphics.Region!,android.view.View!>);
+ method public android.graphics.Region? getRegionAt(@IntRange(from=0) int);
+ method @IntRange(from=0) public int getRegionCount();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat? getTargetForRegion(android.graphics.Region);
+ }
+
+ public class AccessibilityNodeProviderCompat {
+ ctor public AccessibilityNodeProviderCompat();
+ ctor public AccessibilityNodeProviderCompat(Object!);
+ method public void addExtraDataToAccessibilityNodeInfo(int, androidx.core.view.accessibility.AccessibilityNodeInfoCompat, String, android.os.Bundle?);
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat? createAccessibilityNodeInfo(int);
+ method public java.util.List<androidx.core.view.accessibility.AccessibilityNodeInfoCompat!>? findAccessibilityNodeInfosByText(String!, int);
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat? findFocus(int);
+ method public Object! getProvider();
+ method public boolean performAction(int, int, android.os.Bundle!);
+ field public static final int HOST_VIEW_ID = -1; // 0xffffffff
+ }
+
+ public class AccessibilityRecordCompat {
+ ctor @Deprecated public AccessibilityRecordCompat(Object!);
+ method @Deprecated public boolean equals(Object?);
+ method @Deprecated public int getAddedCount();
+ method @Deprecated public CharSequence! getBeforeText();
+ method @Deprecated public CharSequence! getClassName();
+ method @Deprecated public CharSequence! getContentDescription();
+ method @Deprecated public int getCurrentItemIndex();
+ method @Deprecated public int getFromIndex();
+ method @Deprecated public Object! getImpl();
+ method @Deprecated public int getItemCount();
+ method @Deprecated public int getMaxScrollX();
+ method public static int getMaxScrollX(android.view.accessibility.AccessibilityRecord!);
+ method @Deprecated public int getMaxScrollY();
+ method public static int getMaxScrollY(android.view.accessibility.AccessibilityRecord!);
+ method @Deprecated public android.os.Parcelable! getParcelableData();
+ method @Deprecated public int getRemovedCount();
+ method @Deprecated public int getScrollX();
+ method @Deprecated public int getScrollY();
+ method @Deprecated public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getSource();
+ method @Deprecated public java.util.List<java.lang.CharSequence!>! getText();
+ method @Deprecated public int getToIndex();
+ method @Deprecated public int getWindowId();
+ method @Deprecated public int hashCode();
+ method @Deprecated public boolean isChecked();
+ method @Deprecated public boolean isEnabled();
+ method @Deprecated public boolean isFullScreen();
+ method @Deprecated public boolean isPassword();
+ method @Deprecated public boolean isScrollable();
+ method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! obtain(androidx.core.view.accessibility.AccessibilityRecordCompat!);
+ method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! obtain();
+ method @Deprecated public void recycle();
+ method @Deprecated public void setAddedCount(int);
+ method @Deprecated public void setBeforeText(CharSequence!);
+ method @Deprecated public void setChecked(boolean);
+ method @Deprecated public void setClassName(CharSequence!);
+ method @Deprecated public void setContentDescription(CharSequence!);
+ method @Deprecated public void setCurrentItemIndex(int);
+ method @Deprecated public void setEnabled(boolean);
+ method @Deprecated public void setFromIndex(int);
+ method @Deprecated public void setFullScreen(boolean);
+ method @Deprecated public void setItemCount(int);
+ method @Deprecated public void setMaxScrollX(int);
+ method public static void setMaxScrollX(android.view.accessibility.AccessibilityRecord!, int);
+ method @Deprecated public void setMaxScrollY(int);
+ method public static void setMaxScrollY(android.view.accessibility.AccessibilityRecord!, int);
+ method @Deprecated public void setParcelableData(android.os.Parcelable!);
+ method @Deprecated public void setPassword(boolean);
+ method @Deprecated public void setRemovedCount(int);
+ method @Deprecated public void setScrollX(int);
+ method @Deprecated public void setScrollY(int);
+ method @Deprecated public void setScrollable(boolean);
+ method @Deprecated public void setSource(android.view.View!);
+ method @Deprecated public void setSource(android.view.View!, int);
+ method public static void setSource(android.view.accessibility.AccessibilityRecord, android.view.View!, int);
+ method @Deprecated public void setToIndex(int);
+ }
+
+ public interface AccessibilityViewCommand {
+ method public boolean perform(android.view.View, androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments?);
+ }
+
+ public abstract static class AccessibilityViewCommand.CommandArguments {
+ ctor public AccessibilityViewCommand.CommandArguments();
+ }
+
+ public static final class AccessibilityViewCommand.MoveAtGranularityArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
+ ctor public AccessibilityViewCommand.MoveAtGranularityArguments();
+ method public boolean getExtendSelection();
+ method public int getGranularity();
+ }
+
+ public static final class AccessibilityViewCommand.MoveHtmlArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
+ ctor public AccessibilityViewCommand.MoveHtmlArguments();
+ method public String! getHTMLElement();
+ }
+
+ public static final class AccessibilityViewCommand.MoveWindowArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
+ ctor public AccessibilityViewCommand.MoveWindowArguments();
+ method public int getX();
+ method public int getY();
+ }
+
+ public static final class AccessibilityViewCommand.ScrollToPositionArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
+ ctor public AccessibilityViewCommand.ScrollToPositionArguments();
+ method public int getColumn();
+ method public int getRow();
+ }
+
+ public static final class AccessibilityViewCommand.SetProgressArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
+ ctor public AccessibilityViewCommand.SetProgressArguments();
+ method public float getProgress();
+ }
+
+ public static final class AccessibilityViewCommand.SetSelectionArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
+ ctor public AccessibilityViewCommand.SetSelectionArguments();
+ method public int getEnd();
+ method public int getStart();
+ }
+
+ public static final class AccessibilityViewCommand.SetTextArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
+ ctor public AccessibilityViewCommand.SetTextArguments();
+ method public CharSequence! getText();
+ }
+
+ public class AccessibilityWindowInfoCompat {
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getAnchor();
+ method public void getBoundsInScreen(android.graphics.Rect!);
+ method public androidx.core.view.accessibility.AccessibilityWindowInfoCompat! getChild(int);
+ method public int getChildCount();
+ method public int getId();
+ method public int getLayer();
+ method public androidx.core.view.accessibility.AccessibilityWindowInfoCompat! getParent();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getRoot();
+ method public CharSequence! getTitle();
+ method public int getType();
+ method public boolean isAccessibilityFocused();
+ method public boolean isActive();
+ method public boolean isFocused();
+ method public static androidx.core.view.accessibility.AccessibilityWindowInfoCompat! obtain();
+ method public static androidx.core.view.accessibility.AccessibilityWindowInfoCompat! obtain(androidx.core.view.accessibility.AccessibilityWindowInfoCompat!);
+ method public void recycle();
+ field public static final int TYPE_ACCESSIBILITY_OVERLAY = 4; // 0x4
+ field public static final int TYPE_APPLICATION = 1; // 0x1
+ field public static final int TYPE_INPUT_METHOD = 2; // 0x2
+ field public static final int TYPE_SPLIT_SCREEN_DIVIDER = 5; // 0x5
+ field public static final int TYPE_SYSTEM = 3; // 0x3
+ }
+
+}
+
+package androidx.core.view.animation {
+
+ public final class PathInterpolatorCompat {
+ method public static android.view.animation.Interpolator! create(android.graphics.Path!);
+ method public static android.view.animation.Interpolator! create(float, float);
+ method public static android.view.animation.Interpolator! create(float, float, float, float);
+ }
+
+}
+
+package androidx.core.view.inputmethod {
+
+ public final class EditorInfoCompat {
+ ctor @Deprecated public EditorInfoCompat();
+ method public static String![] getContentMimeTypes(android.view.inputmethod.EditorInfo!);
+ method public static CharSequence? getInitialSelectedText(android.view.inputmethod.EditorInfo, int);
+ method public static CharSequence? getInitialTextAfterCursor(android.view.inputmethod.EditorInfo, int, int);
+ method public static CharSequence? getInitialTextBeforeCursor(android.view.inputmethod.EditorInfo, int, int);
+ method public static void setContentMimeTypes(android.view.inputmethod.EditorInfo, String![]?);
+ method public static void setInitialSurroundingSubText(android.view.inputmethod.EditorInfo, CharSequence, int);
+ method public static void setInitialSurroundingText(android.view.inputmethod.EditorInfo, CharSequence);
+ field public static final int IME_FLAG_FORCE_ASCII = -2147483648; // 0x80000000
+ field public static final int IME_FLAG_NO_PERSONALIZED_LEARNING = 16777216; // 0x1000000
+ }
+
+ public final class InputConnectionCompat {
+ ctor @Deprecated public InputConnectionCompat();
+ method public static boolean commitContent(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo, androidx.core.view.inputmethod.InputContentInfoCompat, int, android.os.Bundle?);
+ method public static android.view.inputmethod.InputConnection createWrapper(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo, androidx.core.view.inputmethod.InputConnectionCompat.OnCommitContentListener);
+ field public static final int INPUT_CONTENT_GRANT_READ_URI_PERMISSION = 1; // 0x1
+ }
+
+ public static interface InputConnectionCompat.OnCommitContentListener {
+ method public boolean onCommitContent(androidx.core.view.inputmethod.InputContentInfoCompat!, int, android.os.Bundle!);
+ }
+
+ public final class InputContentInfoCompat {
+ ctor public InputContentInfoCompat(android.net.Uri, android.content.ClipDescription, android.net.Uri?);
+ method public android.net.Uri getContentUri();
+ method public android.content.ClipDescription getDescription();
+ method public android.net.Uri? getLinkUri();
+ method public void releasePermission();
+ method public void requestPermission();
+ method public Object? unwrap();
+ method public static androidx.core.view.inputmethod.InputContentInfoCompat? wrap(Object?);
+ }
+
+}
+
+package androidx.core.widget {
+
+ public abstract class AutoScrollHelper implements android.view.View.OnTouchListener {
+ ctor public AutoScrollHelper(android.view.View);
+ method public abstract boolean canTargetScrollHorizontally(int);
+ method public abstract boolean canTargetScrollVertically(int);
+ method public boolean isEnabled();
+ method public boolean isExclusive();
+ method public boolean onTouch(android.view.View!, android.view.MotionEvent!);
+ method public abstract void scrollTargetBy(int, int);
+ method public androidx.core.widget.AutoScrollHelper setActivationDelay(int);
+ method public androidx.core.widget.AutoScrollHelper setEdgeType(int);
+ method public androidx.core.widget.AutoScrollHelper! setEnabled(boolean);
+ method public androidx.core.widget.AutoScrollHelper! setExclusive(boolean);
+ method public androidx.core.widget.AutoScrollHelper setMaximumEdges(float, float);
+ method public androidx.core.widget.AutoScrollHelper setMaximumVelocity(float, float);
+ method public androidx.core.widget.AutoScrollHelper setMinimumVelocity(float, float);
+ method public androidx.core.widget.AutoScrollHelper setRampDownDuration(int);
+ method public androidx.core.widget.AutoScrollHelper setRampUpDuration(int);
+ method public androidx.core.widget.AutoScrollHelper setRelativeEdges(float, float);
+ method public androidx.core.widget.AutoScrollHelper setRelativeVelocity(float, float);
+ field public static final int EDGE_TYPE_INSIDE = 0; // 0x0
+ field public static final int EDGE_TYPE_INSIDE_EXTEND = 1; // 0x1
+ field public static final int EDGE_TYPE_OUTSIDE = 2; // 0x2
+ field public static final float NO_MAX = 3.4028235E38f;
+ field public static final float NO_MIN = 0.0f;
+ field public static final float RELATIVE_UNSPECIFIED = 0.0f;
+ }
+
+ public final class CompoundButtonCompat {
+ method public static android.graphics.drawable.Drawable? getButtonDrawable(android.widget.CompoundButton);
+ method public static android.content.res.ColorStateList? getButtonTintList(android.widget.CompoundButton);
+ method public static android.graphics.PorterDuff.Mode? getButtonTintMode(android.widget.CompoundButton);
+ method public static void setButtonTintList(android.widget.CompoundButton, android.content.res.ColorStateList?);
+ method public static void setButtonTintMode(android.widget.CompoundButton, android.graphics.PorterDuff.Mode?);
+ }
+
+ public class ContentLoadingProgressBar extends android.widget.ProgressBar {
+ ctor public ContentLoadingProgressBar(android.content.Context);
+ ctor public ContentLoadingProgressBar(android.content.Context, android.util.AttributeSet?);
+ method public void hide();
+ method public void onAttachedToWindow();
+ method public void onDetachedFromWindow();
+ method public void show();
+ }
+
+ public final class EdgeEffectCompat {
+ ctor @Deprecated public EdgeEffectCompat(android.content.Context!);
+ method @Deprecated public boolean draw(android.graphics.Canvas!);
+ method @Deprecated public void finish();
+ method @Deprecated public boolean isFinished();
+ method @Deprecated public boolean onAbsorb(int);
+ method @Deprecated public boolean onPull(float);
+ method @Deprecated public boolean onPull(float, float);
+ method public static void onPull(android.widget.EdgeEffect, float, float);
+ method @Deprecated public boolean onRelease();
+ method @Deprecated public void setSize(int, int);
+ }
+
+ public class ImageViewCompat {
+ method public static android.content.res.ColorStateList? getImageTintList(android.widget.ImageView);
+ method public static android.graphics.PorterDuff.Mode? getImageTintMode(android.widget.ImageView);
+ method public static void setImageTintList(android.widget.ImageView, android.content.res.ColorStateList?);
+ method public static void setImageTintMode(android.widget.ImageView, android.graphics.PorterDuff.Mode?);
+ }
+
+ public final class ListPopupWindowCompat {
+ method @Deprecated public static android.view.View.OnTouchListener! createDragToOpenListener(Object!, android.view.View!);
+ method public static android.view.View.OnTouchListener? createDragToOpenListener(android.widget.ListPopupWindow, android.view.View);
+ }
+
+ public class ListViewAutoScrollHelper extends androidx.core.widget.AutoScrollHelper {
+ ctor public ListViewAutoScrollHelper(android.widget.ListView);
+ method public boolean canTargetScrollHorizontally(int);
+ method public boolean canTargetScrollVertically(int);
+ method public void scrollTargetBy(int, int);
+ }
+
+ public final class ListViewCompat {
+ method public static boolean canScrollList(android.widget.ListView, int);
+ method public static void scrollListBy(android.widget.ListView, int);
+ }
+
+ public class NestedScrollView extends android.widget.FrameLayout implements androidx.core.view.NestedScrollingChild3 androidx.core.view.NestedScrollingParent3 androidx.core.view.ScrollingView {
+ ctor public NestedScrollView(android.content.Context);
+ ctor public NestedScrollView(android.content.Context, android.util.AttributeSet?);
+ ctor public NestedScrollView(android.content.Context, android.util.AttributeSet?, int);
+ method public boolean arrowScroll(int);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeHorizontalScrollExtent();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeHorizontalScrollOffset();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeHorizontalScrollRange();
+ method protected int computeScrollDeltaToGetChildRectOnScreen(android.graphics.Rect!);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeVerticalScrollExtent();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeVerticalScrollOffset();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeVerticalScrollRange();
+ method public boolean dispatchNestedPreScroll(int, int, int[]!, int[]!, int);
+ method public void dispatchNestedScroll(int, int, int, int, int[]?, int, int[]);
+ method public boolean dispatchNestedScroll(int, int, int, int, int[]!, int);
+ method public boolean executeKeyEvent(android.view.KeyEvent);
+ method public void fling(int);
+ method public boolean fullScroll(int);
+ method public int getMaxScrollAmount();
+ method public boolean hasNestedScrollingParent(int);
+ method public boolean isFillViewport();
+ method public boolean isSmoothScrollingEnabled();
+ method public void onAttachedToWindow();
+ method public void onNestedPreScroll(android.view.View, int, int, int[], int);
+ method public void onNestedScroll(android.view.View, int, int, int, int, int, int[]);
+ method public void onNestedScroll(android.view.View, int, int, int, int, int);
+ method public void onNestedScrollAccepted(android.view.View, android.view.View, int, int);
+ method public boolean onStartNestedScroll(android.view.View, android.view.View, int, int);
+ method public void onStopNestedScroll(android.view.View, int);
+ method public boolean pageScroll(int);
+ method public void setFillViewport(boolean);
+ method public void setOnScrollChangeListener(androidx.core.widget.NestedScrollView.OnScrollChangeListener?);
+ method public void setSmoothScrollingEnabled(boolean);
+ method public final void smoothScrollBy(int, int);
+ method public final void smoothScrollBy(int, int, int);
+ method public final void smoothScrollTo(int, int);
+ method public final void smoothScrollTo(int, int, int);
+ method public boolean startNestedScroll(int, int);
+ method public void stopNestedScroll(int);
+ }
+
+ public static interface NestedScrollView.OnScrollChangeListener {
+ method public void onScrollChange(androidx.core.widget.NestedScrollView!, int, int, int, int);
+ }
+
+ public final class PopupMenuCompat {
+ method public static android.view.View.OnTouchListener? getDragToOpenListener(Object);
+ }
+
+ public final class PopupWindowCompat {
+ method public static boolean getOverlapAnchor(android.widget.PopupWindow);
+ method public static int getWindowLayoutType(android.widget.PopupWindow);
+ method public static void setOverlapAnchor(android.widget.PopupWindow, boolean);
+ method public static void setWindowLayoutType(android.widget.PopupWindow, int);
+ method public static void showAsDropDown(android.widget.PopupWindow, android.view.View, int, int, int);
+ }
+
+ @Deprecated public final class ScrollerCompat {
+ method @Deprecated public void abortAnimation();
+ method @Deprecated public boolean computeScrollOffset();
+ method @Deprecated public static androidx.core.widget.ScrollerCompat! create(android.content.Context!);
+ method @Deprecated public static androidx.core.widget.ScrollerCompat! create(android.content.Context!, android.view.animation.Interpolator!);
+ method @Deprecated public void fling(int, int, int, int, int, int, int, int);
+ method @Deprecated public void fling(int, int, int, int, int, int, int, int, int, int);
+ method @Deprecated public float getCurrVelocity();
+ method @Deprecated public int getCurrX();
+ method @Deprecated public int getCurrY();
+ method @Deprecated public int getFinalX();
+ method @Deprecated public int getFinalY();
+ method @Deprecated public boolean isFinished();
+ method @Deprecated public boolean isOverScrolled();
+ method @Deprecated public void notifyHorizontalEdgeReached(int, int, int);
+ method @Deprecated public void notifyVerticalEdgeReached(int, int, int);
+ method @Deprecated public boolean springBack(int, int, int, int, int, int);
+ method @Deprecated public void startScroll(int, int, int, int);
+ method @Deprecated public void startScroll(int, int, int, int, int);
+ }
+
+ public final class TextViewCompat {
+ method public static int getAutoSizeMaxTextSize(android.widget.TextView);
+ method public static int getAutoSizeMinTextSize(android.widget.TextView);
+ method public static int getAutoSizeStepGranularity(android.widget.TextView);
+ method public static int[] getAutoSizeTextAvailableSizes(android.widget.TextView);
+ method public static int getAutoSizeTextType(android.widget.TextView);
+ method public static android.content.res.ColorStateList? getCompoundDrawableTintList(android.widget.TextView);
+ method public static android.graphics.PorterDuff.Mode? getCompoundDrawableTintMode(android.widget.TextView);
+ method public static android.graphics.drawable.Drawable![] getCompoundDrawablesRelative(android.widget.TextView);
+ method public static int getFirstBaselineToTopHeight(android.widget.TextView);
+ method public static int getLastBaselineToBottomHeight(android.widget.TextView);
+ method public static int getMaxLines(android.widget.TextView);
+ method public static int getMinLines(android.widget.TextView);
+ method public static androidx.core.text.PrecomputedTextCompat.Params getTextMetricsParams(android.widget.TextView);
+ method public static void setAutoSizeTextTypeUniformWithConfiguration(android.widget.TextView, int, int, int, int) throws java.lang.IllegalArgumentException;
+ method public static void setAutoSizeTextTypeUniformWithPresetSizes(android.widget.TextView, int[], int) throws java.lang.IllegalArgumentException;
+ method public static void setAutoSizeTextTypeWithDefaults(android.widget.TextView, int);
+ method public static void setCompoundDrawableTintList(android.widget.TextView, android.content.res.ColorStateList?);
+ method public static void setCompoundDrawableTintMode(android.widget.TextView, android.graphics.PorterDuff.Mode?);
+ method public static void setCompoundDrawablesRelative(android.widget.TextView, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?);
+ method public static void setCompoundDrawablesRelativeWithIntrinsicBounds(android.widget.TextView, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?);
+ method public static void setCompoundDrawablesRelativeWithIntrinsicBounds(android.widget.TextView, @DrawableRes int, @DrawableRes int, @DrawableRes int, @DrawableRes int);
+ method public static void setCustomSelectionActionModeCallback(android.widget.TextView, android.view.ActionMode.Callback);
+ method public static void setFirstBaselineToTopHeight(android.widget.TextView, @IntRange(from=0) @Px int);
+ method public static void setLastBaselineToBottomHeight(android.widget.TextView, @IntRange(from=0) @Px int);
+ method public static void setLineHeight(android.widget.TextView, @IntRange(from=0) @Px int);
+ method public static void setPrecomputedText(android.widget.TextView, androidx.core.text.PrecomputedTextCompat);
+ method public static void setTextAppearance(android.widget.TextView, @StyleRes int);
+ method public static void setTextMetricsParams(android.widget.TextView, androidx.core.text.PrecomputedTextCompat.Params);
+ field public static final int AUTO_SIZE_TEXT_TYPE_NONE = 0; // 0x0
+ field public static final int AUTO_SIZE_TEXT_TYPE_UNIFORM = 1; // 0x1
+ }
+
+ public interface TintableCompoundButton {
+ method public android.content.res.ColorStateList? getSupportButtonTintList();
+ method public android.graphics.PorterDuff.Mode? getSupportButtonTintMode();
+ method public void setSupportButtonTintList(android.content.res.ColorStateList?);
+ method public void setSupportButtonTintMode(android.graphics.PorterDuff.Mode?);
+ }
+
+ public interface TintableCompoundDrawablesView {
+ method public android.content.res.ColorStateList? getSupportCompoundDrawablesTintList();
+ method public android.graphics.PorterDuff.Mode? getSupportCompoundDrawablesTintMode();
+ method public void setSupportCompoundDrawablesTintList(android.content.res.ColorStateList?);
+ method public void setSupportCompoundDrawablesTintMode(android.graphics.PorterDuff.Mode?);
+ }
+
+}
+
diff --git a/core/core/api/current.txt b/core/core/api/current.txt
index ebb6cd5..c7d59de9 100644
--- a/core/core/api/current.txt
+++ b/core/core/api/current.txt
@@ -1940,14 +1940,13 @@
}
public final class DisplayCompat {
- method public static androidx.core.view.DisplayCompat.ModeCompat getMode(android.content.Context, android.view.Display);
method public static androidx.core.view.DisplayCompat.ModeCompat![] getSupportedModes(android.content.Context, android.view.Display);
}
public static final class DisplayCompat.ModeCompat {
method public int getPhysicalHeight();
method public int getPhysicalWidth();
- method @Deprecated public boolean isNative();
+ method public boolean isNative();
method @RequiresApi(android.os.Build.VERSION_CODES.M) public android.view.Display.Mode? toMode();
}
diff --git a/core/core/api/public_plus_experimental_1.5.0-beta01.txt b/core/core/api/public_plus_experimental_1.5.0-beta01.txt
index e7149ea..aad528b 100644
--- a/core/core/api/public_plus_experimental_1.5.0-beta01.txt
+++ b/core/core/api/public_plus_experimental_1.5.0-beta01.txt
@@ -1938,14 +1938,13 @@
}
public final class DisplayCompat {
- method public static androidx.core.view.DisplayCompat.ModeCompat getMode(android.content.Context, android.view.Display);
method public static androidx.core.view.DisplayCompat.ModeCompat![] getSupportedModes(android.content.Context, android.view.Display);
}
public static final class DisplayCompat.ModeCompat {
method public int getPhysicalHeight();
method public int getPhysicalWidth();
- method @Deprecated public boolean isNative();
+ method public boolean isNative();
method @RequiresApi(android.os.Build.VERSION_CODES.M) public android.view.Display.Mode? toMode();
}
diff --git a/core/core/api/public_plus_experimental_1.5.0-beta02.txt b/core/core/api/public_plus_experimental_1.5.0-beta02.txt
new file mode 100644
index 0000000..aad528b
--- /dev/null
+++ b/core/core/api/public_plus_experimental_1.5.0-beta02.txt
@@ -0,0 +1,3503 @@
+// Signature format: 4.0
+package androidx.core.accessibilityservice {
+
+ public final class AccessibilityServiceInfoCompat {
+ method public static String capabilityToString(int);
+ method public static String feedbackTypeToString(int);
+ method public static String? flagToString(int);
+ method public static int getCapabilities(android.accessibilityservice.AccessibilityServiceInfo);
+ method public static String? loadDescription(android.accessibilityservice.AccessibilityServiceInfo, android.content.pm.PackageManager);
+ field public static final int CAPABILITY_CAN_FILTER_KEY_EVENTS = 8; // 0x8
+ field public static final int CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 4; // 0x4
+ field public static final int CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION = 2; // 0x2
+ field public static final int CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT = 1; // 0x1
+ field public static final int FEEDBACK_ALL_MASK = -1; // 0xffffffff
+ field public static final int FEEDBACK_BRAILLE = 32; // 0x20
+ field public static final int FLAG_INCLUDE_NOT_IMPORTANT_VIEWS = 2; // 0x2
+ field public static final int FLAG_REPORT_VIEW_IDS = 16; // 0x10
+ field public static final int FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 8; // 0x8
+ field public static final int FLAG_REQUEST_FILTER_KEY_EVENTS = 32; // 0x20
+ field public static final int FLAG_REQUEST_TOUCH_EXPLORATION_MODE = 4; // 0x4
+ }
+
+}
+
+package androidx.core.app {
+
+ public class ActivityCompat extends androidx.core.content.ContextCompat {
+ ctor protected ActivityCompat();
+ method public static void finishAffinity(android.app.Activity);
+ method public static void finishAfterTransition(android.app.Activity);
+ method public static android.net.Uri? getReferrer(android.app.Activity);
+ method @Deprecated public static boolean invalidateOptionsMenu(android.app.Activity!);
+ method public static void postponeEnterTransition(android.app.Activity);
+ method public static void recreate(android.app.Activity);
+ method public static androidx.core.view.DragAndDropPermissionsCompat? requestDragAndDropPermissions(android.app.Activity!, android.view.DragEvent!);
+ method public static void requestPermissions(android.app.Activity, String![], @IntRange(from=0) int);
+ method public static <T extends android.view.View> T requireViewById(android.app.Activity, @IdRes int);
+ method public static void setEnterSharedElementCallback(android.app.Activity, androidx.core.app.SharedElementCallback?);
+ method public static void setExitSharedElementCallback(android.app.Activity, androidx.core.app.SharedElementCallback?);
+ method public static void setLocusContext(android.app.Activity, androidx.core.content.LocusIdCompat?, android.os.Bundle?);
+ method public static void setPermissionCompatDelegate(androidx.core.app.ActivityCompat.PermissionCompatDelegate?);
+ method public static boolean shouldShowRequestPermissionRationale(android.app.Activity, String);
+ method public static void startActivityForResult(android.app.Activity, android.content.Intent, int, android.os.Bundle?);
+ method public static void startIntentSenderForResult(android.app.Activity, android.content.IntentSender, int, android.content.Intent?, int, int, int, android.os.Bundle?) throws android.content.IntentSender.SendIntentException;
+ method public static void startPostponedEnterTransition(android.app.Activity);
+ }
+
+ public static interface ActivityCompat.OnRequestPermissionsResultCallback {
+ method public void onRequestPermissionsResult(int, String![], int[]);
+ }
+
+ public static interface ActivityCompat.PermissionCompatDelegate {
+ method public boolean onActivityResult(android.app.Activity, @IntRange(from=0) int, int, android.content.Intent?);
+ method public boolean requestPermissions(android.app.Activity, String![], @IntRange(from=0) int);
+ }
+
+ public final class ActivityManagerCompat {
+ method public static boolean isLowRamDevice(android.app.ActivityManager);
+ }
+
+ public class ActivityOptionsCompat {
+ ctor protected ActivityOptionsCompat();
+ method public android.graphics.Rect? getLaunchBounds();
+ method public static androidx.core.app.ActivityOptionsCompat makeBasic();
+ method public static androidx.core.app.ActivityOptionsCompat makeClipRevealAnimation(android.view.View, int, int, int, int);
+ method public static androidx.core.app.ActivityOptionsCompat makeCustomAnimation(android.content.Context, int, int);
+ method public static androidx.core.app.ActivityOptionsCompat makeScaleUpAnimation(android.view.View, int, int, int, int);
+ method public static androidx.core.app.ActivityOptionsCompat makeSceneTransitionAnimation(android.app.Activity, android.view.View, String);
+ method public static androidx.core.app.ActivityOptionsCompat makeSceneTransitionAnimation(android.app.Activity, androidx.core.util.Pair<android.view.View!,java.lang.String!>!...);
+ method public static androidx.core.app.ActivityOptionsCompat makeTaskLaunchBehind();
+ method public static androidx.core.app.ActivityOptionsCompat makeThumbnailScaleUpAnimation(android.view.View, android.graphics.Bitmap, int, int);
+ method public void requestUsageTimeReport(android.app.PendingIntent);
+ method public androidx.core.app.ActivityOptionsCompat setLaunchBounds(android.graphics.Rect?);
+ method public android.os.Bundle? toBundle();
+ method public void update(androidx.core.app.ActivityOptionsCompat);
+ field public static final String EXTRA_USAGE_TIME_REPORT = "android.activity.usage_time";
+ field public static final String EXTRA_USAGE_TIME_REPORT_PACKAGES = "android.usage_time_packages";
+ }
+
+ public final class AlarmManagerCompat {
+ method public static void setAlarmClock(android.app.AlarmManager, long, android.app.PendingIntent, android.app.PendingIntent);
+ method public static void setAndAllowWhileIdle(android.app.AlarmManager, int, long, android.app.PendingIntent);
+ method public static void setExact(android.app.AlarmManager, int, long, android.app.PendingIntent);
+ method public static void setExactAndAllowWhileIdle(android.app.AlarmManager, int, long, android.app.PendingIntent);
+ }
+
+ @RequiresApi(28) public class AppComponentFactory extends android.app.AppComponentFactory {
+ ctor public AppComponentFactory();
+ method public final android.app.Activity instantiateActivity(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public android.app.Activity instantiateActivityCompat(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public final android.app.Application instantiateApplication(ClassLoader, String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public android.app.Application instantiateApplicationCompat(ClassLoader, String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public final android.content.ContentProvider instantiateProvider(ClassLoader, String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public android.content.ContentProvider instantiateProviderCompat(ClassLoader, String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public final android.content.BroadcastReceiver instantiateReceiver(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public android.content.BroadcastReceiver instantiateReceiverCompat(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public final android.app.Service instantiateService(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public android.app.Service instantiateServiceCompat(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ }
+
+ public class AppLaunchChecker {
+ ctor @Deprecated public AppLaunchChecker();
+ method public static boolean hasStartedFromLauncher(android.content.Context);
+ method public static void onActivityCreate(android.app.Activity);
+ }
+
+ public final class AppOpsManagerCompat {
+ method public static int noteOp(android.content.Context, String, int, String);
+ method public static int noteOpNoThrow(android.content.Context, String, int, String);
+ method public static int noteProxyOp(android.content.Context, String, String);
+ method public static int noteProxyOpNoThrow(android.content.Context, String, String);
+ method public static String? permissionToOp(String);
+ field public static final int MODE_ALLOWED = 0; // 0x0
+ field public static final int MODE_DEFAULT = 3; // 0x3
+ field public static final int MODE_ERRORED = 2; // 0x2
+ field public static final int MODE_IGNORED = 1; // 0x1
+ }
+
+ public final class BundleCompat {
+ method public static android.os.IBinder? getBinder(android.os.Bundle, String?);
+ method public static void putBinder(android.os.Bundle, String?, android.os.IBinder?);
+ }
+
+ public class DialogCompat {
+ method public static android.view.View requireViewById(android.app.Dialog, int);
+ }
+
+ public class FrameMetricsAggregator {
+ ctor public FrameMetricsAggregator();
+ ctor public FrameMetricsAggregator(int);
+ method public void add(android.app.Activity);
+ method public android.util.SparseIntArray![]? getMetrics();
+ method public android.util.SparseIntArray![]? remove(android.app.Activity);
+ method public android.util.SparseIntArray![]? reset();
+ method public android.util.SparseIntArray![]? stop();
+ field public static final int ANIMATION_DURATION = 256; // 0x100
+ field public static final int ANIMATION_INDEX = 8; // 0x8
+ field public static final int COMMAND_DURATION = 32; // 0x20
+ field public static final int COMMAND_INDEX = 5; // 0x5
+ field public static final int DELAY_DURATION = 128; // 0x80
+ field public static final int DELAY_INDEX = 7; // 0x7
+ field public static final int DRAW_DURATION = 8; // 0x8
+ field public static final int DRAW_INDEX = 3; // 0x3
+ field public static final int EVERY_DURATION = 511; // 0x1ff
+ field public static final int INPUT_DURATION = 2; // 0x2
+ field public static final int INPUT_INDEX = 1; // 0x1
+ field public static final int LAYOUT_MEASURE_DURATION = 4; // 0x4
+ field public static final int LAYOUT_MEASURE_INDEX = 2; // 0x2
+ field public static final int SWAP_DURATION = 64; // 0x40
+ field public static final int SWAP_INDEX = 6; // 0x6
+ field public static final int SYNC_DURATION = 16; // 0x10
+ field public static final int SYNC_INDEX = 4; // 0x4
+ field public static final int TOTAL_DURATION = 1; // 0x1
+ field public static final int TOTAL_INDEX = 0; // 0x0
+ }
+
+ public abstract class JobIntentService extends android.app.Service {
+ ctor public JobIntentService();
+ method public static void enqueueWork(android.content.Context, Class<?>, int, android.content.Intent);
+ method public static void enqueueWork(android.content.Context, android.content.ComponentName, int, android.content.Intent);
+ method public boolean isStopped();
+ method public android.os.IBinder! onBind(android.content.Intent);
+ method protected abstract void onHandleWork(android.content.Intent);
+ method public boolean onStopCurrentWork();
+ method public void setInterruptIfStopped(boolean);
+ }
+
+ public final class NavUtils {
+ method public static android.content.Intent? getParentActivityIntent(android.app.Activity);
+ method public static android.content.Intent? getParentActivityIntent(android.content.Context, Class<?>) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public static android.content.Intent? getParentActivityIntent(android.content.Context, android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public static String? getParentActivityName(android.app.Activity);
+ method public static String? getParentActivityName(android.content.Context, android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public static void navigateUpFromSameTask(android.app.Activity);
+ method public static void navigateUpTo(android.app.Activity, android.content.Intent);
+ method public static boolean shouldUpRecreateTask(android.app.Activity, android.content.Intent);
+ field public static final String PARENT_ACTIVITY = "android.support.PARENT_ACTIVITY";
+ }
+
+ public class NotificationChannelCompat {
+ method public boolean canBubble();
+ method public boolean canBypassDnd();
+ method public boolean canShowBadge();
+ method public android.media.AudioAttributes? getAudioAttributes();
+ method public String? getConversationId();
+ method public String? getDescription();
+ method public String? getGroup();
+ method public String getId();
+ method public int getImportance();
+ method public int getLightColor();
+ method public int getLockscreenVisibility();
+ method public CharSequence? getName();
+ method public String? getParentChannelId();
+ method public android.net.Uri? getSound();
+ method public long[]? getVibrationPattern();
+ method public boolean isImportantConversation();
+ method public boolean shouldShowLights();
+ method public boolean shouldVibrate();
+ method public androidx.core.app.NotificationChannelCompat.Builder toBuilder();
+ field public static final String DEFAULT_CHANNEL_ID = "miscellaneous";
+ }
+
+ public static class NotificationChannelCompat.Builder {
+ ctor public NotificationChannelCompat.Builder(String, int);
+ method public androidx.core.app.NotificationChannelCompat build();
+ method public androidx.core.app.NotificationChannelCompat.Builder setConversationId(String, String);
+ method public androidx.core.app.NotificationChannelCompat.Builder setDescription(String?);
+ method public androidx.core.app.NotificationChannelCompat.Builder setGroup(String?);
+ method public androidx.core.app.NotificationChannelCompat.Builder setImportance(int);
+ method public androidx.core.app.NotificationChannelCompat.Builder setLightColor(int);
+ method public androidx.core.app.NotificationChannelCompat.Builder setLightsEnabled(boolean);
+ method public androidx.core.app.NotificationChannelCompat.Builder setName(CharSequence?);
+ method public androidx.core.app.NotificationChannelCompat.Builder setShowBadge(boolean);
+ method public androidx.core.app.NotificationChannelCompat.Builder setSound(android.net.Uri?, android.media.AudioAttributes?);
+ method public androidx.core.app.NotificationChannelCompat.Builder setVibrationEnabled(boolean);
+ method public androidx.core.app.NotificationChannelCompat.Builder setVibrationPattern(long[]?);
+ }
+
+ public class NotificationChannelGroupCompat {
+ method public java.util.List<androidx.core.app.NotificationChannelCompat!> getChannels();
+ method public String? getDescription();
+ method public String getId();
+ method public CharSequence? getName();
+ method public boolean isBlocked();
+ method public androidx.core.app.NotificationChannelGroupCompat.Builder toBuilder();
+ }
+
+ public static class NotificationChannelGroupCompat.Builder {
+ ctor public NotificationChannelGroupCompat.Builder(String);
+ method public androidx.core.app.NotificationChannelGroupCompat build();
+ method public androidx.core.app.NotificationChannelGroupCompat.Builder setDescription(String?);
+ method public androidx.core.app.NotificationChannelGroupCompat.Builder setName(CharSequence?);
+ }
+
+ public class NotificationCompat {
+ ctor @Deprecated public NotificationCompat();
+ method public static androidx.core.app.NotificationCompat.Action? getAction(android.app.Notification, int);
+ method public static int getActionCount(android.app.Notification);
+ method public static boolean getAllowSystemGeneratedContextualActions(android.app.Notification);
+ method public static boolean getAutoCancel(android.app.Notification);
+ method public static int getBadgeIconType(android.app.Notification);
+ method public static androidx.core.app.NotificationCompat.BubbleMetadata? getBubbleMetadata(android.app.Notification);
+ method public static String? getCategory(android.app.Notification);
+ method public static String? getChannelId(android.app.Notification);
+ method public static int getColor(android.app.Notification);
+ method @RequiresApi(19) public static CharSequence? getContentInfo(android.app.Notification);
+ method @RequiresApi(19) public static CharSequence? getContentText(android.app.Notification);
+ method @RequiresApi(19) public static CharSequence? getContentTitle(android.app.Notification);
+ method public static android.os.Bundle? getExtras(android.app.Notification);
+ method public static String? getGroup(android.app.Notification);
+ method public static int getGroupAlertBehavior(android.app.Notification);
+ method @RequiresApi(21) public static java.util.List<androidx.core.app.NotificationCompat.Action!> getInvisibleActions(android.app.Notification);
+ method public static boolean getLocalOnly(android.app.Notification);
+ method public static androidx.core.content.LocusIdCompat? getLocusId(android.app.Notification);
+ method public static boolean getOngoing(android.app.Notification);
+ method public static boolean getOnlyAlertOnce(android.app.Notification);
+ method public static java.util.List<androidx.core.app.Person!> getPeople(android.app.Notification);
+ method public static android.app.Notification? getPublicVersion(android.app.Notification);
+ method public static CharSequence? getSettingsText(android.app.Notification);
+ method public static String? getShortcutId(android.app.Notification);
+ method @RequiresApi(19) public static boolean getShowWhen(android.app.Notification);
+ method public static String? getSortKey(android.app.Notification);
+ method @RequiresApi(19) public static CharSequence? getSubText(android.app.Notification);
+ method public static long getTimeoutAfter(android.app.Notification);
+ method @RequiresApi(19) public static boolean getUsesChronometer(android.app.Notification);
+ method public static int getVisibility(android.app.Notification);
+ method public static boolean isGroupSummary(android.app.Notification);
+ field public static final int BADGE_ICON_LARGE = 2; // 0x2
+ field public static final int BADGE_ICON_NONE = 0; // 0x0
+ field public static final int BADGE_ICON_SMALL = 1; // 0x1
+ field public static final String CATEGORY_ALARM = "alarm";
+ field public static final String CATEGORY_CALL = "call";
+ field public static final String CATEGORY_EMAIL = "email";
+ field public static final String CATEGORY_ERROR = "err";
+ field public static final String CATEGORY_EVENT = "event";
+ field public static final String CATEGORY_LOCATION_SHARING = "location_sharing";
+ field public static final String CATEGORY_MESSAGE = "msg";
+ field public static final String CATEGORY_MISSED_CALL = "missed_call";
+ field public static final String CATEGORY_NAVIGATION = "navigation";
+ field public static final String CATEGORY_PROGRESS = "progress";
+ field public static final String CATEGORY_PROMO = "promo";
+ field public static final String CATEGORY_RECOMMENDATION = "recommendation";
+ field public static final String CATEGORY_REMINDER = "reminder";
+ field public static final String CATEGORY_SERVICE = "service";
+ field public static final String CATEGORY_SOCIAL = "social";
+ field public static final String CATEGORY_STATUS = "status";
+ field public static final String CATEGORY_STOPWATCH = "stopwatch";
+ field public static final String CATEGORY_SYSTEM = "sys";
+ field public static final String CATEGORY_TRANSPORT = "transport";
+ field public static final String CATEGORY_WORKOUT = "workout";
+ field @ColorInt public static final int COLOR_DEFAULT = 0; // 0x0
+ field public static final int DEFAULT_ALL = -1; // 0xffffffff
+ field public static final int DEFAULT_LIGHTS = 4; // 0x4
+ field public static final int DEFAULT_SOUND = 1; // 0x1
+ field public static final int DEFAULT_VIBRATE = 2; // 0x2
+ field public static final String EXTRA_AUDIO_CONTENTS_URI = "android.audioContents";
+ field public static final String EXTRA_BACKGROUND_IMAGE_URI = "android.backgroundImageUri";
+ field public static final String EXTRA_BIG_TEXT = "android.bigText";
+ field public static final String EXTRA_CHANNEL_GROUP_ID = "android.intent.extra.CHANNEL_GROUP_ID";
+ field public static final String EXTRA_CHANNEL_ID = "android.intent.extra.CHANNEL_ID";
+ field public static final String EXTRA_CHRONOMETER_COUNT_DOWN = "android.chronometerCountDown";
+ field public static final String EXTRA_COLORIZED = "android.colorized";
+ field public static final String EXTRA_COMPACT_ACTIONS = "android.compactActions";
+ field public static final String EXTRA_COMPAT_TEMPLATE = "androidx.core.app.extra.COMPAT_TEMPLATE";
+ field public static final String EXTRA_CONVERSATION_TITLE = "android.conversationTitle";
+ field public static final String EXTRA_HIDDEN_CONVERSATION_TITLE = "android.hiddenConversationTitle";
+ field public static final String EXTRA_HISTORIC_MESSAGES = "android.messages.historic";
+ field public static final String EXTRA_INFO_TEXT = "android.infoText";
+ field public static final String EXTRA_IS_GROUP_CONVERSATION = "android.isGroupConversation";
+ field public static final String EXTRA_LARGE_ICON = "android.largeIcon";
+ field public static final String EXTRA_LARGE_ICON_BIG = "android.largeIcon.big";
+ field public static final String EXTRA_MEDIA_SESSION = "android.mediaSession";
+ field public static final String EXTRA_MESSAGES = "android.messages";
+ field public static final String EXTRA_MESSAGING_STYLE_USER = "android.messagingStyleUser";
+ field public static final String EXTRA_NOTIFICATION_ID = "android.intent.extra.NOTIFICATION_ID";
+ field public static final String EXTRA_NOTIFICATION_TAG = "android.intent.extra.NOTIFICATION_TAG";
+ field @Deprecated public static final String EXTRA_PEOPLE = "android.people";
+ field public static final String EXTRA_PEOPLE_LIST = "android.people.list";
+ field public static final String EXTRA_PICTURE = "android.picture";
+ field public static final String EXTRA_PROGRESS = "android.progress";
+ field public static final String EXTRA_PROGRESS_INDETERMINATE = "android.progressIndeterminate";
+ field public static final String EXTRA_PROGRESS_MAX = "android.progressMax";
+ field public static final String EXTRA_REMOTE_INPUT_HISTORY = "android.remoteInputHistory";
+ field public static final String EXTRA_SELF_DISPLAY_NAME = "android.selfDisplayName";
+ field public static final String EXTRA_SHOW_CHRONOMETER = "android.showChronometer";
+ field public static final String EXTRA_SHOW_WHEN = "android.showWhen";
+ field public static final String EXTRA_SMALL_ICON = "android.icon";
+ field public static final String EXTRA_SUB_TEXT = "android.subText";
+ field public static final String EXTRA_SUMMARY_TEXT = "android.summaryText";
+ field public static final String EXTRA_TEMPLATE = "android.template";
+ field public static final String EXTRA_TEXT = "android.text";
+ field public static final String EXTRA_TEXT_LINES = "android.textLines";
+ field public static final String EXTRA_TITLE = "android.title";
+ field public static final String EXTRA_TITLE_BIG = "android.title.big";
+ field public static final int FLAG_AUTO_CANCEL = 16; // 0x10
+ field public static final int FLAG_BUBBLE = 4096; // 0x1000
+ field public static final int FLAG_FOREGROUND_SERVICE = 64; // 0x40
+ field public static final int FLAG_GROUP_SUMMARY = 512; // 0x200
+ field @Deprecated public static final int FLAG_HIGH_PRIORITY = 128; // 0x80
+ field public static final int FLAG_INSISTENT = 4; // 0x4
+ field public static final int FLAG_LOCAL_ONLY = 256; // 0x100
+ field public static final int FLAG_NO_CLEAR = 32; // 0x20
+ field public static final int FLAG_ONGOING_EVENT = 2; // 0x2
+ field public static final int FLAG_ONLY_ALERT_ONCE = 8; // 0x8
+ field public static final int FLAG_SHOW_LIGHTS = 1; // 0x1
+ field public static final int GROUP_ALERT_ALL = 0; // 0x0
+ field public static final int GROUP_ALERT_CHILDREN = 2; // 0x2
+ field public static final int GROUP_ALERT_SUMMARY = 1; // 0x1
+ field public static final String GROUP_KEY_SILENT = "silent";
+ field public static final String INTENT_CATEGORY_NOTIFICATION_PREFERENCES = "android.intent.category.NOTIFICATION_PREFERENCES";
+ field public static final int PRIORITY_DEFAULT = 0; // 0x0
+ field public static final int PRIORITY_HIGH = 1; // 0x1
+ field public static final int PRIORITY_LOW = -1; // 0xffffffff
+ field public static final int PRIORITY_MAX = 2; // 0x2
+ field public static final int PRIORITY_MIN = -2; // 0xfffffffe
+ field public static final int STREAM_DEFAULT = -1; // 0xffffffff
+ field public static final int VISIBILITY_PRIVATE = 0; // 0x0
+ field public static final int VISIBILITY_PUBLIC = 1; // 0x1
+ field public static final int VISIBILITY_SECRET = -1; // 0xffffffff
+ }
+
+ public static class NotificationCompat.Action {
+ ctor public NotificationCompat.Action(int, CharSequence?, android.app.PendingIntent?);
+ ctor public NotificationCompat.Action(androidx.core.graphics.drawable.IconCompat?, CharSequence?, android.app.PendingIntent?);
+ method public android.app.PendingIntent? getActionIntent();
+ method public boolean getAllowGeneratedReplies();
+ method public androidx.core.app.RemoteInput![]? getDataOnlyRemoteInputs();
+ method public android.os.Bundle getExtras();
+ method @Deprecated public int getIcon();
+ method public androidx.core.graphics.drawable.IconCompat? getIconCompat();
+ method public androidx.core.app.RemoteInput![]? getRemoteInputs();
+ method @androidx.core.app.NotificationCompat.Action.SemanticAction public int getSemanticAction();
+ method public boolean getShowsUserInterface();
+ method public CharSequence? getTitle();
+ method public boolean isContextual();
+ field public static final int SEMANTIC_ACTION_ARCHIVE = 5; // 0x5
+ field public static final int SEMANTIC_ACTION_CALL = 10; // 0xa
+ field public static final int SEMANTIC_ACTION_DELETE = 4; // 0x4
+ field public static final int SEMANTIC_ACTION_MARK_AS_READ = 2; // 0x2
+ field public static final int SEMANTIC_ACTION_MARK_AS_UNREAD = 3; // 0x3
+ field public static final int SEMANTIC_ACTION_MUTE = 6; // 0x6
+ field public static final int SEMANTIC_ACTION_NONE = 0; // 0x0
+ field public static final int SEMANTIC_ACTION_REPLY = 1; // 0x1
+ field public static final int SEMANTIC_ACTION_THUMBS_DOWN = 9; // 0x9
+ field public static final int SEMANTIC_ACTION_THUMBS_UP = 8; // 0x8
+ field public static final int SEMANTIC_ACTION_UNMUTE = 7; // 0x7
+ field public android.app.PendingIntent! actionIntent;
+ field @Deprecated public int icon;
+ field public CharSequence! title;
+ }
+
+ public static final class NotificationCompat.Action.Builder {
+ ctor public NotificationCompat.Action.Builder(androidx.core.graphics.drawable.IconCompat?, CharSequence?, android.app.PendingIntent?);
+ ctor public NotificationCompat.Action.Builder(int, CharSequence?, android.app.PendingIntent?);
+ ctor public NotificationCompat.Action.Builder(androidx.core.app.NotificationCompat.Action);
+ method public androidx.core.app.NotificationCompat.Action.Builder addExtras(android.os.Bundle?);
+ method public androidx.core.app.NotificationCompat.Action.Builder addRemoteInput(androidx.core.app.RemoteInput?);
+ method public androidx.core.app.NotificationCompat.Action build();
+ method public androidx.core.app.NotificationCompat.Action.Builder extend(androidx.core.app.NotificationCompat.Action.Extender);
+ method public android.os.Bundle getExtras();
+ method public androidx.core.app.NotificationCompat.Action.Builder setAllowGeneratedReplies(boolean);
+ method public androidx.core.app.NotificationCompat.Action.Builder setContextual(boolean);
+ method public androidx.core.app.NotificationCompat.Action.Builder setSemanticAction(@androidx.core.app.NotificationCompat.Action.SemanticAction int);
+ method public androidx.core.app.NotificationCompat.Action.Builder setShowsUserInterface(boolean);
+ }
+
+ public static interface NotificationCompat.Action.Extender {
+ method public androidx.core.app.NotificationCompat.Action.Builder extend(androidx.core.app.NotificationCompat.Action.Builder);
+ }
+
+ @IntDef({androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_NONE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_REPLY, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_MARK_AS_READ, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_MARK_AS_UNREAD, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_DELETE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_ARCHIVE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_MUTE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_UNMUTE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_THUMBS_UP, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_THUMBS_DOWN, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_CALL}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface NotificationCompat.Action.SemanticAction {
+ }
+
+ public static final class NotificationCompat.Action.WearableExtender implements androidx.core.app.NotificationCompat.Action.Extender {
+ ctor public NotificationCompat.Action.WearableExtender();
+ ctor public NotificationCompat.Action.WearableExtender(androidx.core.app.NotificationCompat.Action);
+ method public androidx.core.app.NotificationCompat.Action.WearableExtender clone();
+ method public androidx.core.app.NotificationCompat.Action.Builder extend(androidx.core.app.NotificationCompat.Action.Builder);
+ method @Deprecated public CharSequence? getCancelLabel();
+ method @Deprecated public CharSequence? getConfirmLabel();
+ method public boolean getHintDisplayActionInline();
+ method public boolean getHintLaunchesActivity();
+ method @Deprecated public CharSequence? getInProgressLabel();
+ method public boolean isAvailableOffline();
+ method public androidx.core.app.NotificationCompat.Action.WearableExtender setAvailableOffline(boolean);
+ method @Deprecated public androidx.core.app.NotificationCompat.Action.WearableExtender setCancelLabel(CharSequence?);
+ method @Deprecated public androidx.core.app.NotificationCompat.Action.WearableExtender setConfirmLabel(CharSequence?);
+ method public androidx.core.app.NotificationCompat.Action.WearableExtender setHintDisplayActionInline(boolean);
+ method public androidx.core.app.NotificationCompat.Action.WearableExtender setHintLaunchesActivity(boolean);
+ method @Deprecated public androidx.core.app.NotificationCompat.Action.WearableExtender setInProgressLabel(CharSequence?);
+ }
+
+ public static class NotificationCompat.BigPictureStyle extends androidx.core.app.NotificationCompat.Style {
+ ctor public NotificationCompat.BigPictureStyle();
+ ctor public NotificationCompat.BigPictureStyle(androidx.core.app.NotificationCompat.Builder?);
+ method public androidx.core.app.NotificationCompat.BigPictureStyle bigLargeIcon(android.graphics.Bitmap?);
+ method public androidx.core.app.NotificationCompat.BigPictureStyle bigPicture(android.graphics.Bitmap?);
+ method public androidx.core.app.NotificationCompat.BigPictureStyle setBigContentTitle(CharSequence?);
+ method public androidx.core.app.NotificationCompat.BigPictureStyle setSummaryText(CharSequence?);
+ }
+
+ public static class NotificationCompat.BigTextStyle extends androidx.core.app.NotificationCompat.Style {
+ ctor public NotificationCompat.BigTextStyle();
+ ctor public NotificationCompat.BigTextStyle(androidx.core.app.NotificationCompat.Builder?);
+ method public androidx.core.app.NotificationCompat.BigTextStyle bigText(CharSequence?);
+ method public androidx.core.app.NotificationCompat.BigTextStyle setBigContentTitle(CharSequence?);
+ method public androidx.core.app.NotificationCompat.BigTextStyle setSummaryText(CharSequence?);
+ }
+
+ public static final class NotificationCompat.BubbleMetadata {
+ method public static androidx.core.app.NotificationCompat.BubbleMetadata? fromPlatform(android.app.Notification.BubbleMetadata?);
+ method public boolean getAutoExpandBubble();
+ method public android.app.PendingIntent? getDeleteIntent();
+ method @Dimension(unit=androidx.annotation.Dimension.DP) public int getDesiredHeight();
+ method @DimenRes public int getDesiredHeightResId();
+ method public androidx.core.graphics.drawable.IconCompat? getIcon();
+ method public android.app.PendingIntent? getIntent();
+ method public String? getShortcutId();
+ method public boolean isNotificationSuppressed();
+ method public static android.app.Notification.BubbleMetadata? toPlatform(androidx.core.app.NotificationCompat.BubbleMetadata?);
+ }
+
+ public static final class NotificationCompat.BubbleMetadata.Builder {
+ ctor @Deprecated public NotificationCompat.BubbleMetadata.Builder();
+ ctor @RequiresApi(30) public NotificationCompat.BubbleMetadata.Builder(String);
+ ctor public NotificationCompat.BubbleMetadata.Builder(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat);
+ method public androidx.core.app.NotificationCompat.BubbleMetadata build();
+ method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setAutoExpandBubble(boolean);
+ method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setDeleteIntent(android.app.PendingIntent?);
+ method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setDesiredHeight(@Dimension(unit=androidx.annotation.Dimension.DP) int);
+ method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setDesiredHeightResId(@DimenRes int);
+ method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setIcon(androidx.core.graphics.drawable.IconCompat);
+ method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setIntent(android.app.PendingIntent);
+ method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setSuppressNotification(boolean);
+ }
+
+ public static class NotificationCompat.Builder {
+ ctor @RequiresApi(19) public NotificationCompat.Builder(android.content.Context, android.app.Notification);
+ ctor public NotificationCompat.Builder(android.content.Context, String);
+ ctor @Deprecated public NotificationCompat.Builder(android.content.Context);
+ method public androidx.core.app.NotificationCompat.Builder addAction(int, CharSequence?, android.app.PendingIntent?);
+ method public androidx.core.app.NotificationCompat.Builder addAction(androidx.core.app.NotificationCompat.Action?);
+ method public androidx.core.app.NotificationCompat.Builder addExtras(android.os.Bundle?);
+ method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder addInvisibleAction(int, CharSequence?, android.app.PendingIntent?);
+ method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder addInvisibleAction(androidx.core.app.NotificationCompat.Action?);
+ method @Deprecated public androidx.core.app.NotificationCompat.Builder addPerson(String?);
+ method public androidx.core.app.NotificationCompat.Builder addPerson(androidx.core.app.Person?);
+ method public android.app.Notification build();
+ method public androidx.core.app.NotificationCompat.Builder clearActions();
+ method public androidx.core.app.NotificationCompat.Builder clearInvisibleActions();
+ method public androidx.core.app.NotificationCompat.Builder clearPeople();
+ method public android.widget.RemoteViews? createBigContentView();
+ method public android.widget.RemoteViews? createContentView();
+ method public android.widget.RemoteViews? createHeadsUpContentView();
+ method public androidx.core.app.NotificationCompat.Builder extend(androidx.core.app.NotificationCompat.Extender);
+ method public android.os.Bundle getExtras();
+ method @Deprecated public android.app.Notification getNotification();
+ method protected static CharSequence? limitCharSequenceLength(CharSequence?);
+ method public androidx.core.app.NotificationCompat.Builder setAllowSystemGeneratedContextualActions(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setAutoCancel(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setBadgeIconType(int);
+ method public androidx.core.app.NotificationCompat.Builder setBubbleMetadata(androidx.core.app.NotificationCompat.BubbleMetadata?);
+ method public androidx.core.app.NotificationCompat.Builder setCategory(String?);
+ method public androidx.core.app.NotificationCompat.Builder setChannelId(String);
+ method @RequiresApi(24) public androidx.core.app.NotificationCompat.Builder setChronometerCountDown(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setColor(@ColorInt int);
+ method public androidx.core.app.NotificationCompat.Builder setColorized(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setContent(android.widget.RemoteViews?);
+ method public androidx.core.app.NotificationCompat.Builder setContentInfo(CharSequence?);
+ method public androidx.core.app.NotificationCompat.Builder setContentIntent(android.app.PendingIntent?);
+ method public androidx.core.app.NotificationCompat.Builder setContentText(CharSequence?);
+ method public androidx.core.app.NotificationCompat.Builder setContentTitle(CharSequence?);
+ method public androidx.core.app.NotificationCompat.Builder setCustomBigContentView(android.widget.RemoteViews?);
+ method public androidx.core.app.NotificationCompat.Builder setCustomContentView(android.widget.RemoteViews?);
+ method public androidx.core.app.NotificationCompat.Builder setCustomHeadsUpContentView(android.widget.RemoteViews?);
+ method public androidx.core.app.NotificationCompat.Builder setDefaults(int);
+ method public androidx.core.app.NotificationCompat.Builder setDeleteIntent(android.app.PendingIntent?);
+ method public androidx.core.app.NotificationCompat.Builder setExtras(android.os.Bundle?);
+ method public androidx.core.app.NotificationCompat.Builder setFullScreenIntent(android.app.PendingIntent?, boolean);
+ method public androidx.core.app.NotificationCompat.Builder setGroup(String?);
+ method public androidx.core.app.NotificationCompat.Builder setGroupAlertBehavior(int);
+ method public androidx.core.app.NotificationCompat.Builder setGroupSummary(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setLargeIcon(android.graphics.Bitmap?);
+ method public androidx.core.app.NotificationCompat.Builder setLights(@ColorInt int, int, int);
+ method public androidx.core.app.NotificationCompat.Builder setLocalOnly(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setLocusId(androidx.core.content.LocusIdCompat?);
+ method @Deprecated public androidx.core.app.NotificationCompat.Builder setNotificationSilent();
+ method public androidx.core.app.NotificationCompat.Builder setNumber(int);
+ method public androidx.core.app.NotificationCompat.Builder setOngoing(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setOnlyAlertOnce(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setPriority(int);
+ method public androidx.core.app.NotificationCompat.Builder setProgress(int, int, boolean);
+ method public androidx.core.app.NotificationCompat.Builder setPublicVersion(android.app.Notification?);
+ method public androidx.core.app.NotificationCompat.Builder setRemoteInputHistory(CharSequence![]?);
+ method public androidx.core.app.NotificationCompat.Builder setSettingsText(CharSequence?);
+ method public androidx.core.app.NotificationCompat.Builder setShortcutId(String?);
+ method public androidx.core.app.NotificationCompat.Builder setShortcutInfo(androidx.core.content.pm.ShortcutInfoCompat?);
+ method public androidx.core.app.NotificationCompat.Builder setShowWhen(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setSilent(boolean);
+ method @RequiresApi(23) public androidx.core.app.NotificationCompat.Builder setSmallIcon(androidx.core.graphics.drawable.IconCompat);
+ method public androidx.core.app.NotificationCompat.Builder setSmallIcon(int);
+ method public androidx.core.app.NotificationCompat.Builder setSmallIcon(int, int);
+ method public androidx.core.app.NotificationCompat.Builder setSortKey(String?);
+ method public androidx.core.app.NotificationCompat.Builder setSound(android.net.Uri?);
+ method public androidx.core.app.NotificationCompat.Builder setSound(android.net.Uri?, int);
+ method public androidx.core.app.NotificationCompat.Builder setStyle(androidx.core.app.NotificationCompat.Style?);
+ method public androidx.core.app.NotificationCompat.Builder setSubText(CharSequence?);
+ method public androidx.core.app.NotificationCompat.Builder setTicker(CharSequence?);
+ method @Deprecated public androidx.core.app.NotificationCompat.Builder setTicker(CharSequence?, android.widget.RemoteViews?);
+ method public androidx.core.app.NotificationCompat.Builder setTimeoutAfter(long);
+ method public androidx.core.app.NotificationCompat.Builder setUsesChronometer(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setVibrate(long[]?);
+ method public androidx.core.app.NotificationCompat.Builder setVisibility(int);
+ method public androidx.core.app.NotificationCompat.Builder setWhen(long);
+ field @Deprecated public java.util.ArrayList<java.lang.String!>! mPeople;
+ }
+
+ public static final class NotificationCompat.CarExtender implements androidx.core.app.NotificationCompat.Extender {
+ ctor public NotificationCompat.CarExtender();
+ ctor public NotificationCompat.CarExtender(android.app.Notification);
+ method public androidx.core.app.NotificationCompat.Builder extend(androidx.core.app.NotificationCompat.Builder);
+ method @ColorInt public int getColor();
+ method public android.graphics.Bitmap? getLargeIcon();
+ method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation? getUnreadConversation();
+ method public androidx.core.app.NotificationCompat.CarExtender setColor(@ColorInt int);
+ method public androidx.core.app.NotificationCompat.CarExtender setLargeIcon(android.graphics.Bitmap?);
+ method @Deprecated public androidx.core.app.NotificationCompat.CarExtender setUnreadConversation(androidx.core.app.NotificationCompat.CarExtender.UnreadConversation?);
+ }
+
+ @Deprecated public static class NotificationCompat.CarExtender.UnreadConversation {
+ method @Deprecated public long getLatestTimestamp();
+ method @Deprecated public String![]? getMessages();
+ method @Deprecated public String? getParticipant();
+ method @Deprecated public String![]? getParticipants();
+ method @Deprecated public android.app.PendingIntent? getReadPendingIntent();
+ method @Deprecated public androidx.core.app.RemoteInput? getRemoteInput();
+ method @Deprecated public android.app.PendingIntent? getReplyPendingIntent();
+ }
+
+ @Deprecated public static class NotificationCompat.CarExtender.UnreadConversation.Builder {
+ ctor @Deprecated public NotificationCompat.CarExtender.UnreadConversation.Builder(String);
+ method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation.Builder addMessage(String?);
+ method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation build();
+ method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation.Builder setLatestTimestamp(long);
+ method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation.Builder setReadPendingIntent(android.app.PendingIntent?);
+ method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation.Builder setReplyAction(android.app.PendingIntent?, androidx.core.app.RemoteInput?);
+ }
+
+ public static class NotificationCompat.DecoratedCustomViewStyle extends androidx.core.app.NotificationCompat.Style {
+ ctor public NotificationCompat.DecoratedCustomViewStyle();
+ }
+
+ public static interface NotificationCompat.Extender {
+ method public androidx.core.app.NotificationCompat.Builder extend(androidx.core.app.NotificationCompat.Builder);
+ }
+
+ public static class NotificationCompat.InboxStyle extends androidx.core.app.NotificationCompat.Style {
+ ctor public NotificationCompat.InboxStyle();
+ ctor public NotificationCompat.InboxStyle(androidx.core.app.NotificationCompat.Builder?);
+ method public androidx.core.app.NotificationCompat.InboxStyle addLine(CharSequence?);
+ method public androidx.core.app.NotificationCompat.InboxStyle setBigContentTitle(CharSequence?);
+ method public androidx.core.app.NotificationCompat.InboxStyle setSummaryText(CharSequence?);
+ }
+
+ public static class NotificationCompat.MessagingStyle extends androidx.core.app.NotificationCompat.Style {
+ ctor @Deprecated public NotificationCompat.MessagingStyle(CharSequence);
+ ctor public NotificationCompat.MessagingStyle(androidx.core.app.Person);
+ method public void addCompatExtras(android.os.Bundle);
+ method public androidx.core.app.NotificationCompat.MessagingStyle addHistoricMessage(androidx.core.app.NotificationCompat.MessagingStyle.Message?);
+ method @Deprecated public androidx.core.app.NotificationCompat.MessagingStyle addMessage(CharSequence?, long, CharSequence?);
+ method public androidx.core.app.NotificationCompat.MessagingStyle addMessage(CharSequence?, long, androidx.core.app.Person?);
+ method public androidx.core.app.NotificationCompat.MessagingStyle addMessage(androidx.core.app.NotificationCompat.MessagingStyle.Message?);
+ method public static androidx.core.app.NotificationCompat.MessagingStyle? extractMessagingStyleFromNotification(android.app.Notification);
+ method public CharSequence? getConversationTitle();
+ method public java.util.List<androidx.core.app.NotificationCompat.MessagingStyle.Message!> getHistoricMessages();
+ method public java.util.List<androidx.core.app.NotificationCompat.MessagingStyle.Message!> getMessages();
+ method public androidx.core.app.Person getUser();
+ method @Deprecated public CharSequence? getUserDisplayName();
+ method public boolean isGroupConversation();
+ method public androidx.core.app.NotificationCompat.MessagingStyle setConversationTitle(CharSequence?);
+ method public androidx.core.app.NotificationCompat.MessagingStyle setGroupConversation(boolean);
+ field public static final int MAXIMUM_RETAINED_MESSAGES = 25; // 0x19
+ }
+
+ public static final class NotificationCompat.MessagingStyle.Message {
+ ctor public NotificationCompat.MessagingStyle.Message(CharSequence?, long, androidx.core.app.Person?);
+ ctor @Deprecated public NotificationCompat.MessagingStyle.Message(CharSequence?, long, CharSequence?);
+ method public String? getDataMimeType();
+ method public android.net.Uri? getDataUri();
+ method public android.os.Bundle getExtras();
+ method public androidx.core.app.Person? getPerson();
+ method @Deprecated public CharSequence? getSender();
+ method public CharSequence? getText();
+ method public long getTimestamp();
+ method public androidx.core.app.NotificationCompat.MessagingStyle.Message setData(String?, android.net.Uri?);
+ }
+
+ public abstract static class NotificationCompat.Style {
+ ctor public NotificationCompat.Style();
+ method public android.app.Notification? build();
+ method public void setBuilder(androidx.core.app.NotificationCompat.Builder?);
+ }
+
+ public static final class NotificationCompat.WearableExtender implements androidx.core.app.NotificationCompat.Extender {
+ ctor public NotificationCompat.WearableExtender();
+ ctor public NotificationCompat.WearableExtender(android.app.Notification);
+ method public androidx.core.app.NotificationCompat.WearableExtender addAction(androidx.core.app.NotificationCompat.Action);
+ method public androidx.core.app.NotificationCompat.WearableExtender addActions(java.util.List<androidx.core.app.NotificationCompat.Action!>);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender addPage(android.app.Notification);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender addPages(java.util.List<android.app.Notification!>);
+ method public androidx.core.app.NotificationCompat.WearableExtender clearActions();
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender clearPages();
+ method public androidx.core.app.NotificationCompat.WearableExtender clone();
+ method public androidx.core.app.NotificationCompat.Builder extend(androidx.core.app.NotificationCompat.Builder);
+ method public java.util.List<androidx.core.app.NotificationCompat.Action!> getActions();
+ method @Deprecated public android.graphics.Bitmap? getBackground();
+ method public String? getBridgeTag();
+ method public int getContentAction();
+ method @Deprecated public int getContentIcon();
+ method @Deprecated public int getContentIconGravity();
+ method public boolean getContentIntentAvailableOffline();
+ method @Deprecated public int getCustomContentHeight();
+ method @Deprecated public int getCustomSizePreset();
+ method public String? getDismissalId();
+ method @Deprecated public android.app.PendingIntent? getDisplayIntent();
+ method @Deprecated public int getGravity();
+ method @Deprecated public boolean getHintAmbientBigPicture();
+ method @Deprecated public boolean getHintAvoidBackgroundClipping();
+ method public boolean getHintContentIntentLaunchesActivity();
+ method @Deprecated public boolean getHintHideIcon();
+ method @Deprecated public int getHintScreenTimeout();
+ method @Deprecated public boolean getHintShowBackgroundOnly();
+ method @Deprecated public java.util.List<android.app.Notification!> getPages();
+ method public boolean getStartScrollBottom();
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setBackground(android.graphics.Bitmap?);
+ method public androidx.core.app.NotificationCompat.WearableExtender setBridgeTag(String?);
+ method public androidx.core.app.NotificationCompat.WearableExtender setContentAction(int);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setContentIcon(int);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setContentIconGravity(int);
+ method public androidx.core.app.NotificationCompat.WearableExtender setContentIntentAvailableOffline(boolean);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setCustomContentHeight(int);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setCustomSizePreset(int);
+ method public androidx.core.app.NotificationCompat.WearableExtender setDismissalId(String?);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setDisplayIntent(android.app.PendingIntent?);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setGravity(int);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setHintAmbientBigPicture(boolean);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setHintAvoidBackgroundClipping(boolean);
+ method public androidx.core.app.NotificationCompat.WearableExtender setHintContentIntentLaunchesActivity(boolean);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setHintHideIcon(boolean);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setHintScreenTimeout(int);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setHintShowBackgroundOnly(boolean);
+ method public androidx.core.app.NotificationCompat.WearableExtender setStartScrollBottom(boolean);
+ field @Deprecated public static final int SCREEN_TIMEOUT_LONG = -1; // 0xffffffff
+ field @Deprecated public static final int SCREEN_TIMEOUT_SHORT = 0; // 0x0
+ field @Deprecated public static final int SIZE_DEFAULT = 0; // 0x0
+ field @Deprecated public static final int SIZE_FULL_SCREEN = 5; // 0x5
+ field @Deprecated public static final int SIZE_LARGE = 4; // 0x4
+ field @Deprecated public static final int SIZE_MEDIUM = 3; // 0x3
+ field @Deprecated public static final int SIZE_SMALL = 2; // 0x2
+ field @Deprecated public static final int SIZE_XSMALL = 1; // 0x1
+ field public static final int UNSET_ACTION_INDEX = -1; // 0xffffffff
+ }
+
+ public final class NotificationCompatExtras {
+ field public static final String EXTRA_ACTION_EXTRAS = "android.support.actionExtras";
+ field public static final String EXTRA_GROUP_KEY = "android.support.groupKey";
+ field public static final String EXTRA_GROUP_SUMMARY = "android.support.isGroupSummary";
+ field public static final String EXTRA_LOCAL_ONLY = "android.support.localOnly";
+ field public static final String EXTRA_REMOTE_INPUTS = "android.support.remoteInputs";
+ field public static final String EXTRA_SORT_KEY = "android.support.sortKey";
+ }
+
+ public abstract class NotificationCompatSideChannelService extends android.app.Service {
+ ctor public NotificationCompatSideChannelService();
+ method public abstract void cancel(String!, int, String!);
+ method public abstract void cancelAll(String!);
+ method public abstract void notify(String!, int, String!, android.app.Notification!);
+ method public android.os.IBinder! onBind(android.content.Intent!);
+ }
+
+ public final class NotificationManagerCompat {
+ method public boolean areNotificationsEnabled();
+ method public void cancel(int);
+ method public void cancel(String?, int);
+ method public void cancelAll();
+ method public void createNotificationChannel(android.app.NotificationChannel);
+ method public void createNotificationChannel(androidx.core.app.NotificationChannelCompat);
+ method public void createNotificationChannelGroup(android.app.NotificationChannelGroup);
+ method public void createNotificationChannelGroup(androidx.core.app.NotificationChannelGroupCompat);
+ method public void createNotificationChannelGroups(java.util.List<android.app.NotificationChannelGroup!>);
+ method public void createNotificationChannelGroupsCompat(java.util.List<androidx.core.app.NotificationChannelGroupCompat!>);
+ method public void createNotificationChannels(java.util.List<android.app.NotificationChannel!>);
+ method public void createNotificationChannelsCompat(java.util.List<androidx.core.app.NotificationChannelCompat!>);
+ method public void deleteNotificationChannel(String);
+ method public void deleteNotificationChannelGroup(String);
+ method public void deleteUnlistedNotificationChannels(java.util.Collection<java.lang.String!>);
+ method public static androidx.core.app.NotificationManagerCompat from(android.content.Context);
+ method public static java.util.Set<java.lang.String!> getEnabledListenerPackages(android.content.Context);
+ method public int getImportance();
+ method public android.app.NotificationChannel? getNotificationChannel(String);
+ method public android.app.NotificationChannel? getNotificationChannel(String, String);
+ method public androidx.core.app.NotificationChannelCompat? getNotificationChannelCompat(String);
+ method public androidx.core.app.NotificationChannelCompat? getNotificationChannelCompat(String, String);
+ method public android.app.NotificationChannelGroup? getNotificationChannelGroup(String);
+ method public androidx.core.app.NotificationChannelGroupCompat? getNotificationChannelGroupCompat(String);
+ method public java.util.List<android.app.NotificationChannelGroup!> getNotificationChannelGroups();
+ method public java.util.List<androidx.core.app.NotificationChannelGroupCompat!> getNotificationChannelGroupsCompat();
+ method public java.util.List<android.app.NotificationChannel!> getNotificationChannels();
+ method public java.util.List<androidx.core.app.NotificationChannelCompat!> getNotificationChannelsCompat();
+ method public void notify(int, android.app.Notification);
+ method public void notify(String?, int, android.app.Notification);
+ field public static final String ACTION_BIND_SIDE_CHANNEL = "android.support.BIND_NOTIFICATION_SIDE_CHANNEL";
+ field public static final String EXTRA_USE_SIDE_CHANNEL = "android.support.useSideChannel";
+ field public static final int IMPORTANCE_DEFAULT = 3; // 0x3
+ field public static final int IMPORTANCE_HIGH = 4; // 0x4
+ field public static final int IMPORTANCE_LOW = 2; // 0x2
+ field public static final int IMPORTANCE_MAX = 5; // 0x5
+ field public static final int IMPORTANCE_MIN = 1; // 0x1
+ field public static final int IMPORTANCE_NONE = 0; // 0x0
+ field public static final int IMPORTANCE_UNSPECIFIED = -1000; // 0xfffffc18
+ }
+
+ public class Person {
+ method public static androidx.core.app.Person fromBundle(android.os.Bundle);
+ method public androidx.core.graphics.drawable.IconCompat? getIcon();
+ method public String? getKey();
+ method public CharSequence? getName();
+ method public String? getUri();
+ method public boolean isBot();
+ method public boolean isImportant();
+ method public androidx.core.app.Person.Builder toBuilder();
+ method public android.os.Bundle toBundle();
+ }
+
+ public static class Person.Builder {
+ ctor public Person.Builder();
+ method public androidx.core.app.Person build();
+ method public androidx.core.app.Person.Builder setBot(boolean);
+ method public androidx.core.app.Person.Builder setIcon(androidx.core.graphics.drawable.IconCompat?);
+ method public androidx.core.app.Person.Builder setImportant(boolean);
+ method public androidx.core.app.Person.Builder setKey(String?);
+ method public androidx.core.app.Person.Builder setName(CharSequence?);
+ method public androidx.core.app.Person.Builder setUri(String?);
+ }
+
+ @androidx.versionedparcelable.VersionedParcelize(jetifyAs="android.support.v4.app.RemoteActionCompat") public final class RemoteActionCompat implements androidx.versionedparcelable.VersionedParcelable {
+ ctor public RemoteActionCompat(androidx.core.graphics.drawable.IconCompat, CharSequence, CharSequence, android.app.PendingIntent);
+ ctor public RemoteActionCompat(androidx.core.app.RemoteActionCompat);
+ method @RequiresApi(26) public static androidx.core.app.RemoteActionCompat createFromRemoteAction(android.app.RemoteAction);
+ method public android.app.PendingIntent getActionIntent();
+ method public CharSequence getContentDescription();
+ method public androidx.core.graphics.drawable.IconCompat getIcon();
+ method public CharSequence getTitle();
+ method public boolean isEnabled();
+ method public void setEnabled(boolean);
+ method public void setShouldShowIcon(boolean);
+ method public boolean shouldShowIcon();
+ method @RequiresApi(26) public android.app.RemoteAction toRemoteAction();
+ }
+
+ public final class RemoteInput {
+ method public static void addDataResultToIntent(androidx.core.app.RemoteInput!, android.content.Intent!, java.util.Map<java.lang.String!,android.net.Uri!>!);
+ method public static void addResultsToIntent(androidx.core.app.RemoteInput![]!, android.content.Intent!, android.os.Bundle!);
+ method public boolean getAllowFreeFormInput();
+ method public java.util.Set<java.lang.String!>! getAllowedDataTypes();
+ method public CharSequence![]! getChoices();
+ method public static java.util.Map<java.lang.String!,android.net.Uri!>! getDataResultsFromIntent(android.content.Intent!, String!);
+ method public int getEditChoicesBeforeSending();
+ method public android.os.Bundle! getExtras();
+ method public CharSequence! getLabel();
+ method public String! getResultKey();
+ method public static android.os.Bundle! getResultsFromIntent(android.content.Intent!);
+ method public static int getResultsSource(android.content.Intent);
+ method public boolean isDataOnly();
+ method public static void setResultsSource(android.content.Intent, int);
+ field public static final int EDIT_CHOICES_BEFORE_SENDING_AUTO = 0; // 0x0
+ field public static final int EDIT_CHOICES_BEFORE_SENDING_DISABLED = 1; // 0x1
+ field public static final int EDIT_CHOICES_BEFORE_SENDING_ENABLED = 2; // 0x2
+ field public static final String EXTRA_RESULTS_DATA = "android.remoteinput.resultsData";
+ field public static final String RESULTS_CLIP_LABEL = "android.remoteinput.results";
+ field public static final int SOURCE_CHOICE = 1; // 0x1
+ field public static final int SOURCE_FREE_FORM_INPUT = 0; // 0x0
+ }
+
+ public static final class RemoteInput.Builder {
+ ctor public RemoteInput.Builder(String);
+ method public androidx.core.app.RemoteInput.Builder addExtras(android.os.Bundle);
+ method public androidx.core.app.RemoteInput build();
+ method public android.os.Bundle getExtras();
+ method public androidx.core.app.RemoteInput.Builder setAllowDataType(String, boolean);
+ method public androidx.core.app.RemoteInput.Builder setAllowFreeFormInput(boolean);
+ method public androidx.core.app.RemoteInput.Builder setChoices(CharSequence![]?);
+ method public androidx.core.app.RemoteInput.Builder setEditChoicesBeforeSending(int);
+ method public androidx.core.app.RemoteInput.Builder setLabel(CharSequence?);
+ }
+
+ public final class ServiceCompat {
+ method public static void stopForeground(android.app.Service, int);
+ field public static final int START_STICKY = 1; // 0x1
+ field public static final int STOP_FOREGROUND_DETACH = 2; // 0x2
+ field public static final int STOP_FOREGROUND_REMOVE = 1; // 0x1
+ }
+
+ public final class ShareCompat {
+ method @Deprecated public static void configureMenuItem(android.view.MenuItem, androidx.core.app.ShareCompat.IntentBuilder);
+ method @Deprecated public static void configureMenuItem(android.view.Menu, @IdRes int, androidx.core.app.ShareCompat.IntentBuilder);
+ method public static android.content.ComponentName? getCallingActivity(android.app.Activity);
+ method public static String? getCallingPackage(android.app.Activity);
+ field public static final String EXTRA_CALLING_ACTIVITY = "androidx.core.app.EXTRA_CALLING_ACTIVITY";
+ field public static final String EXTRA_CALLING_ACTIVITY_INTEROP = "android.support.v4.app.EXTRA_CALLING_ACTIVITY";
+ field public static final String EXTRA_CALLING_PACKAGE = "androidx.core.app.EXTRA_CALLING_PACKAGE";
+ field public static final String EXTRA_CALLING_PACKAGE_INTEROP = "android.support.v4.app.EXTRA_CALLING_PACKAGE";
+ }
+
+ public static class ShareCompat.IntentBuilder {
+ ctor public ShareCompat.IntentBuilder(android.content.Context);
+ method public androidx.core.app.ShareCompat.IntentBuilder addEmailBcc(String);
+ method public androidx.core.app.ShareCompat.IntentBuilder addEmailBcc(String![]);
+ method public androidx.core.app.ShareCompat.IntentBuilder addEmailCc(String);
+ method public androidx.core.app.ShareCompat.IntentBuilder addEmailCc(String![]);
+ method public androidx.core.app.ShareCompat.IntentBuilder addEmailTo(String);
+ method public androidx.core.app.ShareCompat.IntentBuilder addEmailTo(String![]);
+ method public androidx.core.app.ShareCompat.IntentBuilder addStream(android.net.Uri);
+ method public android.content.Intent createChooserIntent();
+ method @Deprecated public static androidx.core.app.ShareCompat.IntentBuilder from(android.app.Activity);
+ method public android.content.Intent getIntent();
+ method public androidx.core.app.ShareCompat.IntentBuilder setChooserTitle(CharSequence?);
+ method public androidx.core.app.ShareCompat.IntentBuilder setChooserTitle(@StringRes int);
+ method public androidx.core.app.ShareCompat.IntentBuilder setEmailBcc(String![]?);
+ method public androidx.core.app.ShareCompat.IntentBuilder setEmailCc(String![]?);
+ method public androidx.core.app.ShareCompat.IntentBuilder setEmailTo(String![]?);
+ method public androidx.core.app.ShareCompat.IntentBuilder setHtmlText(String?);
+ method public androidx.core.app.ShareCompat.IntentBuilder setStream(android.net.Uri?);
+ method public androidx.core.app.ShareCompat.IntentBuilder setSubject(String?);
+ method public androidx.core.app.ShareCompat.IntentBuilder setText(CharSequence?);
+ method public androidx.core.app.ShareCompat.IntentBuilder setType(String?);
+ method public void startChooser();
+ }
+
+ public static class ShareCompat.IntentReader {
+ ctor public ShareCompat.IntentReader(android.app.Activity);
+ ctor public ShareCompat.IntentReader(android.content.Context, android.content.Intent);
+ method @Deprecated public static androidx.core.app.ShareCompat.IntentReader from(android.app.Activity);
+ method public android.content.ComponentName? getCallingActivity();
+ method public android.graphics.drawable.Drawable? getCallingActivityIcon();
+ method public android.graphics.drawable.Drawable? getCallingApplicationIcon();
+ method public CharSequence? getCallingApplicationLabel();
+ method public String? getCallingPackage();
+ method public String![]? getEmailBcc();
+ method public String![]? getEmailCc();
+ method public String![]? getEmailTo();
+ method public String? getHtmlText();
+ method public android.net.Uri? getStream();
+ method public android.net.Uri? getStream(int);
+ method public int getStreamCount();
+ method public String? getSubject();
+ method public CharSequence? getText();
+ method public String? getType();
+ method public boolean isMultipleShare();
+ method public boolean isShareIntent();
+ method public boolean isSingleShare();
+ }
+
+ public abstract class SharedElementCallback {
+ ctor public SharedElementCallback();
+ method public android.os.Parcelable! onCaptureSharedElementSnapshot(android.view.View!, android.graphics.Matrix!, android.graphics.RectF!);
+ method public android.view.View! onCreateSnapshotView(android.content.Context!, android.os.Parcelable!);
+ method public void onMapSharedElements(java.util.List<java.lang.String!>!, java.util.Map<java.lang.String!,android.view.View!>!);
+ method public void onRejectSharedElements(java.util.List<android.view.View!>!);
+ method public void onSharedElementEnd(java.util.List<java.lang.String!>!, java.util.List<android.view.View!>!, java.util.List<android.view.View!>!);
+ method public void onSharedElementStart(java.util.List<java.lang.String!>!, java.util.List<android.view.View!>!, java.util.List<android.view.View!>!);
+ method public void onSharedElementsArrived(java.util.List<java.lang.String!>!, java.util.List<android.view.View!>!, androidx.core.app.SharedElementCallback.OnSharedElementsReadyListener!);
+ }
+
+ public static interface SharedElementCallback.OnSharedElementsReadyListener {
+ method public void onSharedElementsReady();
+ }
+
+ public final class TaskStackBuilder implements java.lang.Iterable<android.content.Intent> {
+ method public androidx.core.app.TaskStackBuilder addNextIntent(android.content.Intent);
+ method public androidx.core.app.TaskStackBuilder addNextIntentWithParentStack(android.content.Intent);
+ method public androidx.core.app.TaskStackBuilder addParentStack(android.app.Activity);
+ method public androidx.core.app.TaskStackBuilder addParentStack(Class<?>);
+ method public androidx.core.app.TaskStackBuilder! addParentStack(android.content.ComponentName!);
+ method public static androidx.core.app.TaskStackBuilder create(android.content.Context);
+ method public android.content.Intent? editIntentAt(int);
+ method @Deprecated public static androidx.core.app.TaskStackBuilder! from(android.content.Context!);
+ method @Deprecated public android.content.Intent! getIntent(int);
+ method public int getIntentCount();
+ method public android.content.Intent![] getIntents();
+ method public android.app.PendingIntent? getPendingIntent(int, int);
+ method public android.app.PendingIntent? getPendingIntent(int, int, android.os.Bundle?);
+ method @Deprecated public java.util.Iterator<android.content.Intent!>! iterator();
+ method public void startActivities();
+ method public void startActivities(android.os.Bundle?);
+ }
+
+ public static interface TaskStackBuilder.SupportParentable {
+ method public android.content.Intent? getSupportParentActivityIntent();
+ }
+
+}
+
+package androidx.core.content {
+
+ public final class ContentProviderCompat {
+ method public static android.content.Context requireContext(android.content.ContentProvider);
+ }
+
+ public final class ContentResolverCompat {
+ method public static android.database.Cursor! query(android.content.ContentResolver!, android.net.Uri!, String![]!, String!, String![]!, String!, androidx.core.os.CancellationSignal!);
+ }
+
+ public class ContextCompat {
+ ctor protected ContextCompat();
+ method public static int checkSelfPermission(android.content.Context, String);
+ method public static android.content.Context? createDeviceProtectedStorageContext(android.content.Context);
+ method public static java.io.File! getCodeCacheDir(android.content.Context);
+ method @ColorInt public static int getColor(android.content.Context, @ColorRes int);
+ method public static android.content.res.ColorStateList? getColorStateList(android.content.Context, @ColorRes int);
+ method public static java.io.File? getDataDir(android.content.Context);
+ method public static android.graphics.drawable.Drawable? getDrawable(android.content.Context, @DrawableRes int);
+ method public static java.io.File![] getExternalCacheDirs(android.content.Context);
+ method public static java.io.File![] getExternalFilesDirs(android.content.Context, String?);
+ method public static java.util.concurrent.Executor! getMainExecutor(android.content.Context!);
+ method public static java.io.File? getNoBackupFilesDir(android.content.Context);
+ method public static java.io.File![] getObbDirs(android.content.Context);
+ method public static <T> T? getSystemService(android.content.Context, Class<T!>);
+ method public static String? getSystemServiceName(android.content.Context, Class<?>);
+ method public static boolean isDeviceProtectedStorage(android.content.Context);
+ method public static boolean startActivities(android.content.Context, android.content.Intent![]);
+ method public static boolean startActivities(android.content.Context, android.content.Intent![], android.os.Bundle?);
+ method public static void startActivity(android.content.Context, android.content.Intent, android.os.Bundle?);
+ method public static void startForegroundService(android.content.Context, android.content.Intent);
+ }
+
+ public class FileProvider extends android.content.ContentProvider {
+ ctor public FileProvider();
+ method public int delete(android.net.Uri, String?, String![]?);
+ method public String! getType(android.net.Uri);
+ method public static android.net.Uri! getUriForFile(android.content.Context, String, java.io.File);
+ method public static android.net.Uri getUriForFile(android.content.Context, String, java.io.File, String);
+ method public android.net.Uri! insert(android.net.Uri, android.content.ContentValues!);
+ method public boolean onCreate();
+ method public android.database.Cursor! query(android.net.Uri, String![]?, String?, String![]?, String?);
+ method public int update(android.net.Uri, android.content.ContentValues!, String?, String![]?);
+ }
+
+ public final class IntentCompat {
+ method public static android.content.Intent makeMainSelectorActivity(String, String);
+ field public static final String ACTION_CREATE_REMINDER = "android.intent.action.CREATE_REMINDER";
+ field public static final String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER";
+ field public static final String EXTRA_HTML_TEXT = "android.intent.extra.HTML_TEXT";
+ field public static final String EXTRA_START_PLAYBACK = "android.intent.extra.START_PLAYBACK";
+ field public static final String EXTRA_TIME = "android.intent.extra.TIME";
+ }
+
+ public final class LocusIdCompat {
+ ctor public LocusIdCompat(String);
+ method public String getId();
+ method @RequiresApi(29) public android.content.LocusId toLocusId();
+ method @RequiresApi(29) public static androidx.core.content.LocusIdCompat toLocusIdCompat(android.content.LocusId);
+ }
+
+ public final class MimeTypeFilter {
+ method public static boolean matches(String?, String);
+ method public static String? matches(String?, String![]);
+ method public static String? matches(String![]?, String);
+ method public static String![] matchesMany(String![]?, String);
+ }
+
+ public final class PermissionChecker {
+ method public static int checkCallingOrSelfPermission(android.content.Context, String);
+ method public static int checkCallingPermission(android.content.Context, String, String?);
+ method public static int checkPermission(android.content.Context, String, int, int, String?);
+ method public static int checkSelfPermission(android.content.Context, String);
+ field public static final int PERMISSION_DENIED = -1; // 0xffffffff
+ field public static final int PERMISSION_DENIED_APP_OP = -2; // 0xfffffffe
+ field public static final int PERMISSION_GRANTED = 0; // 0x0
+ }
+
+ @Deprecated public final class SharedPreferencesCompat {
+ }
+
+ @Deprecated public static final class SharedPreferencesCompat.EditorCompat {
+ method @Deprecated public void apply(android.content.SharedPreferences.Editor);
+ method @Deprecated public static androidx.core.content.SharedPreferencesCompat.EditorCompat! getInstance();
+ }
+
+}
+
+package androidx.core.content.pm {
+
+ @Deprecated public final class ActivityInfoCompat {
+ field @Deprecated public static final int CONFIG_UI_MODE = 512; // 0x200
+ }
+
+ public final class PackageInfoCompat {
+ method public static long getLongVersionCode(android.content.pm.PackageInfo);
+ method public static java.util.List<android.content.pm.Signature!> getSignatures(android.content.pm.PackageManager, String) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public static boolean hasSignatures(android.content.pm.PackageManager, String, @Size(min=1) java.util.Map<byte[]!,java.lang.Integer!>, boolean) throws android.content.pm.PackageManager.NameNotFoundException;
+ }
+
+ public final class PermissionInfoCompat {
+ method public static int getProtection(android.content.pm.PermissionInfo);
+ method public static int getProtectionFlags(android.content.pm.PermissionInfo);
+ }
+
+ public class ShortcutInfoCompat {
+ method public android.content.ComponentName? getActivity();
+ method public java.util.Set<java.lang.String!>? getCategories();
+ method public CharSequence? getDisabledMessage();
+ method public int getDisabledReason();
+ method public android.os.PersistableBundle? getExtras();
+ method public String getId();
+ method public android.content.Intent getIntent();
+ method public android.content.Intent![] getIntents();
+ method public long getLastChangedTimestamp();
+ method public androidx.core.content.LocusIdCompat? getLocusId();
+ method public CharSequence? getLongLabel();
+ method public String getPackage();
+ method public int getRank();
+ method public CharSequence getShortLabel();
+ method public android.os.UserHandle? getUserHandle();
+ method public boolean hasKeyFieldsOnly();
+ method public boolean isCached();
+ method public boolean isDeclaredInManifest();
+ method public boolean isDynamic();
+ method public boolean isEnabled();
+ method public boolean isImmutable();
+ method public boolean isPinned();
+ method @RequiresApi(25) public android.content.pm.ShortcutInfo! toShortcutInfo();
+ }
+
+ public static class ShortcutInfoCompat.Builder {
+ ctor public ShortcutInfoCompat.Builder(android.content.Context, String);
+ method public androidx.core.content.pm.ShortcutInfoCompat build();
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setActivity(android.content.ComponentName);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setAlwaysBadged();
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setCategories(java.util.Set<java.lang.String!>);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setDisabledMessage(CharSequence);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setExtras(android.os.PersistableBundle);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIcon(androidx.core.graphics.drawable.IconCompat!);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntent(android.content.Intent);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntents(android.content.Intent![]);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIsConversation();
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setLocusId(androidx.core.content.LocusIdCompat?);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setLongLabel(CharSequence);
+ method @Deprecated public androidx.core.content.pm.ShortcutInfoCompat.Builder setLongLived();
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setLongLived(boolean);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setPerson(androidx.core.app.Person);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setPersons(androidx.core.app.Person![]);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setRank(int);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setShortLabel(CharSequence);
+ }
+
+ public class ShortcutManagerCompat {
+ method public static boolean addDynamicShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
+ method public static android.content.Intent createShortcutResultIntent(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat);
+ method public static void disableShortcuts(android.content.Context, java.util.List<java.lang.String!>, CharSequence?);
+ method public static void enableShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
+ method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getDynamicShortcuts(android.content.Context);
+ method public static int getIconMaxHeight(android.content.Context);
+ method public static int getIconMaxWidth(android.content.Context);
+ method public static int getMaxShortcutCountPerActivity(android.content.Context);
+ method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getShortcuts(android.content.Context, int);
+ method public static boolean isRateLimitingActive(android.content.Context);
+ method public static boolean isRequestPinShortcutSupported(android.content.Context);
+ method public static boolean pushDynamicShortcut(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat);
+ method public static void removeAllDynamicShortcuts(android.content.Context);
+ method public static void removeDynamicShortcuts(android.content.Context, java.util.List<java.lang.String!>);
+ method public static void removeLongLivedShortcuts(android.content.Context, java.util.List<java.lang.String!>);
+ method public static void reportShortcutUsed(android.content.Context, String);
+ method public static boolean requestPinShortcut(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat, android.content.IntentSender?);
+ method public static boolean setDynamicShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
+ method public static boolean updateShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
+ field public static final String EXTRA_SHORTCUT_ID = "android.intent.extra.shortcut.ID";
+ field public static final int FLAG_MATCH_CACHED = 8; // 0x8
+ field public static final int FLAG_MATCH_DYNAMIC = 2; // 0x2
+ field public static final int FLAG_MATCH_MANIFEST = 1; // 0x1
+ field public static final int FLAG_MATCH_PINNED = 4; // 0x4
+ }
+
+}
+
+package androidx.core.content.res {
+
+ public final class ConfigurationHelper {
+ method public static int getDensityDpi(android.content.res.Resources);
+ }
+
+ public final class ResourcesCompat {
+ method public static android.graphics.Typeface? getCachedFont(android.content.Context, @FontRes int) throws android.content.res.Resources.NotFoundException;
+ method @ColorInt public static int getColor(android.content.res.Resources, @ColorRes int, android.content.res.Resources.Theme?) throws android.content.res.Resources.NotFoundException;
+ method public static android.content.res.ColorStateList? getColorStateList(android.content.res.Resources, @ColorRes int, android.content.res.Resources.Theme?) throws android.content.res.Resources.NotFoundException;
+ method public static android.graphics.drawable.Drawable? getDrawable(android.content.res.Resources, @DrawableRes int, android.content.res.Resources.Theme?) throws android.content.res.Resources.NotFoundException;
+ method public static android.graphics.drawable.Drawable? getDrawableForDensity(android.content.res.Resources, @DrawableRes int, int, android.content.res.Resources.Theme?) throws android.content.res.Resources.NotFoundException;
+ method public static float getFloat(android.content.res.Resources, @DimenRes int);
+ method public static android.graphics.Typeface? getFont(android.content.Context, @FontRes int) throws android.content.res.Resources.NotFoundException;
+ method public static void getFont(android.content.Context, @FontRes int, androidx.core.content.res.ResourcesCompat.FontCallback, android.os.Handler?) throws android.content.res.Resources.NotFoundException;
+ field @AnyRes public static final int ID_NULL = 0; // 0x0
+ }
+
+ public abstract static class ResourcesCompat.FontCallback {
+ ctor public ResourcesCompat.FontCallback();
+ method public abstract void onFontRetrievalFailed(int);
+ method public abstract void onFontRetrieved(android.graphics.Typeface);
+ }
+
+ public static final class ResourcesCompat.ThemeCompat {
+ method public static void rebase(android.content.res.Resources.Theme);
+ }
+
+}
+
+package androidx.core.database {
+
+ public final class CursorWindowCompat {
+ method public static android.database.CursorWindow create(String?, long);
+ }
+
+ @Deprecated public final class DatabaseUtilsCompat {
+ method @Deprecated public static String![]! appendSelectionArgs(String![]!, String![]!);
+ method @Deprecated public static String! concatenateWhere(String!, String!);
+ }
+
+}
+
+package androidx.core.database.sqlite {
+
+ public final class SQLiteCursorCompat {
+ method public static void setFillWindowForwardOnly(android.database.sqlite.SQLiteCursor, boolean);
+ }
+
+}
+
+package androidx.core.graphics {
+
+ public final class BitmapCompat {
+ method public static int getAllocationByteCount(android.graphics.Bitmap);
+ method public static boolean hasMipMap(android.graphics.Bitmap);
+ method public static void setHasMipMap(android.graphics.Bitmap, boolean);
+ }
+
+ public class BlendModeColorFilterCompat {
+ method public static android.graphics.ColorFilter? createBlendModeColorFilterCompat(int, androidx.core.graphics.BlendModeCompat);
+ }
+
+ public enum BlendModeCompat {
+ enum_constant public static final androidx.core.graphics.BlendModeCompat CLEAR;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat COLOR;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat COLOR_BURN;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat COLOR_DODGE;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat DARKEN;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat DIFFERENCE;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat DST;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat DST_ATOP;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat DST_IN;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat DST_OUT;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat DST_OVER;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat EXCLUSION;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat HARD_LIGHT;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat HUE;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat LIGHTEN;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat LUMINOSITY;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat MODULATE;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat MULTIPLY;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat OVERLAY;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat PLUS;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat SATURATION;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat SCREEN;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat SOFT_LIGHT;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat SRC;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat SRC_ATOP;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat SRC_IN;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat SRC_OUT;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat SRC_OVER;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat XOR;
+ }
+
+ public final class ColorUtils {
+ method @ColorInt public static int HSLToColor(float[]);
+ method @ColorInt public static int LABToColor(@FloatRange(from=0.0f, to=100) double, @FloatRange(from=0xffffff80, to=127) double, @FloatRange(from=0xffffff80, to=127) double);
+ method public static void LABToXYZ(@FloatRange(from=0.0f, to=100) double, @FloatRange(from=0xffffff80, to=127) double, @FloatRange(from=0xffffff80, to=127) double, double[]);
+ method public static void RGBToHSL(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, float[]);
+ method public static void RGBToLAB(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, double[]);
+ method public static void RGBToXYZ(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, double[]);
+ method @ColorInt public static int XYZToColor(@FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_X) double, @FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_Y) double, @FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_Z) double);
+ method public static void XYZToLAB(@FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_X) double, @FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_Y) double, @FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_Z) double, double[]);
+ method @ColorInt public static int blendARGB(@ColorInt int, @ColorInt int, @FloatRange(from=0.0, to=1.0) float);
+ method public static void blendHSL(float[], float[], @FloatRange(from=0.0, to=1.0) float, float[]);
+ method public static void blendLAB(double[], double[], @FloatRange(from=0.0, to=1.0) double, double[]);
+ method public static double calculateContrast(@ColorInt int, @ColorInt int);
+ method @FloatRange(from=0.0, to=1.0) public static double calculateLuminance(@ColorInt int);
+ method public static int calculateMinimumAlpha(@ColorInt int, @ColorInt int, float);
+ method public static void colorToHSL(@ColorInt int, float[]);
+ method public static void colorToLAB(@ColorInt int, double[]);
+ method public static void colorToXYZ(@ColorInt int, double[]);
+ method public static int compositeColors(@ColorInt int, @ColorInt int);
+ method @RequiresApi(26) public static android.graphics.Color compositeColors(android.graphics.Color, android.graphics.Color);
+ method public static double distanceEuclidean(double[], double[]);
+ method @ColorInt public static int setAlphaComponent(@ColorInt int, @IntRange(from=0, to=255) int);
+ }
+
+ public final class Insets {
+ method public static androidx.core.graphics.Insets add(androidx.core.graphics.Insets, androidx.core.graphics.Insets);
+ method public static androidx.core.graphics.Insets max(androidx.core.graphics.Insets, androidx.core.graphics.Insets);
+ method public static androidx.core.graphics.Insets min(androidx.core.graphics.Insets, androidx.core.graphics.Insets);
+ method public static androidx.core.graphics.Insets of(int, int, int, int);
+ method public static androidx.core.graphics.Insets of(android.graphics.Rect);
+ method public static androidx.core.graphics.Insets subtract(androidx.core.graphics.Insets, androidx.core.graphics.Insets);
+ method @RequiresApi(api=29) public static androidx.core.graphics.Insets toCompatInsets(android.graphics.Insets);
+ method @RequiresApi(api=29) public android.graphics.Insets toPlatformInsets();
+ field public static final androidx.core.graphics.Insets NONE;
+ field public final int bottom;
+ field public final int left;
+ field public final int right;
+ field public final int top;
+ }
+
+ public final class PaintCompat {
+ method public static boolean hasGlyph(android.graphics.Paint, String);
+ method public static boolean setBlendMode(android.graphics.Paint, androidx.core.graphics.BlendModeCompat?);
+ }
+
+ public final class PathSegment {
+ ctor public PathSegment(android.graphics.PointF, float, android.graphics.PointF, float);
+ method public android.graphics.PointF getEnd();
+ method public float getEndFraction();
+ method public android.graphics.PointF getStart();
+ method public float getStartFraction();
+ }
+
+ public final class PathUtils {
+ method @RequiresApi(26) public static java.util.Collection<androidx.core.graphics.PathSegment!> flatten(android.graphics.Path);
+ method @RequiresApi(26) public static java.util.Collection<androidx.core.graphics.PathSegment!> flatten(android.graphics.Path, @FloatRange(from=0) float);
+ }
+
+ public class TypefaceCompat {
+ method public static android.graphics.Typeface create(android.content.Context, android.graphics.Typeface?, int);
+ }
+
+}
+
+package androidx.core.graphics.drawable {
+
+ public final class DrawableCompat {
+ method public static void applyTheme(android.graphics.drawable.Drawable, android.content.res.Resources.Theme);
+ method public static boolean canApplyTheme(android.graphics.drawable.Drawable);
+ method public static void clearColorFilter(android.graphics.drawable.Drawable);
+ method public static int getAlpha(android.graphics.drawable.Drawable);
+ method public static android.graphics.ColorFilter! getColorFilter(android.graphics.drawable.Drawable);
+ method public static int getLayoutDirection(android.graphics.drawable.Drawable);
+ method public static void inflate(android.graphics.drawable.Drawable, android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.content.res.Resources.Theme?) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+ method public static boolean isAutoMirrored(android.graphics.drawable.Drawable);
+ method @Deprecated public static void jumpToCurrentState(android.graphics.drawable.Drawable);
+ method public static void setAutoMirrored(android.graphics.drawable.Drawable, boolean);
+ method public static void setHotspot(android.graphics.drawable.Drawable, float, float);
+ method public static void setHotspotBounds(android.graphics.drawable.Drawable, int, int, int, int);
+ method public static boolean setLayoutDirection(android.graphics.drawable.Drawable, int);
+ method public static void setTint(android.graphics.drawable.Drawable, @ColorInt int);
+ method public static void setTintList(android.graphics.drawable.Drawable, android.content.res.ColorStateList?);
+ method public static void setTintMode(android.graphics.drawable.Drawable, android.graphics.PorterDuff.Mode);
+ method public static <T extends android.graphics.drawable.Drawable> T! unwrap(android.graphics.drawable.Drawable);
+ method public static android.graphics.drawable.Drawable! wrap(android.graphics.drawable.Drawable);
+ }
+
+ @androidx.versionedparcelable.VersionedParcelize(allowSerialization=true, ignoreParcelables=true, isCustom=true, jetifyAs="android.support.v4.graphics.drawable.IconCompat") public class IconCompat extends androidx.versionedparcelable.CustomVersionedParcelable {
+ method public static androidx.core.graphics.drawable.IconCompat? createFromBundle(android.os.Bundle);
+ method @RequiresApi(23) public static androidx.core.graphics.drawable.IconCompat? createFromIcon(android.content.Context, android.graphics.drawable.Icon);
+ method public static androidx.core.graphics.drawable.IconCompat! createWithAdaptiveBitmap(android.graphics.Bitmap!);
+ method public static androidx.core.graphics.drawable.IconCompat createWithAdaptiveBitmapContentUri(String);
+ method public static androidx.core.graphics.drawable.IconCompat createWithAdaptiveBitmapContentUri(android.net.Uri);
+ method public static androidx.core.graphics.drawable.IconCompat! createWithBitmap(android.graphics.Bitmap!);
+ method public static androidx.core.graphics.drawable.IconCompat! createWithContentUri(String!);
+ method public static androidx.core.graphics.drawable.IconCompat! createWithContentUri(android.net.Uri!);
+ method public static androidx.core.graphics.drawable.IconCompat! createWithData(byte[]!, int, int);
+ method public static androidx.core.graphics.drawable.IconCompat! createWithResource(android.content.Context!, @DrawableRes int);
+ method @IdRes public int getResId();
+ method public String getResPackage();
+ method public int getType();
+ method public android.net.Uri getUri();
+ method public android.graphics.drawable.Drawable? loadDrawable(android.content.Context);
+ method public androidx.core.graphics.drawable.IconCompat! setTint(@ColorInt int);
+ method public androidx.core.graphics.drawable.IconCompat! setTintList(android.content.res.ColorStateList!);
+ method public androidx.core.graphics.drawable.IconCompat! setTintMode(android.graphics.PorterDuff.Mode!);
+ method public android.os.Bundle toBundle();
+ method @Deprecated @RequiresApi(23) public android.graphics.drawable.Icon toIcon();
+ method @RequiresApi(23) public android.graphics.drawable.Icon toIcon(android.content.Context?);
+ field public static final int TYPE_ADAPTIVE_BITMAP = 5; // 0x5
+ field public static final int TYPE_BITMAP = 1; // 0x1
+ field public static final int TYPE_DATA = 3; // 0x3
+ field public static final int TYPE_RESOURCE = 2; // 0x2
+ field public static final int TYPE_UNKNOWN = -1; // 0xffffffff
+ field public static final int TYPE_URI = 4; // 0x4
+ field public static final int TYPE_URI_ADAPTIVE_BITMAP = 6; // 0x6
+ }
+
+ public abstract class RoundedBitmapDrawable extends android.graphics.drawable.Drawable {
+ method public void draw(android.graphics.Canvas);
+ method public final android.graphics.Bitmap? getBitmap();
+ method public float getCornerRadius();
+ method public int getGravity();
+ method public int getOpacity();
+ method public final android.graphics.Paint getPaint();
+ method public boolean hasAntiAlias();
+ method public boolean hasMipMap();
+ method public boolean isCircular();
+ method public void setAlpha(int);
+ method public void setAntiAlias(boolean);
+ method public void setCircular(boolean);
+ method public void setColorFilter(android.graphics.ColorFilter!);
+ method public void setCornerRadius(float);
+ method public void setDither(boolean);
+ method public void setGravity(int);
+ method public void setMipMap(boolean);
+ method public void setTargetDensity(android.graphics.Canvas);
+ method public void setTargetDensity(android.util.DisplayMetrics);
+ method public void setTargetDensity(int);
+ }
+
+ public final class RoundedBitmapDrawableFactory {
+ method public static androidx.core.graphics.drawable.RoundedBitmapDrawable create(android.content.res.Resources, android.graphics.Bitmap?);
+ method public static androidx.core.graphics.drawable.RoundedBitmapDrawable create(android.content.res.Resources, String);
+ method public static androidx.core.graphics.drawable.RoundedBitmapDrawable create(android.content.res.Resources, java.io.InputStream);
+ }
+
+}
+
+package androidx.core.hardware.display {
+
+ public final class DisplayManagerCompat {
+ method public android.view.Display? getDisplay(int);
+ method public android.view.Display![] getDisplays();
+ method public android.view.Display![] getDisplays(String?);
+ method public static androidx.core.hardware.display.DisplayManagerCompat getInstance(android.content.Context);
+ field public static final String DISPLAY_CATEGORY_PRESENTATION = "android.hardware.display.category.PRESENTATION";
+ }
+
+}
+
+package androidx.core.hardware.fingerprint {
+
+ @Deprecated public class FingerprintManagerCompat {
+ method @Deprecated @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) public void authenticate(androidx.core.hardware.fingerprint.FingerprintManagerCompat.CryptoObject?, int, androidx.core.os.CancellationSignal?, androidx.core.hardware.fingerprint.FingerprintManagerCompat.AuthenticationCallback, android.os.Handler?);
+ method @Deprecated public static androidx.core.hardware.fingerprint.FingerprintManagerCompat from(android.content.Context);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) public boolean hasEnrolledFingerprints();
+ method @Deprecated @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) public boolean isHardwareDetected();
+ }
+
+ @Deprecated public abstract static class FingerprintManagerCompat.AuthenticationCallback {
+ ctor @Deprecated public FingerprintManagerCompat.AuthenticationCallback();
+ method @Deprecated public void onAuthenticationError(int, CharSequence!);
+ method @Deprecated public void onAuthenticationFailed();
+ method @Deprecated public void onAuthenticationHelp(int, CharSequence!);
+ method @Deprecated public void onAuthenticationSucceeded(androidx.core.hardware.fingerprint.FingerprintManagerCompat.AuthenticationResult!);
+ }
+
+ @Deprecated public static final class FingerprintManagerCompat.AuthenticationResult {
+ ctor @Deprecated public FingerprintManagerCompat.AuthenticationResult(androidx.core.hardware.fingerprint.FingerprintManagerCompat.CryptoObject!);
+ method @Deprecated public androidx.core.hardware.fingerprint.FingerprintManagerCompat.CryptoObject! getCryptoObject();
+ }
+
+ @Deprecated public static class FingerprintManagerCompat.CryptoObject {
+ ctor @Deprecated public FingerprintManagerCompat.CryptoObject(java.security.Signature);
+ ctor @Deprecated public FingerprintManagerCompat.CryptoObject(javax.crypto.Cipher);
+ ctor @Deprecated public FingerprintManagerCompat.CryptoObject(javax.crypto.Mac);
+ method @Deprecated public javax.crypto.Cipher? getCipher();
+ method @Deprecated public javax.crypto.Mac? getMac();
+ method @Deprecated public java.security.Signature? getSignature();
+ }
+
+}
+
+package androidx.core.location {
+
+ public abstract class GnssStatusCompat {
+ method @FloatRange(from=0, to=360) public abstract float getAzimuthDegrees(@IntRange(from=0) int);
+ method @FloatRange(from=0, to=63) public abstract float getBasebandCn0DbHz(@IntRange(from=0) int);
+ method @FloatRange(from=0) public abstract float getCarrierFrequencyHz(@IntRange(from=0) int);
+ method @FloatRange(from=0, to=63) public abstract float getCn0DbHz(@IntRange(from=0) int);
+ method public abstract int getConstellationType(@IntRange(from=0) int);
+ method @FloatRange(from=0xffffffa6, to=90) public abstract float getElevationDegrees(@IntRange(from=0) int);
+ method @IntRange(from=0) public abstract int getSatelliteCount();
+ method @IntRange(from=1, to=200) public abstract int getSvid(@IntRange(from=0) int);
+ method public abstract boolean hasAlmanacData(@IntRange(from=0) int);
+ method public abstract boolean hasBasebandCn0DbHz(@IntRange(from=0) int);
+ method public abstract boolean hasCarrierFrequencyHz(@IntRange(from=0) int);
+ method public abstract boolean hasEphemerisData(@IntRange(from=0) int);
+ method public abstract boolean usedInFix(@IntRange(from=0) int);
+ method @RequiresApi(android.os.Build.VERSION_CODES.N) public static androidx.core.location.GnssStatusCompat wrap(android.location.GnssStatus);
+ method public static androidx.core.location.GnssStatusCompat wrap(android.location.GpsStatus);
+ field public static final int CONSTELLATION_BEIDOU = 5; // 0x5
+ field public static final int CONSTELLATION_GALILEO = 6; // 0x6
+ field public static final int CONSTELLATION_GLONASS = 3; // 0x3
+ field public static final int CONSTELLATION_GPS = 1; // 0x1
+ field public static final int CONSTELLATION_IRNSS = 7; // 0x7
+ field public static final int CONSTELLATION_QZSS = 4; // 0x4
+ field public static final int CONSTELLATION_SBAS = 2; // 0x2
+ field public static final int CONSTELLATION_UNKNOWN = 0; // 0x0
+ }
+
+ public abstract static class GnssStatusCompat.Callback {
+ ctor public GnssStatusCompat.Callback();
+ method public void onFirstFix(@IntRange(from=0) int);
+ method public void onSatelliteStatusChanged(androidx.core.location.GnssStatusCompat);
+ method public void onStarted();
+ method public void onStopped();
+ }
+
+ public final class LocationManagerCompat {
+ method public static boolean isLocationEnabled(android.location.LocationManager);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback, android.os.Handler);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, java.util.concurrent.Executor, androidx.core.location.GnssStatusCompat.Callback);
+ method public static void unregisterGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback);
+ }
+
+}
+
+package androidx.core.math {
+
+ public class MathUtils {
+ method public static float clamp(float, float, float);
+ method public static double clamp(double, double, double);
+ method public static int clamp(int, int, int);
+ method public static long clamp(long, long, long);
+ }
+
+}
+
+package androidx.core.net {
+
+ public final class ConnectivityManagerCompat {
+ method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public static android.net.NetworkInfo? getNetworkInfoFromBroadcast(android.net.ConnectivityManager, android.content.Intent);
+ method public static int getRestrictBackgroundStatus(android.net.ConnectivityManager);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public static boolean isActiveNetworkMetered(android.net.ConnectivityManager);
+ field public static final int RESTRICT_BACKGROUND_STATUS_DISABLED = 1; // 0x1
+ field public static final int RESTRICT_BACKGROUND_STATUS_ENABLED = 3; // 0x3
+ field public static final int RESTRICT_BACKGROUND_STATUS_WHITELISTED = 2; // 0x2
+ }
+
+ public final class MailTo {
+ method public String? getBcc();
+ method public String? getBody();
+ method public String? getCc();
+ method public java.util.Map<java.lang.String!,java.lang.String!>? getHeaders();
+ method public String? getSubject();
+ method public String? getTo();
+ method public static boolean isMailTo(String?);
+ method public static boolean isMailTo(android.net.Uri?);
+ method public static androidx.core.net.MailTo parse(String) throws androidx.core.net.ParseException;
+ method public static androidx.core.net.MailTo parse(android.net.Uri) throws androidx.core.net.ParseException;
+ field public static final String MAILTO_SCHEME = "mailto:";
+ }
+
+ public class ParseException extends java.lang.RuntimeException {
+ field public final String response;
+ }
+
+ public final class TrafficStatsCompat {
+ method @Deprecated public static void clearThreadStatsTag();
+ method @Deprecated public static int getThreadStatsTag();
+ method @Deprecated public static void incrementOperationCount(int);
+ method @Deprecated public static void incrementOperationCount(int, int);
+ method @Deprecated public static void setThreadStatsTag(int);
+ method public static void tagDatagramSocket(java.net.DatagramSocket) throws java.net.SocketException;
+ method @Deprecated public static void tagSocket(java.net.Socket!) throws java.net.SocketException;
+ method public static void untagDatagramSocket(java.net.DatagramSocket) throws java.net.SocketException;
+ method @Deprecated public static void untagSocket(java.net.Socket!) throws java.net.SocketException;
+ }
+
+ public final class UriCompat {
+ method public static String toSafeString(android.net.Uri);
+ }
+
+}
+
+package androidx.core.os {
+
+ public class BuildCompat {
+ method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.N) public static boolean isAtLeastN();
+ method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.N_MR1) public static boolean isAtLeastNMR1();
+ method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.O) public static boolean isAtLeastO();
+ method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.O_MR1) public static boolean isAtLeastOMR1();
+ method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.P) public static boolean isAtLeastP();
+ method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.Q) public static boolean isAtLeastQ();
+ method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.R) public static boolean isAtLeastR();
+ method @ChecksSdkIntAtLeast(codename="S") public static boolean isAtLeastS();
+ }
+
+ public final class CancellationSignal {
+ ctor public CancellationSignal();
+ method public void cancel();
+ method public Object? getCancellationSignalObject();
+ method public boolean isCanceled();
+ method public void setOnCancelListener(androidx.core.os.CancellationSignal.OnCancelListener?);
+ method public void throwIfCanceled();
+ }
+
+ public static interface CancellationSignal.OnCancelListener {
+ method public void onCancel();
+ }
+
+ public final class ConfigurationCompat {
+ method public static androidx.core.os.LocaleListCompat getLocales(android.content.res.Configuration);
+ }
+
+ public final class EnvironmentCompat {
+ method public static String getStorageState(java.io.File);
+ field public static final String MEDIA_UNKNOWN = "unknown";
+ }
+
+ public final class HandlerCompat {
+ method public static android.os.Handler createAsync(android.os.Looper);
+ method public static android.os.Handler createAsync(android.os.Looper, android.os.Handler.Callback);
+ method public static boolean postDelayed(android.os.Handler, Runnable, Object?, long);
+ }
+
+ public class HandlerExecutor implements java.util.concurrent.Executor {
+ ctor public HandlerExecutor(android.os.Handler);
+ method public void execute(Runnable);
+ }
+
+ public final class LocaleListCompat {
+ method public static androidx.core.os.LocaleListCompat create(java.util.Locale!...);
+ method public static androidx.core.os.LocaleListCompat forLanguageTags(String?);
+ method public java.util.Locale! get(int);
+ method @Size(min=1) public static androidx.core.os.LocaleListCompat getAdjustedDefault();
+ method @Size(min=1) public static androidx.core.os.LocaleListCompat getDefault();
+ method public static androidx.core.os.LocaleListCompat getEmptyLocaleList();
+ method public java.util.Locale? getFirstMatch(String![]);
+ method @IntRange(from=0xffffffff) public int indexOf(java.util.Locale!);
+ method public boolean isEmpty();
+ method @IntRange(from=0) public int size();
+ method public String toLanguageTags();
+ method public Object? unwrap();
+ method @Deprecated @RequiresApi(24) public static androidx.core.os.LocaleListCompat! wrap(Object!);
+ method @RequiresApi(24) public static androidx.core.os.LocaleListCompat wrap(android.os.LocaleList);
+ }
+
+ public final class MessageCompat {
+ method public static boolean isAsynchronous(android.os.Message);
+ method public static void setAsynchronous(android.os.Message, boolean);
+ }
+
+ public class OperationCanceledException extends java.lang.RuntimeException {
+ ctor public OperationCanceledException();
+ ctor public OperationCanceledException(String?);
+ }
+
+ public final class ParcelCompat {
+ method public static boolean readBoolean(android.os.Parcel);
+ method public static void writeBoolean(android.os.Parcel, boolean);
+ }
+
+ @Deprecated public final class ParcelableCompat {
+ method @Deprecated public static <T> android.os.Parcelable.Creator<T!>! newCreator(androidx.core.os.ParcelableCompatCreatorCallbacks<T!>!);
+ }
+
+ @Deprecated public interface ParcelableCompatCreatorCallbacks<T> {
+ method @Deprecated public T! createFromParcel(android.os.Parcel!, ClassLoader!);
+ method @Deprecated public T![]! newArray(int);
+ }
+
+ public final class ProcessCompat {
+ method public static boolean isApplicationUid(int);
+ }
+
+ @Deprecated public final class TraceCompat {
+ method @Deprecated public static void beginAsyncSection(String, int);
+ method @Deprecated public static void beginSection(String);
+ method @Deprecated public static void endAsyncSection(String, int);
+ method @Deprecated public static void endSection();
+ method @Deprecated public static boolean isEnabled();
+ method @Deprecated public static void setCounter(String, int);
+ }
+
+ public class UserManagerCompat {
+ method public static boolean isUserUnlocked(android.content.Context);
+ }
+
+}
+
+package androidx.core.provider {
+
+ public final class FontRequest {
+ ctor public FontRequest(String, String, String, java.util.List<java.util.List<byte[]!>!>);
+ ctor public FontRequest(String, String, String, @ArrayRes int);
+ method public java.util.List<java.util.List<byte[]!>!>? getCertificates();
+ method @ArrayRes public int getCertificatesArrayResId();
+ method public String getProviderAuthority();
+ method public String getProviderPackage();
+ method public String getQuery();
+ }
+
+ public class FontsContractCompat {
+ method public static android.graphics.Typeface? buildTypeface(android.content.Context, android.os.CancellationSignal?, androidx.core.provider.FontsContractCompat.FontInfo![]);
+ method public static androidx.core.provider.FontsContractCompat.FontFamilyResult fetchFonts(android.content.Context, android.os.CancellationSignal?, androidx.core.provider.FontRequest) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public static void requestFont(android.content.Context, androidx.core.provider.FontRequest, androidx.core.provider.FontsContractCompat.FontRequestCallback, android.os.Handler);
+ }
+
+ public static final class FontsContractCompat.Columns implements android.provider.BaseColumns {
+ ctor public FontsContractCompat.Columns();
+ field public static final String FILE_ID = "file_id";
+ field public static final String ITALIC = "font_italic";
+ field public static final String RESULT_CODE = "result_code";
+ field public static final int RESULT_CODE_FONT_NOT_FOUND = 1; // 0x1
+ field public static final int RESULT_CODE_FONT_UNAVAILABLE = 2; // 0x2
+ field public static final int RESULT_CODE_MALFORMED_QUERY = 3; // 0x3
+ field public static final int RESULT_CODE_OK = 0; // 0x0
+ field public static final String TTC_INDEX = "font_ttc_index";
+ field public static final String VARIATION_SETTINGS = "font_variation_settings";
+ field public static final String WEIGHT = "font_weight";
+ }
+
+ public static class FontsContractCompat.FontFamilyResult {
+ method public androidx.core.provider.FontsContractCompat.FontInfo![]! getFonts();
+ method public int getStatusCode();
+ field public static final int STATUS_OK = 0; // 0x0
+ field public static final int STATUS_UNEXPECTED_DATA_PROVIDED = 2; // 0x2
+ field public static final int STATUS_WRONG_CERTIFICATES = 1; // 0x1
+ }
+
+ public static class FontsContractCompat.FontInfo {
+ method public int getResultCode();
+ method @IntRange(from=0) public int getTtcIndex();
+ method public android.net.Uri getUri();
+ method @IntRange(from=1, to=1000) public int getWeight();
+ method public boolean isItalic();
+ }
+
+ public static class FontsContractCompat.FontRequestCallback {
+ ctor public FontsContractCompat.FontRequestCallback();
+ method public void onTypefaceRequestFailed(int);
+ method public void onTypefaceRetrieved(android.graphics.Typeface!);
+ field public static final int FAIL_REASON_FONT_LOAD_ERROR = -3; // 0xfffffffd
+ field public static final int FAIL_REASON_FONT_NOT_FOUND = 1; // 0x1
+ field public static final int FAIL_REASON_FONT_UNAVAILABLE = 2; // 0x2
+ field public static final int FAIL_REASON_MALFORMED_QUERY = 3; // 0x3
+ field public static final int FAIL_REASON_PROVIDER_NOT_FOUND = -1; // 0xffffffff
+ field public static final int FAIL_REASON_SECURITY_VIOLATION = -4; // 0xfffffffc
+ field public static final int FAIL_REASON_WRONG_CERTIFICATES = -2; // 0xfffffffe
+ }
+
+}
+
+package androidx.core.telephony.mbms {
+
+ public final class MbmsHelper {
+ method public static CharSequence? getBestNameForService(android.content.Context, android.telephony.mbms.ServiceInfo);
+ }
+
+}
+
+package androidx.core.text {
+
+ public final class BidiFormatter {
+ method public static androidx.core.text.BidiFormatter! getInstance();
+ method public static androidx.core.text.BidiFormatter! getInstance(boolean);
+ method public static androidx.core.text.BidiFormatter! getInstance(java.util.Locale!);
+ method public boolean getStereoReset();
+ method public boolean isRtl(String!);
+ method public boolean isRtl(CharSequence!);
+ method public boolean isRtlContext();
+ method public String! unicodeWrap(String!, androidx.core.text.TextDirectionHeuristicCompat!, boolean);
+ method public CharSequence! unicodeWrap(CharSequence!, androidx.core.text.TextDirectionHeuristicCompat!, boolean);
+ method public String! unicodeWrap(String!, androidx.core.text.TextDirectionHeuristicCompat!);
+ method public CharSequence! unicodeWrap(CharSequence!, androidx.core.text.TextDirectionHeuristicCompat!);
+ method public String! unicodeWrap(String!, boolean);
+ method public CharSequence! unicodeWrap(CharSequence!, boolean);
+ method public String! unicodeWrap(String!);
+ method public CharSequence! unicodeWrap(CharSequence!);
+ }
+
+ public static final class BidiFormatter.Builder {
+ ctor public BidiFormatter.Builder();
+ ctor public BidiFormatter.Builder(boolean);
+ ctor public BidiFormatter.Builder(java.util.Locale!);
+ method public androidx.core.text.BidiFormatter! build();
+ method public androidx.core.text.BidiFormatter.Builder! setTextDirectionHeuristic(androidx.core.text.TextDirectionHeuristicCompat!);
+ method public androidx.core.text.BidiFormatter.Builder! stereoReset(boolean);
+ }
+
+ public final class HtmlCompat {
+ method public static android.text.Spanned fromHtml(String, int);
+ method public static android.text.Spanned fromHtml(String, int, android.text.Html.ImageGetter?, android.text.Html.TagHandler?);
+ method public static String toHtml(android.text.Spanned, int);
+ field public static final int FROM_HTML_MODE_COMPACT = 63; // 0x3f
+ field public static final int FROM_HTML_MODE_LEGACY = 0; // 0x0
+ field public static final int FROM_HTML_OPTION_USE_CSS_COLORS = 256; // 0x100
+ field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_BLOCKQUOTE = 32; // 0x20
+ field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_DIV = 16; // 0x10
+ field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_HEADING = 2; // 0x2
+ field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_LIST = 8; // 0x8
+ field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_LIST_ITEM = 4; // 0x4
+ field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_PARAGRAPH = 1; // 0x1
+ field public static final int TO_HTML_PARAGRAPH_LINES_CONSECUTIVE = 0; // 0x0
+ field public static final int TO_HTML_PARAGRAPH_LINES_INDIVIDUAL = 1; // 0x1
+ }
+
+ public final class ICUCompat {
+ method public static String? maximizeAndGetScript(java.util.Locale!);
+ }
+
+ public class PrecomputedTextCompat implements android.text.Spannable {
+ method public char charAt(int);
+ method public static androidx.core.text.PrecomputedTextCompat! create(CharSequence, androidx.core.text.PrecomputedTextCompat.Params);
+ method @IntRange(from=0) public int getParagraphCount();
+ method @IntRange(from=0) public int getParagraphEnd(@IntRange(from=0) int);
+ method @IntRange(from=0) public int getParagraphStart(@IntRange(from=0) int);
+ method public androidx.core.text.PrecomputedTextCompat.Params getParams();
+ method public int getSpanEnd(Object!);
+ method public int getSpanFlags(Object!);
+ method public int getSpanStart(Object!);
+ method public <T> T![]! getSpans(int, int, Class<T!>!);
+ method @UiThread public static java.util.concurrent.Future<androidx.core.text.PrecomputedTextCompat!>! getTextFuture(CharSequence, androidx.core.text.PrecomputedTextCompat.Params, java.util.concurrent.Executor?);
+ method public int length();
+ method public int nextSpanTransition(int, int, Class!);
+ method public void removeSpan(Object!);
+ method public void setSpan(Object!, int, int, int);
+ method public CharSequence! subSequence(int, int);
+ }
+
+ public static final class PrecomputedTextCompat.Params {
+ ctor @RequiresApi(28) public PrecomputedTextCompat.Params(android.text.PrecomputedText.Params);
+ method @RequiresApi(23) public int getBreakStrategy();
+ method @RequiresApi(23) public int getHyphenationFrequency();
+ method @RequiresApi(18) public android.text.TextDirectionHeuristic? getTextDirection();
+ method public android.text.TextPaint getTextPaint();
+ }
+
+ public static class PrecomputedTextCompat.Params.Builder {
+ ctor public PrecomputedTextCompat.Params.Builder(android.text.TextPaint);
+ method public androidx.core.text.PrecomputedTextCompat.Params build();
+ method @RequiresApi(23) public androidx.core.text.PrecomputedTextCompat.Params.Builder! setBreakStrategy(int);
+ method @RequiresApi(23) public androidx.core.text.PrecomputedTextCompat.Params.Builder! setHyphenationFrequency(int);
+ method @RequiresApi(18) public androidx.core.text.PrecomputedTextCompat.Params.Builder! setTextDirection(android.text.TextDirectionHeuristic);
+ }
+
+ public interface TextDirectionHeuristicCompat {
+ method public boolean isRtl(char[]!, int, int);
+ method public boolean isRtl(CharSequence!, int, int);
+ }
+
+ public final class TextDirectionHeuristicsCompat {
+ field public static final androidx.core.text.TextDirectionHeuristicCompat! ANYRTL_LTR;
+ field public static final androidx.core.text.TextDirectionHeuristicCompat! FIRSTSTRONG_LTR;
+ field public static final androidx.core.text.TextDirectionHeuristicCompat! FIRSTSTRONG_RTL;
+ field public static final androidx.core.text.TextDirectionHeuristicCompat! LOCALE;
+ field public static final androidx.core.text.TextDirectionHeuristicCompat! LTR;
+ field public static final androidx.core.text.TextDirectionHeuristicCompat! RTL;
+ }
+
+ public final class TextUtilsCompat {
+ method public static int getLayoutDirectionFromLocale(java.util.Locale?);
+ method public static String htmlEncode(String);
+ }
+
+}
+
+package androidx.core.text.util {
+
+ public final class LinkifyCompat {
+ method public static boolean addLinks(android.text.Spannable, int);
+ method public static boolean addLinks(android.widget.TextView, int);
+ method public static void addLinks(android.widget.TextView, java.util.regex.Pattern, String?);
+ method public static void addLinks(android.widget.TextView, java.util.regex.Pattern, String?, android.text.util.Linkify.MatchFilter?, android.text.util.Linkify.TransformFilter?);
+ method public static void addLinks(android.widget.TextView, java.util.regex.Pattern, String?, String![]?, android.text.util.Linkify.MatchFilter?, android.text.util.Linkify.TransformFilter?);
+ method public static boolean addLinks(android.text.Spannable, java.util.regex.Pattern, String?);
+ method public static boolean addLinks(android.text.Spannable, java.util.regex.Pattern, String?, android.text.util.Linkify.MatchFilter?, android.text.util.Linkify.TransformFilter?);
+ method public static boolean addLinks(android.text.Spannable, java.util.regex.Pattern, String?, String![]?, android.text.util.Linkify.MatchFilter?, android.text.util.Linkify.TransformFilter?);
+ }
+
+}
+
+package androidx.core.util {
+
+ public class AtomicFile {
+ ctor public AtomicFile(java.io.File);
+ method public void delete();
+ method public void failWrite(java.io.FileOutputStream?);
+ method public void finishWrite(java.io.FileOutputStream?);
+ method public java.io.File getBaseFile();
+ method public java.io.FileInputStream openRead() throws java.io.FileNotFoundException;
+ method public byte[] readFully() throws java.io.IOException;
+ method public java.io.FileOutputStream startWrite() throws java.io.IOException;
+ }
+
+ public interface Consumer<T> {
+ method public void accept(T!);
+ }
+
+ public class ObjectsCompat {
+ method public static boolean equals(Object?, Object?);
+ method public static int hash(java.lang.Object!...);
+ method public static int hashCode(Object?);
+ method public static String? toString(Object?, String?);
+ }
+
+ public class Pair<F, S> {
+ ctor public Pair(F!, S!);
+ method public static <A, B> androidx.core.util.Pair<A!,B!> create(A!, B!);
+ field public final F! first;
+ field public final S! second;
+ }
+
+ public final class PatternsCompat {
+ field public static final java.util.regex.Pattern DOMAIN_NAME;
+ field public static final java.util.regex.Pattern EMAIL_ADDRESS;
+ field public static final java.util.regex.Pattern IP_ADDRESS;
+ field public static final java.util.regex.Pattern WEB_URL;
+ }
+
+ public final class Pools {
+ }
+
+ public static interface Pools.Pool<T> {
+ method public T? acquire();
+ method public boolean release(T);
+ }
+
+ public static class Pools.SimplePool<T> implements androidx.core.util.Pools.Pool<T> {
+ ctor public Pools.SimplePool(int);
+ method public T! acquire();
+ method public boolean release(T);
+ }
+
+ public static class Pools.SynchronizedPool<T> extends androidx.core.util.Pools.SimplePool<T> {
+ ctor public Pools.SynchronizedPool(int);
+ }
+
+ public interface Predicate<T> {
+ method public boolean test(T!);
+ }
+
+ public interface Supplier<T> {
+ method public T! get();
+ }
+
+}
+
+package androidx.core.view {
+
+ public class AccessibilityDelegateCompat {
+ ctor public AccessibilityDelegateCompat();
+ method public boolean dispatchPopulateAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
+ method public androidx.core.view.accessibility.AccessibilityNodeProviderCompat! getAccessibilityNodeProvider(android.view.View!);
+ method public void onInitializeAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
+ method public void onInitializeAccessibilityNodeInfo(android.view.View!, androidx.core.view.accessibility.AccessibilityNodeInfoCompat!);
+ method public void onPopulateAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
+ method public boolean onRequestSendAccessibilityEvent(android.view.ViewGroup!, android.view.View!, android.view.accessibility.AccessibilityEvent!);
+ method public boolean performAccessibilityAction(android.view.View!, int, android.os.Bundle!);
+ method public void sendAccessibilityEvent(android.view.View!, int);
+ method public void sendAccessibilityEventUnchecked(android.view.View!, android.view.accessibility.AccessibilityEvent!);
+ }
+
+ public abstract class ActionProvider {
+ ctor public ActionProvider(android.content.Context!);
+ method public android.content.Context! getContext();
+ method public boolean hasSubMenu();
+ method public boolean isVisible();
+ method public abstract android.view.View! onCreateActionView();
+ method public android.view.View! onCreateActionView(android.view.MenuItem!);
+ method public boolean onPerformDefaultAction();
+ method public void onPrepareSubMenu(android.view.SubMenu!);
+ method public boolean overridesItemVisibility();
+ method public void refreshVisibility();
+ method public void setVisibilityListener(androidx.core.view.ActionProvider.VisibilityListener!);
+ }
+
+ public static interface ActionProvider.VisibilityListener {
+ method public void onActionProviderVisibilityChanged(boolean);
+ }
+
+ public final class ContentInfoCompat {
+ method public android.content.ClipData getClip();
+ method public android.os.Bundle? getExtras();
+ method public int getFlags();
+ method public android.net.Uri? getLinkUri();
+ method public int getSource();
+ method public android.util.Pair<androidx.core.view.ContentInfoCompat!,androidx.core.view.ContentInfoCompat!> partition(androidx.core.util.Predicate<android.content.ClipData.Item!>);
+ field public static final int FLAG_CONVERT_TO_PLAIN_TEXT = 1; // 0x1
+ field public static final int SOURCE_APP = 0; // 0x0
+ field public static final int SOURCE_CLIPBOARD = 1; // 0x1
+ field public static final int SOURCE_DRAG_AND_DROP = 3; // 0x3
+ field public static final int SOURCE_INPUT_METHOD = 2; // 0x2
+ }
+
+ public static final class ContentInfoCompat.Builder {
+ ctor public ContentInfoCompat.Builder(androidx.core.view.ContentInfoCompat);
+ ctor public ContentInfoCompat.Builder(android.content.ClipData, int);
+ method public androidx.core.view.ContentInfoCompat build();
+ method public androidx.core.view.ContentInfoCompat.Builder setClip(android.content.ClipData);
+ method public androidx.core.view.ContentInfoCompat.Builder setExtras(android.os.Bundle?);
+ method public androidx.core.view.ContentInfoCompat.Builder setFlags(int);
+ method public androidx.core.view.ContentInfoCompat.Builder setLinkUri(android.net.Uri?);
+ method public androidx.core.view.ContentInfoCompat.Builder setSource(int);
+ }
+
+ public final class DisplayCompat {
+ method public static androidx.core.view.DisplayCompat.ModeCompat![] getSupportedModes(android.content.Context, android.view.Display);
+ }
+
+ public static final class DisplayCompat.ModeCompat {
+ method public int getPhysicalHeight();
+ method public int getPhysicalWidth();
+ method public boolean isNative();
+ method @RequiresApi(android.os.Build.VERSION_CODES.M) public android.view.Display.Mode? toMode();
+ }
+
+ public final class DisplayCutoutCompat {
+ ctor public DisplayCutoutCompat(android.graphics.Rect!, java.util.List<android.graphics.Rect!>!);
+ ctor public DisplayCutoutCompat(androidx.core.graphics.Insets, android.graphics.Rect?, android.graphics.Rect?, android.graphics.Rect?, android.graphics.Rect?, androidx.core.graphics.Insets);
+ method public java.util.List<android.graphics.Rect!> getBoundingRects();
+ method public int getSafeInsetBottom();
+ method public int getSafeInsetLeft();
+ method public int getSafeInsetRight();
+ method public int getSafeInsetTop();
+ method public androidx.core.graphics.Insets getWaterfallInsets();
+ }
+
+ public final class DragAndDropPermissionsCompat {
+ method public void release();
+ }
+
+ public class DragStartHelper {
+ ctor public DragStartHelper(android.view.View!, androidx.core.view.DragStartHelper.OnDragStartListener!);
+ method public void attach();
+ method public void detach();
+ method public void getTouchPosition(android.graphics.Point!);
+ method public boolean onLongClick(android.view.View!);
+ method public boolean onTouch(android.view.View!, android.view.MotionEvent!);
+ }
+
+ public static interface DragStartHelper.OnDragStartListener {
+ method public boolean onDragStart(android.view.View!, androidx.core.view.DragStartHelper!);
+ }
+
+ public final class GestureDetectorCompat {
+ ctor public GestureDetectorCompat(android.content.Context!, android.view.GestureDetector.OnGestureListener!);
+ ctor public GestureDetectorCompat(android.content.Context!, android.view.GestureDetector.OnGestureListener!, android.os.Handler!);
+ method public boolean isLongpressEnabled();
+ method public boolean onTouchEvent(android.view.MotionEvent!);
+ method public void setIsLongpressEnabled(boolean);
+ method public void setOnDoubleTapListener(android.view.GestureDetector.OnDoubleTapListener!);
+ }
+
+ public final class GravityCompat {
+ method public static void apply(int, int, int, android.graphics.Rect!, android.graphics.Rect!, int);
+ method public static void apply(int, int, int, android.graphics.Rect!, int, int, android.graphics.Rect!, int);
+ method public static void applyDisplay(int, android.graphics.Rect!, android.graphics.Rect!, int);
+ method public static int getAbsoluteGravity(int, int);
+ field public static final int END = 8388613; // 0x800005
+ field public static final int RELATIVE_HORIZONTAL_GRAVITY_MASK = 8388615; // 0x800007
+ field public static final int RELATIVE_LAYOUT_DIRECTION = 8388608; // 0x800000
+ field public static final int START = 8388611; // 0x800003
+ }
+
+ public final class InputDeviceCompat {
+ field public static final int SOURCE_ANY = -256; // 0xffffff00
+ field public static final int SOURCE_CLASS_BUTTON = 1; // 0x1
+ field public static final int SOURCE_CLASS_JOYSTICK = 16; // 0x10
+ field public static final int SOURCE_CLASS_MASK = 255; // 0xff
+ field public static final int SOURCE_CLASS_NONE = 0; // 0x0
+ field public static final int SOURCE_CLASS_POINTER = 2; // 0x2
+ field public static final int SOURCE_CLASS_POSITION = 8; // 0x8
+ field public static final int SOURCE_CLASS_TRACKBALL = 4; // 0x4
+ field public static final int SOURCE_DPAD = 513; // 0x201
+ field public static final int SOURCE_GAMEPAD = 1025; // 0x401
+ field public static final int SOURCE_HDMI = 33554433; // 0x2000001
+ field public static final int SOURCE_JOYSTICK = 16777232; // 0x1000010
+ field public static final int SOURCE_KEYBOARD = 257; // 0x101
+ field public static final int SOURCE_MOUSE = 8194; // 0x2002
+ field public static final int SOURCE_ROTARY_ENCODER = 4194304; // 0x400000
+ field public static final int SOURCE_STYLUS = 16386; // 0x4002
+ field public static final int SOURCE_TOUCHPAD = 1048584; // 0x100008
+ field public static final int SOURCE_TOUCHSCREEN = 4098; // 0x1002
+ field public static final int SOURCE_TOUCH_NAVIGATION = 2097152; // 0x200000
+ field public static final int SOURCE_TRACKBALL = 65540; // 0x10004
+ field public static final int SOURCE_UNKNOWN = 0; // 0x0
+ }
+
+ public final class LayoutInflaterCompat {
+ method @Deprecated public static androidx.core.view.LayoutInflaterFactory! getFactory(android.view.LayoutInflater!);
+ method @Deprecated public static void setFactory(android.view.LayoutInflater, androidx.core.view.LayoutInflaterFactory);
+ method public static void setFactory2(android.view.LayoutInflater, android.view.LayoutInflater.Factory2);
+ }
+
+ @Deprecated public interface LayoutInflaterFactory {
+ method @Deprecated public android.view.View! onCreateView(android.view.View!, String!, android.content.Context!, android.util.AttributeSet!);
+ }
+
+ public final class MarginLayoutParamsCompat {
+ method public static int getLayoutDirection(android.view.ViewGroup.MarginLayoutParams!);
+ method public static int getMarginEnd(android.view.ViewGroup.MarginLayoutParams!);
+ method public static int getMarginStart(android.view.ViewGroup.MarginLayoutParams!);
+ method public static boolean isMarginRelative(android.view.ViewGroup.MarginLayoutParams!);
+ method public static void resolveLayoutDirection(android.view.ViewGroup.MarginLayoutParams!, int);
+ method public static void setLayoutDirection(android.view.ViewGroup.MarginLayoutParams!, int);
+ method public static void setMarginEnd(android.view.ViewGroup.MarginLayoutParams!, int);
+ method public static void setMarginStart(android.view.ViewGroup.MarginLayoutParams!, int);
+ }
+
+ public final class MenuCompat {
+ method public static void setGroupDividerEnabled(android.view.Menu!, boolean);
+ method @Deprecated public static void setShowAsAction(android.view.MenuItem!, int);
+ }
+
+ public final class MenuItemCompat {
+ method @Deprecated public static boolean collapseActionView(android.view.MenuItem!);
+ method @Deprecated public static boolean expandActionView(android.view.MenuItem!);
+ method public static androidx.core.view.ActionProvider! getActionProvider(android.view.MenuItem!);
+ method @Deprecated public static android.view.View! getActionView(android.view.MenuItem!);
+ method public static int getAlphabeticModifiers(android.view.MenuItem!);
+ method public static CharSequence! getContentDescription(android.view.MenuItem!);
+ method public static android.content.res.ColorStateList! getIconTintList(android.view.MenuItem!);
+ method public static android.graphics.PorterDuff.Mode! getIconTintMode(android.view.MenuItem!);
+ method public static int getNumericModifiers(android.view.MenuItem!);
+ method public static CharSequence! getTooltipText(android.view.MenuItem!);
+ method @Deprecated public static boolean isActionViewExpanded(android.view.MenuItem!);
+ method public static android.view.MenuItem! setActionProvider(android.view.MenuItem!, androidx.core.view.ActionProvider!);
+ method @Deprecated public static android.view.MenuItem! setActionView(android.view.MenuItem!, android.view.View!);
+ method @Deprecated public static android.view.MenuItem! setActionView(android.view.MenuItem!, int);
+ method public static void setAlphabeticShortcut(android.view.MenuItem!, char, int);
+ method public static void setContentDescription(android.view.MenuItem!, CharSequence!);
+ method public static void setIconTintList(android.view.MenuItem!, android.content.res.ColorStateList!);
+ method public static void setIconTintMode(android.view.MenuItem!, android.graphics.PorterDuff.Mode!);
+ method public static void setNumericShortcut(android.view.MenuItem!, char, int);
+ method @Deprecated public static android.view.MenuItem! setOnActionExpandListener(android.view.MenuItem!, androidx.core.view.MenuItemCompat.OnActionExpandListener!);
+ method public static void setShortcut(android.view.MenuItem!, char, char, int, int);
+ method @Deprecated public static void setShowAsAction(android.view.MenuItem!, int);
+ method public static void setTooltipText(android.view.MenuItem!, CharSequence!);
+ field @Deprecated public static final int SHOW_AS_ACTION_ALWAYS = 2; // 0x2
+ field @Deprecated public static final int SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW = 8; // 0x8
+ field @Deprecated public static final int SHOW_AS_ACTION_IF_ROOM = 1; // 0x1
+ field @Deprecated public static final int SHOW_AS_ACTION_NEVER = 0; // 0x0
+ field @Deprecated public static final int SHOW_AS_ACTION_WITH_TEXT = 4; // 0x4
+ }
+
+ @Deprecated public static interface MenuItemCompat.OnActionExpandListener {
+ method @Deprecated public boolean onMenuItemActionCollapse(android.view.MenuItem!);
+ method @Deprecated public boolean onMenuItemActionExpand(android.view.MenuItem!);
+ }
+
+ public final class MotionEventCompat {
+ method @Deprecated public static int findPointerIndex(android.view.MotionEvent!, int);
+ method @Deprecated public static int getActionIndex(android.view.MotionEvent!);
+ method @Deprecated public static int getActionMasked(android.view.MotionEvent!);
+ method @Deprecated public static float getAxisValue(android.view.MotionEvent!, int);
+ method @Deprecated public static float getAxisValue(android.view.MotionEvent!, int, int);
+ method @Deprecated public static int getButtonState(android.view.MotionEvent!);
+ method @Deprecated public static int getPointerCount(android.view.MotionEvent!);
+ method @Deprecated public static int getPointerId(android.view.MotionEvent!, int);
+ method @Deprecated public static int getSource(android.view.MotionEvent!);
+ method @Deprecated public static float getX(android.view.MotionEvent!, int);
+ method @Deprecated public static float getY(android.view.MotionEvent!, int);
+ method public static boolean isFromSource(android.view.MotionEvent!, int);
+ field @Deprecated public static final int ACTION_HOVER_ENTER = 9; // 0x9
+ field @Deprecated public static final int ACTION_HOVER_EXIT = 10; // 0xa
+ field @Deprecated public static final int ACTION_HOVER_MOVE = 7; // 0x7
+ field @Deprecated public static final int ACTION_MASK = 255; // 0xff
+ field @Deprecated public static final int ACTION_POINTER_DOWN = 5; // 0x5
+ field @Deprecated public static final int ACTION_POINTER_INDEX_MASK = 65280; // 0xff00
+ field @Deprecated public static final int ACTION_POINTER_INDEX_SHIFT = 8; // 0x8
+ field @Deprecated public static final int ACTION_POINTER_UP = 6; // 0x6
+ field @Deprecated public static final int ACTION_SCROLL = 8; // 0x8
+ field @Deprecated public static final int AXIS_BRAKE = 23; // 0x17
+ field @Deprecated public static final int AXIS_DISTANCE = 24; // 0x18
+ field @Deprecated public static final int AXIS_GAS = 22; // 0x16
+ field @Deprecated public static final int AXIS_GENERIC_1 = 32; // 0x20
+ field @Deprecated public static final int AXIS_GENERIC_10 = 41; // 0x29
+ field @Deprecated public static final int AXIS_GENERIC_11 = 42; // 0x2a
+ field @Deprecated public static final int AXIS_GENERIC_12 = 43; // 0x2b
+ field @Deprecated public static final int AXIS_GENERIC_13 = 44; // 0x2c
+ field @Deprecated public static final int AXIS_GENERIC_14 = 45; // 0x2d
+ field @Deprecated public static final int AXIS_GENERIC_15 = 46; // 0x2e
+ field @Deprecated public static final int AXIS_GENERIC_16 = 47; // 0x2f
+ field @Deprecated public static final int AXIS_GENERIC_2 = 33; // 0x21
+ field @Deprecated public static final int AXIS_GENERIC_3 = 34; // 0x22
+ field @Deprecated public static final int AXIS_GENERIC_4 = 35; // 0x23
+ field @Deprecated public static final int AXIS_GENERIC_5 = 36; // 0x24
+ field @Deprecated public static final int AXIS_GENERIC_6 = 37; // 0x25
+ field @Deprecated public static final int AXIS_GENERIC_7 = 38; // 0x26
+ field @Deprecated public static final int AXIS_GENERIC_8 = 39; // 0x27
+ field @Deprecated public static final int AXIS_GENERIC_9 = 40; // 0x28
+ field @Deprecated public static final int AXIS_HAT_X = 15; // 0xf
+ field @Deprecated public static final int AXIS_HAT_Y = 16; // 0x10
+ field @Deprecated public static final int AXIS_HSCROLL = 10; // 0xa
+ field @Deprecated public static final int AXIS_LTRIGGER = 17; // 0x11
+ field @Deprecated public static final int AXIS_ORIENTATION = 8; // 0x8
+ field @Deprecated public static final int AXIS_PRESSURE = 2; // 0x2
+ field public static final int AXIS_RELATIVE_X = 27; // 0x1b
+ field public static final int AXIS_RELATIVE_Y = 28; // 0x1c
+ field @Deprecated public static final int AXIS_RTRIGGER = 18; // 0x12
+ field @Deprecated public static final int AXIS_RUDDER = 20; // 0x14
+ field @Deprecated public static final int AXIS_RX = 12; // 0xc
+ field @Deprecated public static final int AXIS_RY = 13; // 0xd
+ field @Deprecated public static final int AXIS_RZ = 14; // 0xe
+ field public static final int AXIS_SCROLL = 26; // 0x1a
+ field @Deprecated public static final int AXIS_SIZE = 3; // 0x3
+ field @Deprecated public static final int AXIS_THROTTLE = 19; // 0x13
+ field @Deprecated public static final int AXIS_TILT = 25; // 0x19
+ field @Deprecated public static final int AXIS_TOOL_MAJOR = 6; // 0x6
+ field @Deprecated public static final int AXIS_TOOL_MINOR = 7; // 0x7
+ field @Deprecated public static final int AXIS_TOUCH_MAJOR = 4; // 0x4
+ field @Deprecated public static final int AXIS_TOUCH_MINOR = 5; // 0x5
+ field @Deprecated public static final int AXIS_VSCROLL = 9; // 0x9
+ field @Deprecated public static final int AXIS_WHEEL = 21; // 0x15
+ field @Deprecated public static final int AXIS_X = 0; // 0x0
+ field @Deprecated public static final int AXIS_Y = 1; // 0x1
+ field @Deprecated public static final int AXIS_Z = 11; // 0xb
+ field @Deprecated public static final int BUTTON_PRIMARY = 1; // 0x1
+ }
+
+ public interface NestedScrollingChild {
+ method public boolean dispatchNestedFling(float, float, boolean);
+ method public boolean dispatchNestedPreFling(float, float);
+ method public boolean dispatchNestedPreScroll(int, int, int[]?, int[]?);
+ method public boolean dispatchNestedScroll(int, int, int, int, int[]?);
+ method public boolean hasNestedScrollingParent();
+ method public boolean isNestedScrollingEnabled();
+ method public void setNestedScrollingEnabled(boolean);
+ method public boolean startNestedScroll(int);
+ method public void stopNestedScroll();
+ }
+
+ public interface NestedScrollingChild2 extends androidx.core.view.NestedScrollingChild {
+ method public boolean dispatchNestedPreScroll(int, int, int[]?, int[]?, int);
+ method public boolean dispatchNestedScroll(int, int, int, int, int[]?, int);
+ method public boolean hasNestedScrollingParent(int);
+ method public boolean startNestedScroll(int, int);
+ method public void stopNestedScroll(int);
+ }
+
+ public interface NestedScrollingChild3 extends androidx.core.view.NestedScrollingChild2 {
+ method public void dispatchNestedScroll(int, int, int, int, int[]?, int, int[]);
+ }
+
+ public class NestedScrollingChildHelper {
+ ctor public NestedScrollingChildHelper(android.view.View);
+ method public boolean dispatchNestedFling(float, float, boolean);
+ method public boolean dispatchNestedPreFling(float, float);
+ method public boolean dispatchNestedPreScroll(int, int, int[]?, int[]?);
+ method public boolean dispatchNestedPreScroll(int, int, int[]?, int[]?, int);
+ method public boolean dispatchNestedScroll(int, int, int, int, int[]?);
+ method public boolean dispatchNestedScroll(int, int, int, int, int[]?, int);
+ method public void dispatchNestedScroll(int, int, int, int, int[]?, int, int[]?);
+ method public boolean hasNestedScrollingParent();
+ method public boolean hasNestedScrollingParent(int);
+ method public boolean isNestedScrollingEnabled();
+ method public void onDetachedFromWindow();
+ method public void onStopNestedScroll(android.view.View);
+ method public void setNestedScrollingEnabled(boolean);
+ method public boolean startNestedScroll(int);
+ method public boolean startNestedScroll(int, int);
+ method public void stopNestedScroll();
+ method public void stopNestedScroll(int);
+ }
+
+ public interface NestedScrollingParent {
+ method public int getNestedScrollAxes();
+ method public boolean onNestedFling(android.view.View, float, float, boolean);
+ method public boolean onNestedPreFling(android.view.View, float, float);
+ method public void onNestedPreScroll(android.view.View, int, int, int[]);
+ method public void onNestedScroll(android.view.View, int, int, int, int);
+ method public void onNestedScrollAccepted(android.view.View, android.view.View, int);
+ method public boolean onStartNestedScroll(android.view.View, android.view.View, int);
+ method public void onStopNestedScroll(android.view.View);
+ }
+
+ public interface NestedScrollingParent2 extends androidx.core.view.NestedScrollingParent {
+ method public void onNestedPreScroll(android.view.View, int, int, int[], int);
+ method public void onNestedScroll(android.view.View, int, int, int, int, int);
+ method public void onNestedScrollAccepted(android.view.View, android.view.View, int, int);
+ method public boolean onStartNestedScroll(android.view.View, android.view.View, int, int);
+ method public void onStopNestedScroll(android.view.View, int);
+ }
+
+ public interface NestedScrollingParent3 extends androidx.core.view.NestedScrollingParent2 {
+ method public void onNestedScroll(android.view.View, int, int, int, int, int, int[]);
+ }
+
+ public class NestedScrollingParentHelper {
+ ctor public NestedScrollingParentHelper(android.view.ViewGroup);
+ method public int getNestedScrollAxes();
+ method public void onNestedScrollAccepted(android.view.View, android.view.View, int);
+ method public void onNestedScrollAccepted(android.view.View, android.view.View, int, int);
+ method public void onStopNestedScroll(android.view.View);
+ method public void onStopNestedScroll(android.view.View, int);
+ }
+
+ public interface OnApplyWindowInsetsListener {
+ method public androidx.core.view.WindowInsetsCompat! onApplyWindowInsets(android.view.View!, androidx.core.view.WindowInsetsCompat!);
+ }
+
+ public interface OnReceiveContentListener {
+ method public androidx.core.view.ContentInfoCompat? onReceiveContent(android.view.View, androidx.core.view.ContentInfoCompat);
+ }
+
+ public interface OnReceiveContentViewBehavior {
+ method public androidx.core.view.ContentInfoCompat? onReceiveContent(androidx.core.view.ContentInfoCompat);
+ }
+
+ public final class OneShotPreDrawListener implements android.view.View.OnAttachStateChangeListener android.view.ViewTreeObserver.OnPreDrawListener {
+ method public static androidx.core.view.OneShotPreDrawListener add(android.view.View, Runnable);
+ method public boolean onPreDraw();
+ method public void onViewAttachedToWindow(android.view.View!);
+ method public void onViewDetachedFromWindow(android.view.View!);
+ method public void removeListener();
+ }
+
+ public final class PointerIconCompat {
+ method public static androidx.core.view.PointerIconCompat! create(android.graphics.Bitmap!, float, float);
+ method public static androidx.core.view.PointerIconCompat! getSystemIcon(android.content.Context!, int);
+ method public static androidx.core.view.PointerIconCompat! load(android.content.res.Resources!, int);
+ field public static final int TYPE_ALIAS = 1010; // 0x3f2
+ field public static final int TYPE_ALL_SCROLL = 1013; // 0x3f5
+ field public static final int TYPE_ARROW = 1000; // 0x3e8
+ field public static final int TYPE_CELL = 1006; // 0x3ee
+ field public static final int TYPE_CONTEXT_MENU = 1001; // 0x3e9
+ field public static final int TYPE_COPY = 1011; // 0x3f3
+ field public static final int TYPE_CROSSHAIR = 1007; // 0x3ef
+ field public static final int TYPE_DEFAULT = 1000; // 0x3e8
+ field public static final int TYPE_GRAB = 1020; // 0x3fc
+ field public static final int TYPE_GRABBING = 1021; // 0x3fd
+ field public static final int TYPE_HAND = 1002; // 0x3ea
+ field public static final int TYPE_HELP = 1003; // 0x3eb
+ field public static final int TYPE_HORIZONTAL_DOUBLE_ARROW = 1014; // 0x3f6
+ field public static final int TYPE_NO_DROP = 1012; // 0x3f4
+ field public static final int TYPE_NULL = 0; // 0x0
+ field public static final int TYPE_TEXT = 1008; // 0x3f0
+ field public static final int TYPE_TOP_LEFT_DIAGONAL_DOUBLE_ARROW = 1017; // 0x3f9
+ field public static final int TYPE_TOP_RIGHT_DIAGONAL_DOUBLE_ARROW = 1016; // 0x3f8
+ field public static final int TYPE_VERTICAL_DOUBLE_ARROW = 1015; // 0x3f7
+ field public static final int TYPE_VERTICAL_TEXT = 1009; // 0x3f1
+ field public static final int TYPE_WAIT = 1004; // 0x3ec
+ field public static final int TYPE_ZOOM_IN = 1018; // 0x3fa
+ field public static final int TYPE_ZOOM_OUT = 1019; // 0x3fb
+ }
+
+ public final class ScaleGestureDetectorCompat {
+ method @Deprecated public static boolean isQuickScaleEnabled(Object!);
+ method public static boolean isQuickScaleEnabled(android.view.ScaleGestureDetector!);
+ method @Deprecated public static void setQuickScaleEnabled(Object!, boolean);
+ method public static void setQuickScaleEnabled(android.view.ScaleGestureDetector!, boolean);
+ }
+
+ public interface ScrollingView {
+ method public int computeHorizontalScrollExtent();
+ method public int computeHorizontalScrollOffset();
+ method public int computeHorizontalScrollRange();
+ method public int computeVerticalScrollExtent();
+ method public int computeVerticalScrollOffset();
+ method public int computeVerticalScrollRange();
+ }
+
+ public interface TintableBackgroundView {
+ method public android.content.res.ColorStateList? getSupportBackgroundTintList();
+ method public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
+ method public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
+ method public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
+ }
+
+ @Deprecated public final class VelocityTrackerCompat {
+ method @Deprecated public static float getXVelocity(android.view.VelocityTracker!, int);
+ method @Deprecated public static float getYVelocity(android.view.VelocityTracker!, int);
+ }
+
+ public class ViewCompat {
+ ctor @Deprecated protected ViewCompat();
+ method public static int addAccessibilityAction(android.view.View, CharSequence, androidx.core.view.accessibility.AccessibilityViewCommand);
+ method public static void addKeyboardNavigationClusters(android.view.View, java.util.Collection<android.view.View!>, int);
+ method public static void addOnUnhandledKeyEventListener(android.view.View, androidx.core.view.ViewCompat.OnUnhandledKeyEventListenerCompat);
+ method public static androidx.core.view.ViewPropertyAnimatorCompat animate(android.view.View);
+ method @Deprecated public static boolean canScrollHorizontally(android.view.View!, int);
+ method @Deprecated public static boolean canScrollVertically(android.view.View!, int);
+ method public static void cancelDragAndDrop(android.view.View);
+ method @Deprecated public static int combineMeasuredStates(int, int);
+ method public static androidx.core.view.WindowInsetsCompat computeSystemWindowInsets(android.view.View, androidx.core.view.WindowInsetsCompat, android.graphics.Rect);
+ method public static androidx.core.view.WindowInsetsCompat dispatchApplyWindowInsets(android.view.View, androidx.core.view.WindowInsetsCompat);
+ method public static void dispatchFinishTemporaryDetach(android.view.View);
+ method public static boolean dispatchNestedFling(android.view.View, float, float, boolean);
+ method public static boolean dispatchNestedPreFling(android.view.View, float, float);
+ method public static boolean dispatchNestedPreScroll(android.view.View, int, int, int[]?, int[]?);
+ method public static boolean dispatchNestedPreScroll(android.view.View, int, int, int[]?, int[]?, int);
+ method public static boolean dispatchNestedScroll(android.view.View, int, int, int, int, int[]?);
+ method public static void dispatchNestedScroll(android.view.View, int, int, int, int, int[]?, int, int[]);
+ method public static boolean dispatchNestedScroll(android.view.View, int, int, int, int, int[]?, int);
+ method public static void dispatchStartTemporaryDetach(android.view.View);
+ method public static void enableAccessibleClickableSpanSupport(android.view.View!);
+ method public static int generateViewId();
+ method public static androidx.core.view.AccessibilityDelegateCompat? getAccessibilityDelegate(android.view.View);
+ method public static int getAccessibilityLiveRegion(android.view.View);
+ method public static androidx.core.view.accessibility.AccessibilityNodeProviderCompat! getAccessibilityNodeProvider(android.view.View);
+ method @UiThread public static CharSequence! getAccessibilityPaneTitle(android.view.View!);
+ method @Deprecated public static float getAlpha(android.view.View!);
+ method public static android.content.res.ColorStateList! getBackgroundTintList(android.view.View);
+ method public static android.graphics.PorterDuff.Mode! getBackgroundTintMode(android.view.View);
+ method public static android.graphics.Rect? getClipBounds(android.view.View);
+ method public static android.view.Display? getDisplay(android.view.View);
+ method public static float getElevation(android.view.View);
+ method public static boolean getFitsSystemWindows(android.view.View);
+ method public static int getImportantForAccessibility(android.view.View);
+ method public static int getImportantForAutofill(android.view.View);
+ method public static int getLabelFor(android.view.View);
+ method @Deprecated public static int getLayerType(android.view.View!);
+ method public static int getLayoutDirection(android.view.View);
+ method @Deprecated public static android.graphics.Matrix? getMatrix(android.view.View!);
+ method @Deprecated public static int getMeasuredHeightAndState(android.view.View!);
+ method @Deprecated public static int getMeasuredState(android.view.View!);
+ method @Deprecated public static int getMeasuredWidthAndState(android.view.View!);
+ method public static int getMinimumHeight(android.view.View);
+ method public static int getMinimumWidth(android.view.View);
+ method public static int getNextClusterForwardId(android.view.View);
+ method public static String![]? getOnReceiveContentMimeTypes(android.view.View);
+ method @Deprecated public static int getOverScrollMode(android.view.View!);
+ method @Px public static int getPaddingEnd(android.view.View);
+ method @Px public static int getPaddingStart(android.view.View);
+ method public static android.view.ViewParent! getParentForAccessibility(android.view.View);
+ method @Deprecated public static float getPivotX(android.view.View!);
+ method @Deprecated public static float getPivotY(android.view.View!);
+ method public static androidx.core.view.WindowInsetsCompat? getRootWindowInsets(android.view.View);
+ method @Deprecated public static float getRotation(android.view.View!);
+ method @Deprecated public static float getRotationX(android.view.View!);
+ method @Deprecated public static float getRotationY(android.view.View!);
+ method @Deprecated public static float getScaleX(android.view.View!);
+ method @Deprecated public static float getScaleY(android.view.View!);
+ method public static int getScrollIndicators(android.view.View);
+ method @UiThread public static final CharSequence? getStateDescription(android.view.View);
+ method public static java.util.List<android.graphics.Rect!> getSystemGestureExclusionRects(android.view.View);
+ method public static String? getTransitionName(android.view.View);
+ method @Deprecated public static float getTranslationX(android.view.View!);
+ method @Deprecated public static float getTranslationY(android.view.View!);
+ method public static float getTranslationZ(android.view.View);
+ method public static androidx.core.view.WindowInsetsControllerCompat? getWindowInsetsController(android.view.View);
+ method public static int getWindowSystemUiVisibility(android.view.View);
+ method @Deprecated public static float getX(android.view.View!);
+ method @Deprecated public static float getY(android.view.View!);
+ method public static float getZ(android.view.View);
+ method public static boolean hasAccessibilityDelegate(android.view.View);
+ method public static boolean hasExplicitFocusable(android.view.View);
+ method public static boolean hasNestedScrollingParent(android.view.View);
+ method public static boolean hasNestedScrollingParent(android.view.View, int);
+ method public static boolean hasOnClickListeners(android.view.View);
+ method public static boolean hasOverlappingRendering(android.view.View);
+ method public static boolean hasTransientState(android.view.View);
+ method @UiThread public static boolean isAccessibilityHeading(android.view.View!);
+ method public static boolean isAttachedToWindow(android.view.View);
+ method public static boolean isFocusedByDefault(android.view.View);
+ method public static boolean isImportantForAccessibility(android.view.View);
+ method public static boolean isImportantForAutofill(android.view.View);
+ method public static boolean isInLayout(android.view.View);
+ method public static boolean isKeyboardNavigationCluster(android.view.View);
+ method public static boolean isLaidOut(android.view.View);
+ method public static boolean isLayoutDirectionResolved(android.view.View);
+ method public static boolean isNestedScrollingEnabled(android.view.View);
+ method @Deprecated public static boolean isOpaque(android.view.View!);
+ method public static boolean isPaddingRelative(android.view.View);
+ method @UiThread public static boolean isScreenReaderFocusable(android.view.View!);
+ method @Deprecated public static void jumpDrawablesToCurrentState(android.view.View!);
+ method public static android.view.View! keyboardNavigationClusterSearch(android.view.View, android.view.View!, int);
+ method public static void offsetLeftAndRight(android.view.View, int);
+ method public static void offsetTopAndBottom(android.view.View, int);
+ method public static androidx.core.view.WindowInsetsCompat onApplyWindowInsets(android.view.View, androidx.core.view.WindowInsetsCompat);
+ method @Deprecated public static void onInitializeAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
+ method public static void onInitializeAccessibilityNodeInfo(android.view.View, androidx.core.view.accessibility.AccessibilityNodeInfoCompat!);
+ method @Deprecated public static void onPopulateAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
+ method public static boolean performAccessibilityAction(android.view.View, int, android.os.Bundle!);
+ method public static androidx.core.view.ContentInfoCompat? performReceiveContent(android.view.View, androidx.core.view.ContentInfoCompat);
+ method public static void postInvalidateOnAnimation(android.view.View);
+ method public static void postInvalidateOnAnimation(android.view.View, int, int, int, int);
+ method public static void postOnAnimation(android.view.View, Runnable!);
+ method public static void postOnAnimationDelayed(android.view.View, Runnable!, long);
+ method public static void removeAccessibilityAction(android.view.View, int);
+ method public static void removeOnUnhandledKeyEventListener(android.view.View, androidx.core.view.ViewCompat.OnUnhandledKeyEventListenerCompat);
+ method public static void replaceAccessibilityAction(android.view.View, androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat, CharSequence?, androidx.core.view.accessibility.AccessibilityViewCommand?);
+ method public static void requestApplyInsets(android.view.View);
+ method public static <T extends android.view.View> T requireViewById(android.view.View, @IdRes int);
+ method @Deprecated public static int resolveSizeAndState(int, int, int);
+ method public static boolean restoreDefaultFocus(android.view.View);
+ method public static void saveAttributeDataForStyleable(android.view.View, android.content.Context, int[], android.util.AttributeSet?, android.content.res.TypedArray, int, int);
+ method public static void setAccessibilityDelegate(android.view.View, androidx.core.view.AccessibilityDelegateCompat!);
+ method @UiThread public static void setAccessibilityHeading(android.view.View!, boolean);
+ method public static void setAccessibilityLiveRegion(android.view.View, int);
+ method @UiThread public static void setAccessibilityPaneTitle(android.view.View!, CharSequence!);
+ method @Deprecated public static void setActivated(android.view.View!, boolean);
+ method @Deprecated public static void setAlpha(android.view.View!, @FloatRange(from=0.0, to=1.0) float);
+ method public static void setAutofillHints(android.view.View, java.lang.String!...);
+ method public static void setBackground(android.view.View, android.graphics.drawable.Drawable?);
+ method public static void setBackgroundTintList(android.view.View, android.content.res.ColorStateList!);
+ method public static void setBackgroundTintMode(android.view.View, android.graphics.PorterDuff.Mode!);
+ method @Deprecated public static void setChildrenDrawingOrderEnabled(android.view.ViewGroup!, boolean);
+ method public static void setClipBounds(android.view.View, android.graphics.Rect!);
+ method public static void setElevation(android.view.View, float);
+ method @Deprecated public static void setFitsSystemWindows(android.view.View!, boolean);
+ method public static void setFocusedByDefault(android.view.View, boolean);
+ method public static void setHasTransientState(android.view.View, boolean);
+ method public static void setImportantForAccessibility(android.view.View, int);
+ method public static void setImportantForAutofill(android.view.View, int);
+ method public static void setKeyboardNavigationCluster(android.view.View, boolean);
+ method public static void setLabelFor(android.view.View, @IdRes int);
+ method public static void setLayerPaint(android.view.View, android.graphics.Paint!);
+ method @Deprecated public static void setLayerType(android.view.View!, int, android.graphics.Paint!);
+ method public static void setLayoutDirection(android.view.View, int);
+ method public static void setNestedScrollingEnabled(android.view.View, boolean);
+ method public static void setNextClusterForwardId(android.view.View, int);
+ method public static void setOnApplyWindowInsetsListener(android.view.View, androidx.core.view.OnApplyWindowInsetsListener?);
+ method public static void setOnReceiveContentListener(android.view.View, String![]?, androidx.core.view.OnReceiveContentListener?);
+ method @Deprecated public static void setOverScrollMode(android.view.View!, int);
+ method public static void setPaddingRelative(android.view.View, @Px int, @Px int, @Px int, @Px int);
+ method @Deprecated public static void setPivotX(android.view.View!, float);
+ method @Deprecated public static void setPivotY(android.view.View!, float);
+ method public static void setPointerIcon(android.view.View, androidx.core.view.PointerIconCompat!);
+ method @Deprecated public static void setRotation(android.view.View!, float);
+ method @Deprecated public static void setRotationX(android.view.View!, float);
+ method @Deprecated public static void setRotationY(android.view.View!, float);
+ method @Deprecated public static void setSaveFromParentEnabled(android.view.View!, boolean);
+ method @Deprecated public static void setScaleX(android.view.View!, float);
+ method @Deprecated public static void setScaleY(android.view.View!, float);
+ method @UiThread public static void setScreenReaderFocusable(android.view.View!, boolean);
+ method public static void setScrollIndicators(android.view.View, int);
+ method public static void setScrollIndicators(android.view.View, int, int);
+ method @UiThread public static void setStateDescription(android.view.View, CharSequence?);
+ method public static void setSystemGestureExclusionRects(android.view.View, java.util.List<android.graphics.Rect!>);
+ method public static void setTooltipText(android.view.View, CharSequence?);
+ method public static void setTransitionName(android.view.View, String!);
+ method @Deprecated public static void setTranslationX(android.view.View!, float);
+ method @Deprecated public static void setTranslationY(android.view.View!, float);
+ method public static void setTranslationZ(android.view.View, float);
+ method public static void setWindowInsetsAnimationCallback(android.view.View, androidx.core.view.WindowInsetsAnimationCompat.Callback?);
+ method @Deprecated public static void setX(android.view.View!, float);
+ method @Deprecated public static void setY(android.view.View!, float);
+ method public static void setZ(android.view.View, float);
+ method public static boolean startDragAndDrop(android.view.View, android.content.ClipData!, android.view.View.DragShadowBuilder!, Object!, int);
+ method public static boolean startNestedScroll(android.view.View, int);
+ method public static boolean startNestedScroll(android.view.View, int, int);
+ method public static void stopNestedScroll(android.view.View);
+ method public static void stopNestedScroll(android.view.View, int);
+ method public static void updateDragShadow(android.view.View, android.view.View.DragShadowBuilder!);
+ field public static final int ACCESSIBILITY_LIVE_REGION_ASSERTIVE = 2; // 0x2
+ field public static final int ACCESSIBILITY_LIVE_REGION_NONE = 0; // 0x0
+ field public static final int ACCESSIBILITY_LIVE_REGION_POLITE = 1; // 0x1
+ field public static final int IMPORTANT_FOR_ACCESSIBILITY_AUTO = 0; // 0x0
+ field public static final int IMPORTANT_FOR_ACCESSIBILITY_NO = 2; // 0x2
+ field public static final int IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS = 4; // 0x4
+ field public static final int IMPORTANT_FOR_ACCESSIBILITY_YES = 1; // 0x1
+ field @Deprecated public static final int LAYER_TYPE_HARDWARE = 2; // 0x2
+ field @Deprecated public static final int LAYER_TYPE_NONE = 0; // 0x0
+ field @Deprecated public static final int LAYER_TYPE_SOFTWARE = 1; // 0x1
+ field public static final int LAYOUT_DIRECTION_INHERIT = 2; // 0x2
+ field public static final int LAYOUT_DIRECTION_LOCALE = 3; // 0x3
+ field public static final int LAYOUT_DIRECTION_LTR = 0; // 0x0
+ field public static final int LAYOUT_DIRECTION_RTL = 1; // 0x1
+ field @Deprecated public static final int MEASURED_HEIGHT_STATE_SHIFT = 16; // 0x10
+ field @Deprecated public static final int MEASURED_SIZE_MASK = 16777215; // 0xffffff
+ field @Deprecated public static final int MEASURED_STATE_MASK = -16777216; // 0xff000000
+ field @Deprecated public static final int MEASURED_STATE_TOO_SMALL = 16777216; // 0x1000000
+ field @Deprecated public static final int OVER_SCROLL_ALWAYS = 0; // 0x0
+ field @Deprecated public static final int OVER_SCROLL_IF_CONTENT_SCROLLS = 1; // 0x1
+ field @Deprecated public static final int OVER_SCROLL_NEVER = 2; // 0x2
+ field public static final int SCROLL_AXIS_HORIZONTAL = 1; // 0x1
+ field public static final int SCROLL_AXIS_NONE = 0; // 0x0
+ field public static final int SCROLL_AXIS_VERTICAL = 2; // 0x2
+ field public static final int SCROLL_INDICATOR_BOTTOM = 2; // 0x2
+ field public static final int SCROLL_INDICATOR_END = 32; // 0x20
+ field public static final int SCROLL_INDICATOR_LEFT = 4; // 0x4
+ field public static final int SCROLL_INDICATOR_RIGHT = 8; // 0x8
+ field public static final int SCROLL_INDICATOR_START = 16; // 0x10
+ field public static final int SCROLL_INDICATOR_TOP = 1; // 0x1
+ field public static final int TYPE_NON_TOUCH = 1; // 0x1
+ field public static final int TYPE_TOUCH = 0; // 0x0
+ }
+
+ public static interface ViewCompat.OnUnhandledKeyEventListenerCompat {
+ method public boolean onUnhandledKeyEvent(android.view.View!, android.view.KeyEvent!);
+ }
+
+ public final class ViewConfigurationCompat {
+ method public static float getScaledHorizontalScrollFactor(android.view.ViewConfiguration, android.content.Context);
+ method public static int getScaledHoverSlop(android.view.ViewConfiguration!);
+ method @Deprecated public static int getScaledPagingTouchSlop(android.view.ViewConfiguration!);
+ method public static float getScaledVerticalScrollFactor(android.view.ViewConfiguration, android.content.Context);
+ method @Deprecated public static boolean hasPermanentMenuKey(android.view.ViewConfiguration!);
+ method public static boolean shouldShowMenuShortcutsWhenKeyboardPresent(android.view.ViewConfiguration!, android.content.Context);
+ }
+
+ public final class ViewGroupCompat {
+ method public static int getLayoutMode(android.view.ViewGroup);
+ method public static int getNestedScrollAxes(android.view.ViewGroup);
+ method public static boolean isTransitionGroup(android.view.ViewGroup);
+ method @Deprecated public static boolean onRequestSendAccessibilityEvent(android.view.ViewGroup!, android.view.View!, android.view.accessibility.AccessibilityEvent!);
+ method public static void setLayoutMode(android.view.ViewGroup, int);
+ method @Deprecated public static void setMotionEventSplittingEnabled(android.view.ViewGroup!, boolean);
+ method public static void setTransitionGroup(android.view.ViewGroup, boolean);
+ field public static final int LAYOUT_MODE_CLIP_BOUNDS = 0; // 0x0
+ field public static final int LAYOUT_MODE_OPTICAL_BOUNDS = 1; // 0x1
+ }
+
+ public final class ViewParentCompat {
+ method public static void notifySubtreeAccessibilityStateChanged(android.view.ViewParent!, android.view.View!, android.view.View!, int);
+ method public static boolean onNestedFling(android.view.ViewParent!, android.view.View!, float, float, boolean);
+ method public static boolean onNestedPreFling(android.view.ViewParent!, android.view.View!, float, float);
+ method public static void onNestedPreScroll(android.view.ViewParent!, android.view.View!, int, int, int[]!);
+ method public static void onNestedPreScroll(android.view.ViewParent!, android.view.View!, int, int, int[]!, int);
+ method public static void onNestedScroll(android.view.ViewParent!, android.view.View!, int, int, int, int);
+ method public static void onNestedScroll(android.view.ViewParent!, android.view.View!, int, int, int, int, int);
+ method public static void onNestedScroll(android.view.ViewParent!, android.view.View!, int, int, int, int, int, int[]);
+ method public static void onNestedScrollAccepted(android.view.ViewParent!, android.view.View!, android.view.View!, int);
+ method public static void onNestedScrollAccepted(android.view.ViewParent!, android.view.View!, android.view.View!, int, int);
+ method public static boolean onStartNestedScroll(android.view.ViewParent!, android.view.View!, android.view.View!, int);
+ method public static boolean onStartNestedScroll(android.view.ViewParent!, android.view.View!, android.view.View!, int, int);
+ method public static void onStopNestedScroll(android.view.ViewParent!, android.view.View!);
+ method public static void onStopNestedScroll(android.view.ViewParent!, android.view.View!, int);
+ method @Deprecated public static boolean requestSendAccessibilityEvent(android.view.ViewParent!, android.view.View!, android.view.accessibility.AccessibilityEvent!);
+ }
+
+ public final class ViewPropertyAnimatorCompat {
+ method public androidx.core.view.ViewPropertyAnimatorCompat! alpha(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! alphaBy(float);
+ method public void cancel();
+ method public long getDuration();
+ method public android.view.animation.Interpolator! getInterpolator();
+ method public long getStartDelay();
+ method public androidx.core.view.ViewPropertyAnimatorCompat! rotation(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! rotationBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! rotationX(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! rotationXBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! rotationY(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! rotationYBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! scaleX(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! scaleXBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! scaleY(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! scaleYBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! setDuration(long);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! setInterpolator(android.view.animation.Interpolator!);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! setListener(androidx.core.view.ViewPropertyAnimatorListener!);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! setStartDelay(long);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! setUpdateListener(androidx.core.view.ViewPropertyAnimatorUpdateListener!);
+ method public void start();
+ method public androidx.core.view.ViewPropertyAnimatorCompat! translationX(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! translationXBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! translationY(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! translationYBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! translationZ(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! translationZBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! withEndAction(Runnable!);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! withLayer();
+ method public androidx.core.view.ViewPropertyAnimatorCompat! withStartAction(Runnable!);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! x(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! xBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! y(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! yBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! z(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! zBy(float);
+ }
+
+ public interface ViewPropertyAnimatorListener {
+ method public void onAnimationCancel(android.view.View!);
+ method public void onAnimationEnd(android.view.View!);
+ method public void onAnimationStart(android.view.View!);
+ }
+
+ public class ViewPropertyAnimatorListenerAdapter implements androidx.core.view.ViewPropertyAnimatorListener {
+ ctor public ViewPropertyAnimatorListenerAdapter();
+ method public void onAnimationCancel(android.view.View!);
+ method public void onAnimationEnd(android.view.View!);
+ method public void onAnimationStart(android.view.View!);
+ }
+
+ public interface ViewPropertyAnimatorUpdateListener {
+ method public void onAnimationUpdate(android.view.View!);
+ }
+
+ public final class WindowCompat {
+ method public static androidx.core.view.WindowInsetsControllerCompat? getInsetsController(android.view.Window, android.view.View);
+ method public static <T extends android.view.View> T requireViewById(android.view.Window, @IdRes int);
+ method public static void setDecorFitsSystemWindows(android.view.Window, boolean);
+ field public static final int FEATURE_ACTION_BAR = 8; // 0x8
+ field public static final int FEATURE_ACTION_BAR_OVERLAY = 9; // 0x9
+ field public static final int FEATURE_ACTION_MODE_OVERLAY = 10; // 0xa
+ }
+
+ public final class WindowInsetsAnimationCompat {
+ ctor public WindowInsetsAnimationCompat(int, android.view.animation.Interpolator?, long);
+ method @FloatRange(from=0.0f, to=1.0f) public float getAlpha();
+ method public long getDurationMillis();
+ method @FloatRange(from=0.0f, to=1.0f) public float getFraction();
+ method public float getInterpolatedFraction();
+ method public android.view.animation.Interpolator? getInterpolator();
+ method public int getTypeMask();
+ method public void setAlpha(@FloatRange(from=0.0f, to=1.0f) float);
+ method public void setFraction(@FloatRange(from=0.0f, to=1.0f) float);
+ }
+
+ public static final class WindowInsetsAnimationCompat.BoundsCompat {
+ ctor public WindowInsetsAnimationCompat.BoundsCompat(androidx.core.graphics.Insets, androidx.core.graphics.Insets);
+ method public androidx.core.graphics.Insets getLowerBound();
+ method public androidx.core.graphics.Insets getUpperBound();
+ method public androidx.core.view.WindowInsetsAnimationCompat.BoundsCompat inset(androidx.core.graphics.Insets);
+ method @RequiresApi(30) public android.view.WindowInsetsAnimation.Bounds toBounds();
+ method @RequiresApi(30) public static androidx.core.view.WindowInsetsAnimationCompat.BoundsCompat toBoundsCompat(android.view.WindowInsetsAnimation.Bounds);
+ }
+
+ public abstract static class WindowInsetsAnimationCompat.Callback {
+ ctor public WindowInsetsAnimationCompat.Callback(int);
+ method public final int getDispatchMode();
+ method public void onEnd(androidx.core.view.WindowInsetsAnimationCompat);
+ method public void onPrepare(androidx.core.view.WindowInsetsAnimationCompat);
+ method public abstract androidx.core.view.WindowInsetsCompat onProgress(androidx.core.view.WindowInsetsCompat, java.util.List<androidx.core.view.WindowInsetsAnimationCompat!>);
+ method public androidx.core.view.WindowInsetsAnimationCompat.BoundsCompat onStart(androidx.core.view.WindowInsetsAnimationCompat, androidx.core.view.WindowInsetsAnimationCompat.BoundsCompat);
+ field public static final int DISPATCH_MODE_CONTINUE_ON_SUBTREE = 1; // 0x1
+ field public static final int DISPATCH_MODE_STOP = 0; // 0x0
+ }
+
+ public interface WindowInsetsAnimationControlListenerCompat {
+ method public void onCancelled(androidx.core.view.WindowInsetsAnimationControllerCompat?);
+ method public void onFinished(androidx.core.view.WindowInsetsAnimationControllerCompat);
+ method public void onReady(androidx.core.view.WindowInsetsAnimationControllerCompat, int);
+ }
+
+ public final class WindowInsetsAnimationControllerCompat {
+ method public void finish(boolean);
+ method public float getCurrentAlpha();
+ method @FloatRange(from=0.0f, to=1.0f) public float getCurrentFraction();
+ method public androidx.core.graphics.Insets getCurrentInsets();
+ method public androidx.core.graphics.Insets getHiddenStateInsets();
+ method public androidx.core.graphics.Insets getShownStateInsets();
+ method public int getTypes();
+ method public boolean isCancelled();
+ method public boolean isFinished();
+ method public boolean isReady();
+ method public void setInsetsAndAlpha(androidx.core.graphics.Insets?, @FloatRange(from=0.0f, to=1.0f) float, @FloatRange(from=0.0f, to=1.0f) float);
+ }
+
+ public class WindowInsetsCompat {
+ ctor public WindowInsetsCompat(androidx.core.view.WindowInsetsCompat?);
+ method @Deprecated public androidx.core.view.WindowInsetsCompat consumeDisplayCutout();
+ method @Deprecated public androidx.core.view.WindowInsetsCompat consumeStableInsets();
+ method @Deprecated public androidx.core.view.WindowInsetsCompat consumeSystemWindowInsets();
+ method public androidx.core.view.DisplayCutoutCompat? getDisplayCutout();
+ method public androidx.core.graphics.Insets getInsets(int);
+ method public androidx.core.graphics.Insets getInsetsIgnoringVisibility(int);
+ method @Deprecated public androidx.core.graphics.Insets getMandatorySystemGestureInsets();
+ method @Deprecated public int getStableInsetBottom();
+ method @Deprecated public int getStableInsetLeft();
+ method @Deprecated public int getStableInsetRight();
+ method @Deprecated public int getStableInsetTop();
+ method @Deprecated public androidx.core.graphics.Insets getStableInsets();
+ method @Deprecated public androidx.core.graphics.Insets getSystemGestureInsets();
+ method @Deprecated public int getSystemWindowInsetBottom();
+ method @Deprecated public int getSystemWindowInsetLeft();
+ method @Deprecated public int getSystemWindowInsetRight();
+ method @Deprecated public int getSystemWindowInsetTop();
+ method @Deprecated public androidx.core.graphics.Insets getSystemWindowInsets();
+ method @Deprecated public androidx.core.graphics.Insets getTappableElementInsets();
+ method public boolean hasInsets();
+ method @Deprecated public boolean hasStableInsets();
+ method @Deprecated public boolean hasSystemWindowInsets();
+ method public androidx.core.view.WindowInsetsCompat inset(androidx.core.graphics.Insets);
+ method public androidx.core.view.WindowInsetsCompat inset(@IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int);
+ method public boolean isConsumed();
+ method public boolean isRound();
+ method public boolean isVisible(int);
+ method @Deprecated public androidx.core.view.WindowInsetsCompat replaceSystemWindowInsets(int, int, int, int);
+ method @Deprecated public androidx.core.view.WindowInsetsCompat replaceSystemWindowInsets(android.graphics.Rect);
+ method @RequiresApi(20) public android.view.WindowInsets? toWindowInsets();
+ method @RequiresApi(20) public static androidx.core.view.WindowInsetsCompat toWindowInsetsCompat(android.view.WindowInsets);
+ method @RequiresApi(20) public static androidx.core.view.WindowInsetsCompat toWindowInsetsCompat(android.view.WindowInsets, android.view.View?);
+ field public static final androidx.core.view.WindowInsetsCompat CONSUMED;
+ }
+
+ public static final class WindowInsetsCompat.Builder {
+ ctor public WindowInsetsCompat.Builder();
+ ctor public WindowInsetsCompat.Builder(androidx.core.view.WindowInsetsCompat);
+ method public androidx.core.view.WindowInsetsCompat build();
+ method public androidx.core.view.WindowInsetsCompat.Builder setDisplayCutout(androidx.core.view.DisplayCutoutCompat?);
+ method public androidx.core.view.WindowInsetsCompat.Builder setInsets(int, androidx.core.graphics.Insets);
+ method public androidx.core.view.WindowInsetsCompat.Builder setInsetsIgnoringVisibility(int, androidx.core.graphics.Insets);
+ method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setMandatorySystemGestureInsets(androidx.core.graphics.Insets);
+ method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setStableInsets(androidx.core.graphics.Insets);
+ method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setSystemGestureInsets(androidx.core.graphics.Insets);
+ method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setSystemWindowInsets(androidx.core.graphics.Insets);
+ method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setTappableElementInsets(androidx.core.graphics.Insets);
+ method public androidx.core.view.WindowInsetsCompat.Builder setVisible(int, boolean);
+ }
+
+ public static final class WindowInsetsCompat.Type {
+ method public static int captionBar();
+ method public static int displayCutout();
+ method public static int ime();
+ method public static int mandatorySystemGestures();
+ method public static int navigationBars();
+ method public static int statusBars();
+ method public static int systemBars();
+ method public static int systemGestures();
+ method public static int tappableElement();
+ }
+
+ public final class WindowInsetsControllerCompat {
+ ctor public WindowInsetsControllerCompat(android.view.Window, android.view.View);
+ method public void addOnControllableInsetsChangedListener(androidx.core.view.WindowInsetsControllerCompat.OnControllableInsetsChangedListener);
+ method public void controlWindowInsetsAnimation(int, long, android.view.animation.Interpolator?, android.os.CancellationSignal?, androidx.core.view.WindowInsetsAnimationControlListenerCompat);
+ method public int getSystemBarsBehavior();
+ method public void hide(int);
+ method public boolean isAppearanceLightNavigationBars();
+ method public boolean isAppearanceLightStatusBars();
+ method public void removeOnControllableInsetsChangedListener(androidx.core.view.WindowInsetsControllerCompat.OnControllableInsetsChangedListener);
+ method public void setAppearanceLightNavigationBars(boolean);
+ method public void setAppearanceLightStatusBars(boolean);
+ method public void setSystemBarsBehavior(int);
+ method public void show(int);
+ method @RequiresApi(30) public static androidx.core.view.WindowInsetsControllerCompat toWindowInsetsControllerCompat(android.view.WindowInsetsController);
+ field public static final int BEHAVIOR_SHOW_BARS_BY_SWIPE = 1; // 0x1
+ field public static final int BEHAVIOR_SHOW_BARS_BY_TOUCH = 0; // 0x0
+ field public static final int BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE = 2; // 0x2
+ }
+
+ public static interface WindowInsetsControllerCompat.OnControllableInsetsChangedListener {
+ method public void onControllableInsetsChanged(androidx.core.view.WindowInsetsControllerCompat, int);
+ }
+
+}
+
+package androidx.core.view.accessibility {
+
+ public final class AccessibilityClickableSpanCompat extends android.text.style.ClickableSpan {
+ method public void onClick(android.view.View);
+ }
+
+ public final class AccessibilityEventCompat {
+ method @Deprecated public static void appendRecord(android.view.accessibility.AccessibilityEvent!, androidx.core.view.accessibility.AccessibilityRecordCompat!);
+ method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! asRecord(android.view.accessibility.AccessibilityEvent!);
+ method public static int getAction(android.view.accessibility.AccessibilityEvent!);
+ method public static int getContentChangeTypes(android.view.accessibility.AccessibilityEvent!);
+ method public static int getMovementGranularity(android.view.accessibility.AccessibilityEvent!);
+ method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! getRecord(android.view.accessibility.AccessibilityEvent!, int);
+ method @Deprecated public static int getRecordCount(android.view.accessibility.AccessibilityEvent!);
+ method public static void setAction(android.view.accessibility.AccessibilityEvent!, int);
+ method public static void setContentChangeTypes(android.view.accessibility.AccessibilityEvent!, int);
+ method public static void setMovementGranularity(android.view.accessibility.AccessibilityEvent!, int);
+ field public static final int CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION = 4; // 0x4
+ field public static final int CONTENT_CHANGE_TYPE_PANE_APPEARED = 16; // 0x10
+ field public static final int CONTENT_CHANGE_TYPE_PANE_DISAPPEARED = 32; // 0x20
+ field public static final int CONTENT_CHANGE_TYPE_PANE_TITLE = 8; // 0x8
+ field public static final int CONTENT_CHANGE_TYPE_STATE_DESCRIPTION = 64; // 0x40
+ field public static final int CONTENT_CHANGE_TYPE_SUBTREE = 1; // 0x1
+ field public static final int CONTENT_CHANGE_TYPE_TEXT = 2; // 0x2
+ field public static final int CONTENT_CHANGE_TYPE_UNDEFINED = 0; // 0x0
+ field public static final int TYPES_ALL_MASK = -1; // 0xffffffff
+ field public static final int TYPE_ANNOUNCEMENT = 16384; // 0x4000
+ field public static final int TYPE_ASSIST_READING_CONTEXT = 16777216; // 0x1000000
+ field public static final int TYPE_GESTURE_DETECTION_END = 524288; // 0x80000
+ field public static final int TYPE_GESTURE_DETECTION_START = 262144; // 0x40000
+ field @Deprecated public static final int TYPE_TOUCH_EXPLORATION_GESTURE_END = 1024; // 0x400
+ field @Deprecated public static final int TYPE_TOUCH_EXPLORATION_GESTURE_START = 512; // 0x200
+ field public static final int TYPE_TOUCH_INTERACTION_END = 2097152; // 0x200000
+ field public static final int TYPE_TOUCH_INTERACTION_START = 1048576; // 0x100000
+ field public static final int TYPE_VIEW_ACCESSIBILITY_FOCUSED = 32768; // 0x8000
+ field public static final int TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED = 65536; // 0x10000
+ field public static final int TYPE_VIEW_CONTEXT_CLICKED = 8388608; // 0x800000
+ field @Deprecated public static final int TYPE_VIEW_HOVER_ENTER = 128; // 0x80
+ field @Deprecated public static final int TYPE_VIEW_HOVER_EXIT = 256; // 0x100
+ field @Deprecated public static final int TYPE_VIEW_SCROLLED = 4096; // 0x1000
+ field @Deprecated public static final int TYPE_VIEW_TEXT_SELECTION_CHANGED = 8192; // 0x2000
+ field public static final int TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY = 131072; // 0x20000
+ field public static final int TYPE_WINDOWS_CHANGED = 4194304; // 0x400000
+ field @Deprecated public static final int TYPE_WINDOW_CONTENT_CHANGED = 2048; // 0x800
+ }
+
+ public final class AccessibilityManagerCompat {
+ method @Deprecated public static boolean addAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListener!);
+ method public static boolean addTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.TouchExplorationStateChangeListener!);
+ method @Deprecated public static java.util.List<android.accessibilityservice.AccessibilityServiceInfo!>! getEnabledAccessibilityServiceList(android.view.accessibility.AccessibilityManager!, int);
+ method @Deprecated public static java.util.List<android.accessibilityservice.AccessibilityServiceInfo!>! getInstalledAccessibilityServiceList(android.view.accessibility.AccessibilityManager!);
+ method @Deprecated public static boolean isTouchExplorationEnabled(android.view.accessibility.AccessibilityManager!);
+ method @Deprecated public static boolean removeAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListener!);
+ method public static boolean removeTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.TouchExplorationStateChangeListener!);
+ }
+
+ @Deprecated public static interface AccessibilityManagerCompat.AccessibilityStateChangeListener {
+ method @Deprecated public void onAccessibilityStateChanged(boolean);
+ }
+
+ @Deprecated public abstract static class AccessibilityManagerCompat.AccessibilityStateChangeListenerCompat implements androidx.core.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListener {
+ ctor @Deprecated public AccessibilityManagerCompat.AccessibilityStateChangeListenerCompat();
+ }
+
+ public static interface AccessibilityManagerCompat.TouchExplorationStateChangeListener {
+ method public void onTouchExplorationStateChanged(boolean);
+ }
+
+ public class AccessibilityNodeInfoCompat {
+ ctor @Deprecated public AccessibilityNodeInfoCompat(Object!);
+ method public void addAction(int);
+ method public void addAction(androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat!);
+ method public void addChild(android.view.View!);
+ method public void addChild(android.view.View!, int);
+ method public boolean canOpenPopup();
+ method public java.util.List<androidx.core.view.accessibility.AccessibilityNodeInfoCompat!>! findAccessibilityNodeInfosByText(String!);
+ method public java.util.List<androidx.core.view.accessibility.AccessibilityNodeInfoCompat!>! findAccessibilityNodeInfosByViewId(String!);
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! findFocus(int);
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! focusSearch(int);
+ method public java.util.List<androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat!>! getActionList();
+ method public int getActions();
+ method @Deprecated public void getBoundsInParent(android.graphics.Rect!);
+ method public void getBoundsInScreen(android.graphics.Rect!);
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getChild(int);
+ method public int getChildCount();
+ method public CharSequence! getClassName();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionInfoCompat! getCollectionInfo();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionItemInfoCompat! getCollectionItemInfo();
+ method public CharSequence! getContentDescription();
+ method public int getDrawingOrder();
+ method public CharSequence! getError();
+ method public android.os.Bundle! getExtras();
+ method public CharSequence? getHintText();
+ method @Deprecated public Object! getInfo();
+ method public int getInputType();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getLabelFor();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getLabeledBy();
+ method public int getLiveRegion();
+ method public int getMaxTextLength();
+ method public int getMovementGranularities();
+ method public CharSequence! getPackageName();
+ method public CharSequence? getPaneTitle();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getParent();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat! getRangeInfo();
+ method public CharSequence? getRoleDescription();
+ method public CharSequence? getStateDescription();
+ method public CharSequence! getText();
+ method public int getTextSelectionEnd();
+ method public int getTextSelectionStart();
+ method public CharSequence? getTooltipText();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.TouchDelegateInfoCompat? getTouchDelegateInfo();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getTraversalAfter();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getTraversalBefore();
+ method public String! getViewIdResourceName();
+ method public androidx.core.view.accessibility.AccessibilityWindowInfoCompat! getWindow();
+ method public int getWindowId();
+ method public boolean isAccessibilityFocused();
+ method public boolean isCheckable();
+ method public boolean isChecked();
+ method public boolean isClickable();
+ method public boolean isContentInvalid();
+ method public boolean isContextClickable();
+ method public boolean isDismissable();
+ method public boolean isEditable();
+ method public boolean isEnabled();
+ method public boolean isFocusable();
+ method public boolean isFocused();
+ method public boolean isHeading();
+ method public boolean isImportantForAccessibility();
+ method public boolean isLongClickable();
+ method public boolean isMultiLine();
+ method public boolean isPassword();
+ method public boolean isScreenReaderFocusable();
+ method public boolean isScrollable();
+ method public boolean isSelected();
+ method public boolean isShowingHintText();
+ method public boolean isTextEntryKey();
+ method public boolean isVisibleToUser();
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! obtain(android.view.View!);
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! obtain(android.view.View!, int);
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! obtain();
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! obtain(androidx.core.view.accessibility.AccessibilityNodeInfoCompat!);
+ method public boolean performAction(int);
+ method public boolean performAction(int, android.os.Bundle!);
+ method public void recycle();
+ method public boolean refresh();
+ method public boolean removeAction(androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat!);
+ method public boolean removeChild(android.view.View!);
+ method public boolean removeChild(android.view.View!, int);
+ method public void setAccessibilityFocused(boolean);
+ method @Deprecated public void setBoundsInParent(android.graphics.Rect!);
+ method public void setBoundsInScreen(android.graphics.Rect!);
+ method public void setCanOpenPopup(boolean);
+ method public void setCheckable(boolean);
+ method public void setChecked(boolean);
+ method public void setClassName(CharSequence!);
+ method public void setClickable(boolean);
+ method public void setCollectionInfo(Object!);
+ method public void setCollectionItemInfo(Object!);
+ method public void setContentDescription(CharSequence!);
+ method public void setContentInvalid(boolean);
+ method public void setContextClickable(boolean);
+ method public void setDismissable(boolean);
+ method public void setDrawingOrder(int);
+ method public void setEditable(boolean);
+ method public void setEnabled(boolean);
+ method public void setError(CharSequence!);
+ method public void setFocusable(boolean);
+ method public void setFocused(boolean);
+ method public void setHeading(boolean);
+ method public void setHintText(CharSequence?);
+ method public void setImportantForAccessibility(boolean);
+ method public void setInputType(int);
+ method public void setLabelFor(android.view.View!);
+ method public void setLabelFor(android.view.View!, int);
+ method public void setLabeledBy(android.view.View!);
+ method public void setLabeledBy(android.view.View!, int);
+ method public void setLiveRegion(int);
+ method public void setLongClickable(boolean);
+ method public void setMaxTextLength(int);
+ method public void setMovementGranularities(int);
+ method public void setMultiLine(boolean);
+ method public void setPackageName(CharSequence!);
+ method public void setPaneTitle(CharSequence?);
+ method public void setParent(android.view.View!);
+ method public void setParent(android.view.View!, int);
+ method public void setPassword(boolean);
+ method public void setRangeInfo(androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat!);
+ method public void setRoleDescription(CharSequence?);
+ method public void setScreenReaderFocusable(boolean);
+ method public void setScrollable(boolean);
+ method public void setSelected(boolean);
+ method public void setShowingHintText(boolean);
+ method public void setSource(android.view.View!);
+ method public void setSource(android.view.View!, int);
+ method public void setStateDescription(CharSequence?);
+ method public void setText(CharSequence!);
+ method public void setTextEntryKey(boolean);
+ method public void setTextSelection(int, int);
+ method public void setTooltipText(CharSequence?);
+ method public void setTouchDelegateInfo(androidx.core.view.accessibility.AccessibilityNodeInfoCompat.TouchDelegateInfoCompat);
+ method public void setTraversalAfter(android.view.View!);
+ method public void setTraversalAfter(android.view.View!, int);
+ method public void setTraversalBefore(android.view.View!);
+ method public void setTraversalBefore(android.view.View!, int);
+ method public void setViewIdResourceName(String!);
+ method public void setVisibleToUser(boolean);
+ method public android.view.accessibility.AccessibilityNodeInfo! unwrap();
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! wrap(android.view.accessibility.AccessibilityNodeInfo);
+ field public static final int ACTION_ACCESSIBILITY_FOCUS = 64; // 0x40
+ field public static final String ACTION_ARGUMENT_COLUMN_INT = "android.view.accessibility.action.ARGUMENT_COLUMN_INT";
+ field public static final String ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN = "ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN";
+ field public static final String ACTION_ARGUMENT_HTML_ELEMENT_STRING = "ACTION_ARGUMENT_HTML_ELEMENT_STRING";
+ field public static final String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT = "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
+ field public static final String ACTION_ARGUMENT_MOVE_WINDOW_X = "ACTION_ARGUMENT_MOVE_WINDOW_X";
+ field public static final String ACTION_ARGUMENT_MOVE_WINDOW_Y = "ACTION_ARGUMENT_MOVE_WINDOW_Y";
+ field public static final String ACTION_ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT = "android.view.accessibility.action.ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT";
+ field public static final String ACTION_ARGUMENT_PROGRESS_VALUE = "android.view.accessibility.action.ARGUMENT_PROGRESS_VALUE";
+ field public static final String ACTION_ARGUMENT_ROW_INT = "android.view.accessibility.action.ARGUMENT_ROW_INT";
+ field public static final String ACTION_ARGUMENT_SELECTION_END_INT = "ACTION_ARGUMENT_SELECTION_END_INT";
+ field public static final String ACTION_ARGUMENT_SELECTION_START_INT = "ACTION_ARGUMENT_SELECTION_START_INT";
+ field public static final String ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE = "ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE";
+ field public static final int ACTION_CLEAR_ACCESSIBILITY_FOCUS = 128; // 0x80
+ field public static final int ACTION_CLEAR_FOCUS = 2; // 0x2
+ field public static final int ACTION_CLEAR_SELECTION = 8; // 0x8
+ field public static final int ACTION_CLICK = 16; // 0x10
+ field public static final int ACTION_COLLAPSE = 524288; // 0x80000
+ field public static final int ACTION_COPY = 16384; // 0x4000
+ field public static final int ACTION_CUT = 65536; // 0x10000
+ field public static final int ACTION_DISMISS = 1048576; // 0x100000
+ field public static final int ACTION_EXPAND = 262144; // 0x40000
+ field public static final int ACTION_FOCUS = 1; // 0x1
+ field public static final int ACTION_LONG_CLICK = 32; // 0x20
+ field public static final int ACTION_NEXT_AT_MOVEMENT_GRANULARITY = 256; // 0x100
+ field public static final int ACTION_NEXT_HTML_ELEMENT = 1024; // 0x400
+ field public static final int ACTION_PASTE = 32768; // 0x8000
+ field public static final int ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY = 512; // 0x200
+ field public static final int ACTION_PREVIOUS_HTML_ELEMENT = 2048; // 0x800
+ field public static final int ACTION_SCROLL_BACKWARD = 8192; // 0x2000
+ field public static final int ACTION_SCROLL_FORWARD = 4096; // 0x1000
+ field public static final int ACTION_SELECT = 4; // 0x4
+ field public static final int ACTION_SET_SELECTION = 131072; // 0x20000
+ field public static final int ACTION_SET_TEXT = 2097152; // 0x200000
+ field public static final int FOCUS_ACCESSIBILITY = 2; // 0x2
+ field public static final int FOCUS_INPUT = 1; // 0x1
+ field public static final int MOVEMENT_GRANULARITY_CHARACTER = 1; // 0x1
+ field public static final int MOVEMENT_GRANULARITY_LINE = 4; // 0x4
+ field public static final int MOVEMENT_GRANULARITY_PAGE = 16; // 0x10
+ field public static final int MOVEMENT_GRANULARITY_PARAGRAPH = 8; // 0x8
+ field public static final int MOVEMENT_GRANULARITY_WORD = 2; // 0x2
+ }
+
+ public static class AccessibilityNodeInfoCompat.AccessibilityActionCompat {
+ ctor public AccessibilityNodeInfoCompat.AccessibilityActionCompat(int, CharSequence!);
+ method public int getId();
+ method public CharSequence! getLabel();
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_ACCESSIBILITY_FOCUS;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CLEAR_ACCESSIBILITY_FOCUS;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CLEAR_FOCUS;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CLEAR_SELECTION;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CLICK;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_COLLAPSE;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CONTEXT_CLICK;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_COPY;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CUT;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_DISMISS;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_EXPAND;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_FOCUS;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_HIDE_TOOLTIP;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_IME_ENTER;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_LONG_CLICK;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_MOVE_WINDOW;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_NEXT_AT_MOVEMENT_GRANULARITY;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_NEXT_HTML_ELEMENT;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_DOWN;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_LEFT;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_RIGHT;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_UP;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PASTE;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PRESS_AND_HOLD;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_HTML_ELEMENT;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_BACKWARD;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_DOWN;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_FORWARD;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_LEFT;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_RIGHT;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_TO_POSITION;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_UP;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SELECT;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SET_PROGRESS;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SET_SELECTION;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SET_TEXT;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SHOW_ON_SCREEN;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SHOW_TOOLTIP;
+ }
+
+ public static class AccessibilityNodeInfoCompat.CollectionInfoCompat {
+ method public int getColumnCount();
+ method public int getRowCount();
+ method public int getSelectionMode();
+ method public boolean isHierarchical();
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionInfoCompat! obtain(int, int, boolean, int);
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionInfoCompat! obtain(int, int, boolean);
+ field public static final int SELECTION_MODE_MULTIPLE = 2; // 0x2
+ field public static final int SELECTION_MODE_NONE = 0; // 0x0
+ field public static final int SELECTION_MODE_SINGLE = 1; // 0x1
+ }
+
+ public static class AccessibilityNodeInfoCompat.CollectionItemInfoCompat {
+ method public int getColumnIndex();
+ method public int getColumnSpan();
+ method public int getRowIndex();
+ method public int getRowSpan();
+ method @Deprecated public boolean isHeading();
+ method public boolean isSelected();
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionItemInfoCompat! obtain(int, int, int, int, boolean, boolean);
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionItemInfoCompat! obtain(int, int, int, int, boolean);
+ }
+
+ public static class AccessibilityNodeInfoCompat.RangeInfoCompat {
+ method public float getCurrent();
+ method public float getMax();
+ method public float getMin();
+ method public int getType();
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat! obtain(int, float, float, float);
+ field public static final int RANGE_TYPE_FLOAT = 1; // 0x1
+ field public static final int RANGE_TYPE_INT = 0; // 0x0
+ field public static final int RANGE_TYPE_PERCENT = 2; // 0x2
+ }
+
+ public static final class AccessibilityNodeInfoCompat.TouchDelegateInfoCompat {
+ ctor public AccessibilityNodeInfoCompat.TouchDelegateInfoCompat(java.util.Map<android.graphics.Region!,android.view.View!>);
+ method public android.graphics.Region? getRegionAt(@IntRange(from=0) int);
+ method @IntRange(from=0) public int getRegionCount();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat? getTargetForRegion(android.graphics.Region);
+ }
+
+ public class AccessibilityNodeProviderCompat {
+ ctor public AccessibilityNodeProviderCompat();
+ ctor public AccessibilityNodeProviderCompat(Object!);
+ method public void addExtraDataToAccessibilityNodeInfo(int, androidx.core.view.accessibility.AccessibilityNodeInfoCompat, String, android.os.Bundle?);
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat? createAccessibilityNodeInfo(int);
+ method public java.util.List<androidx.core.view.accessibility.AccessibilityNodeInfoCompat!>? findAccessibilityNodeInfosByText(String!, int);
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat? findFocus(int);
+ method public Object! getProvider();
+ method public boolean performAction(int, int, android.os.Bundle!);
+ field public static final int HOST_VIEW_ID = -1; // 0xffffffff
+ }
+
+ public class AccessibilityRecordCompat {
+ ctor @Deprecated public AccessibilityRecordCompat(Object!);
+ method @Deprecated public boolean equals(Object?);
+ method @Deprecated public int getAddedCount();
+ method @Deprecated public CharSequence! getBeforeText();
+ method @Deprecated public CharSequence! getClassName();
+ method @Deprecated public CharSequence! getContentDescription();
+ method @Deprecated public int getCurrentItemIndex();
+ method @Deprecated public int getFromIndex();
+ method @Deprecated public Object! getImpl();
+ method @Deprecated public int getItemCount();
+ method @Deprecated public int getMaxScrollX();
+ method public static int getMaxScrollX(android.view.accessibility.AccessibilityRecord!);
+ method @Deprecated public int getMaxScrollY();
+ method public static int getMaxScrollY(android.view.accessibility.AccessibilityRecord!);
+ method @Deprecated public android.os.Parcelable! getParcelableData();
+ method @Deprecated public int getRemovedCount();
+ method @Deprecated public int getScrollX();
+ method @Deprecated public int getScrollY();
+ method @Deprecated public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getSource();
+ method @Deprecated public java.util.List<java.lang.CharSequence!>! getText();
+ method @Deprecated public int getToIndex();
+ method @Deprecated public int getWindowId();
+ method @Deprecated public int hashCode();
+ method @Deprecated public boolean isChecked();
+ method @Deprecated public boolean isEnabled();
+ method @Deprecated public boolean isFullScreen();
+ method @Deprecated public boolean isPassword();
+ method @Deprecated public boolean isScrollable();
+ method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! obtain(androidx.core.view.accessibility.AccessibilityRecordCompat!);
+ method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! obtain();
+ method @Deprecated public void recycle();
+ method @Deprecated public void setAddedCount(int);
+ method @Deprecated public void setBeforeText(CharSequence!);
+ method @Deprecated public void setChecked(boolean);
+ method @Deprecated public void setClassName(CharSequence!);
+ method @Deprecated public void setContentDescription(CharSequence!);
+ method @Deprecated public void setCurrentItemIndex(int);
+ method @Deprecated public void setEnabled(boolean);
+ method @Deprecated public void setFromIndex(int);
+ method @Deprecated public void setFullScreen(boolean);
+ method @Deprecated public void setItemCount(int);
+ method @Deprecated public void setMaxScrollX(int);
+ method public static void setMaxScrollX(android.view.accessibility.AccessibilityRecord!, int);
+ method @Deprecated public void setMaxScrollY(int);
+ method public static void setMaxScrollY(android.view.accessibility.AccessibilityRecord!, int);
+ method @Deprecated public void setParcelableData(android.os.Parcelable!);
+ method @Deprecated public void setPassword(boolean);
+ method @Deprecated public void setRemovedCount(int);
+ method @Deprecated public void setScrollX(int);
+ method @Deprecated public void setScrollY(int);
+ method @Deprecated public void setScrollable(boolean);
+ method @Deprecated public void setSource(android.view.View!);
+ method @Deprecated public void setSource(android.view.View!, int);
+ method public static void setSource(android.view.accessibility.AccessibilityRecord, android.view.View!, int);
+ method @Deprecated public void setToIndex(int);
+ }
+
+ public interface AccessibilityViewCommand {
+ method public boolean perform(android.view.View, androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments?);
+ }
+
+ public abstract static class AccessibilityViewCommand.CommandArguments {
+ ctor public AccessibilityViewCommand.CommandArguments();
+ }
+
+ public static final class AccessibilityViewCommand.MoveAtGranularityArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
+ ctor public AccessibilityViewCommand.MoveAtGranularityArguments();
+ method public boolean getExtendSelection();
+ method public int getGranularity();
+ }
+
+ public static final class AccessibilityViewCommand.MoveHtmlArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
+ ctor public AccessibilityViewCommand.MoveHtmlArguments();
+ method public String! getHTMLElement();
+ }
+
+ public static final class AccessibilityViewCommand.MoveWindowArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
+ ctor public AccessibilityViewCommand.MoveWindowArguments();
+ method public int getX();
+ method public int getY();
+ }
+
+ public static final class AccessibilityViewCommand.ScrollToPositionArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
+ ctor public AccessibilityViewCommand.ScrollToPositionArguments();
+ method public int getColumn();
+ method public int getRow();
+ }
+
+ public static final class AccessibilityViewCommand.SetProgressArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
+ ctor public AccessibilityViewCommand.SetProgressArguments();
+ method public float getProgress();
+ }
+
+ public static final class AccessibilityViewCommand.SetSelectionArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
+ ctor public AccessibilityViewCommand.SetSelectionArguments();
+ method public int getEnd();
+ method public int getStart();
+ }
+
+ public static final class AccessibilityViewCommand.SetTextArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
+ ctor public AccessibilityViewCommand.SetTextArguments();
+ method public CharSequence! getText();
+ }
+
+ public class AccessibilityWindowInfoCompat {
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getAnchor();
+ method public void getBoundsInScreen(android.graphics.Rect!);
+ method public androidx.core.view.accessibility.AccessibilityWindowInfoCompat! getChild(int);
+ method public int getChildCount();
+ method public int getId();
+ method public int getLayer();
+ method public androidx.core.view.accessibility.AccessibilityWindowInfoCompat! getParent();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getRoot();
+ method public CharSequence! getTitle();
+ method public int getType();
+ method public boolean isAccessibilityFocused();
+ method public boolean isActive();
+ method public boolean isFocused();
+ method public static androidx.core.view.accessibility.AccessibilityWindowInfoCompat! obtain();
+ method public static androidx.core.view.accessibility.AccessibilityWindowInfoCompat! obtain(androidx.core.view.accessibility.AccessibilityWindowInfoCompat!);
+ method public void recycle();
+ field public static final int TYPE_ACCESSIBILITY_OVERLAY = 4; // 0x4
+ field public static final int TYPE_APPLICATION = 1; // 0x1
+ field public static final int TYPE_INPUT_METHOD = 2; // 0x2
+ field public static final int TYPE_SPLIT_SCREEN_DIVIDER = 5; // 0x5
+ field public static final int TYPE_SYSTEM = 3; // 0x3
+ }
+
+}
+
+package androidx.core.view.animation {
+
+ public final class PathInterpolatorCompat {
+ method public static android.view.animation.Interpolator! create(android.graphics.Path!);
+ method public static android.view.animation.Interpolator! create(float, float);
+ method public static android.view.animation.Interpolator! create(float, float, float, float);
+ }
+
+}
+
+package androidx.core.view.inputmethod {
+
+ public final class EditorInfoCompat {
+ ctor @Deprecated public EditorInfoCompat();
+ method public static String![] getContentMimeTypes(android.view.inputmethod.EditorInfo!);
+ method public static CharSequence? getInitialSelectedText(android.view.inputmethod.EditorInfo, int);
+ method public static CharSequence? getInitialTextAfterCursor(android.view.inputmethod.EditorInfo, int, int);
+ method public static CharSequence? getInitialTextBeforeCursor(android.view.inputmethod.EditorInfo, int, int);
+ method public static void setContentMimeTypes(android.view.inputmethod.EditorInfo, String![]?);
+ method public static void setInitialSurroundingSubText(android.view.inputmethod.EditorInfo, CharSequence, int);
+ method public static void setInitialSurroundingText(android.view.inputmethod.EditorInfo, CharSequence);
+ field public static final int IME_FLAG_FORCE_ASCII = -2147483648; // 0x80000000
+ field public static final int IME_FLAG_NO_PERSONALIZED_LEARNING = 16777216; // 0x1000000
+ }
+
+ public final class InputConnectionCompat {
+ ctor @Deprecated public InputConnectionCompat();
+ method public static boolean commitContent(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo, androidx.core.view.inputmethod.InputContentInfoCompat, int, android.os.Bundle?);
+ method public static android.view.inputmethod.InputConnection createWrapper(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo, androidx.core.view.inputmethod.InputConnectionCompat.OnCommitContentListener);
+ field public static final int INPUT_CONTENT_GRANT_READ_URI_PERMISSION = 1; // 0x1
+ }
+
+ public static interface InputConnectionCompat.OnCommitContentListener {
+ method public boolean onCommitContent(androidx.core.view.inputmethod.InputContentInfoCompat!, int, android.os.Bundle!);
+ }
+
+ public final class InputContentInfoCompat {
+ ctor public InputContentInfoCompat(android.net.Uri, android.content.ClipDescription, android.net.Uri?);
+ method public android.net.Uri getContentUri();
+ method public android.content.ClipDescription getDescription();
+ method public android.net.Uri? getLinkUri();
+ method public void releasePermission();
+ method public void requestPermission();
+ method public Object? unwrap();
+ method public static androidx.core.view.inputmethod.InputContentInfoCompat? wrap(Object?);
+ }
+
+}
+
+package androidx.core.widget {
+
+ public abstract class AutoScrollHelper implements android.view.View.OnTouchListener {
+ ctor public AutoScrollHelper(android.view.View);
+ method public abstract boolean canTargetScrollHorizontally(int);
+ method public abstract boolean canTargetScrollVertically(int);
+ method public boolean isEnabled();
+ method public boolean isExclusive();
+ method public boolean onTouch(android.view.View!, android.view.MotionEvent!);
+ method public abstract void scrollTargetBy(int, int);
+ method public androidx.core.widget.AutoScrollHelper setActivationDelay(int);
+ method public androidx.core.widget.AutoScrollHelper setEdgeType(int);
+ method public androidx.core.widget.AutoScrollHelper! setEnabled(boolean);
+ method public androidx.core.widget.AutoScrollHelper! setExclusive(boolean);
+ method public androidx.core.widget.AutoScrollHelper setMaximumEdges(float, float);
+ method public androidx.core.widget.AutoScrollHelper setMaximumVelocity(float, float);
+ method public androidx.core.widget.AutoScrollHelper setMinimumVelocity(float, float);
+ method public androidx.core.widget.AutoScrollHelper setRampDownDuration(int);
+ method public androidx.core.widget.AutoScrollHelper setRampUpDuration(int);
+ method public androidx.core.widget.AutoScrollHelper setRelativeEdges(float, float);
+ method public androidx.core.widget.AutoScrollHelper setRelativeVelocity(float, float);
+ field public static final int EDGE_TYPE_INSIDE = 0; // 0x0
+ field public static final int EDGE_TYPE_INSIDE_EXTEND = 1; // 0x1
+ field public static final int EDGE_TYPE_OUTSIDE = 2; // 0x2
+ field public static final float NO_MAX = 3.4028235E38f;
+ field public static final float NO_MIN = 0.0f;
+ field public static final float RELATIVE_UNSPECIFIED = 0.0f;
+ }
+
+ public final class CompoundButtonCompat {
+ method public static android.graphics.drawable.Drawable? getButtonDrawable(android.widget.CompoundButton);
+ method public static android.content.res.ColorStateList? getButtonTintList(android.widget.CompoundButton);
+ method public static android.graphics.PorterDuff.Mode? getButtonTintMode(android.widget.CompoundButton);
+ method public static void setButtonTintList(android.widget.CompoundButton, android.content.res.ColorStateList?);
+ method public static void setButtonTintMode(android.widget.CompoundButton, android.graphics.PorterDuff.Mode?);
+ }
+
+ public class ContentLoadingProgressBar extends android.widget.ProgressBar {
+ ctor public ContentLoadingProgressBar(android.content.Context);
+ ctor public ContentLoadingProgressBar(android.content.Context, android.util.AttributeSet?);
+ method public void hide();
+ method public void onAttachedToWindow();
+ method public void onDetachedFromWindow();
+ method public void show();
+ }
+
+ public final class EdgeEffectCompat {
+ ctor @Deprecated public EdgeEffectCompat(android.content.Context!);
+ method @Deprecated public boolean draw(android.graphics.Canvas!);
+ method @Deprecated public void finish();
+ method @Deprecated public boolean isFinished();
+ method @Deprecated public boolean onAbsorb(int);
+ method @Deprecated public boolean onPull(float);
+ method @Deprecated public boolean onPull(float, float);
+ method public static void onPull(android.widget.EdgeEffect, float, float);
+ method @Deprecated public boolean onRelease();
+ method @Deprecated public void setSize(int, int);
+ }
+
+ public class ImageViewCompat {
+ method public static android.content.res.ColorStateList? getImageTintList(android.widget.ImageView);
+ method public static android.graphics.PorterDuff.Mode? getImageTintMode(android.widget.ImageView);
+ method public static void setImageTintList(android.widget.ImageView, android.content.res.ColorStateList?);
+ method public static void setImageTintMode(android.widget.ImageView, android.graphics.PorterDuff.Mode?);
+ }
+
+ public final class ListPopupWindowCompat {
+ method @Deprecated public static android.view.View.OnTouchListener! createDragToOpenListener(Object!, android.view.View!);
+ method public static android.view.View.OnTouchListener? createDragToOpenListener(android.widget.ListPopupWindow, android.view.View);
+ }
+
+ public class ListViewAutoScrollHelper extends androidx.core.widget.AutoScrollHelper {
+ ctor public ListViewAutoScrollHelper(android.widget.ListView);
+ method public boolean canTargetScrollHorizontally(int);
+ method public boolean canTargetScrollVertically(int);
+ method public void scrollTargetBy(int, int);
+ }
+
+ public final class ListViewCompat {
+ method public static boolean canScrollList(android.widget.ListView, int);
+ method public static void scrollListBy(android.widget.ListView, int);
+ }
+
+ public class NestedScrollView extends android.widget.FrameLayout implements androidx.core.view.NestedScrollingChild3 androidx.core.view.NestedScrollingParent3 androidx.core.view.ScrollingView {
+ ctor public NestedScrollView(android.content.Context);
+ ctor public NestedScrollView(android.content.Context, android.util.AttributeSet?);
+ ctor public NestedScrollView(android.content.Context, android.util.AttributeSet?, int);
+ method public boolean arrowScroll(int);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeHorizontalScrollExtent();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeHorizontalScrollOffset();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeHorizontalScrollRange();
+ method protected int computeScrollDeltaToGetChildRectOnScreen(android.graphics.Rect!);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeVerticalScrollExtent();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeVerticalScrollOffset();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeVerticalScrollRange();
+ method public boolean dispatchNestedPreScroll(int, int, int[]!, int[]!, int);
+ method public void dispatchNestedScroll(int, int, int, int, int[]?, int, int[]);
+ method public boolean dispatchNestedScroll(int, int, int, int, int[]!, int);
+ method public boolean executeKeyEvent(android.view.KeyEvent);
+ method public void fling(int);
+ method public boolean fullScroll(int);
+ method public int getMaxScrollAmount();
+ method public boolean hasNestedScrollingParent(int);
+ method public boolean isFillViewport();
+ method public boolean isSmoothScrollingEnabled();
+ method public void onAttachedToWindow();
+ method public void onNestedPreScroll(android.view.View, int, int, int[], int);
+ method public void onNestedScroll(android.view.View, int, int, int, int, int, int[]);
+ method public void onNestedScroll(android.view.View, int, int, int, int, int);
+ method public void onNestedScrollAccepted(android.view.View, android.view.View, int, int);
+ method public boolean onStartNestedScroll(android.view.View, android.view.View, int, int);
+ method public void onStopNestedScroll(android.view.View, int);
+ method public boolean pageScroll(int);
+ method public void setFillViewport(boolean);
+ method public void setOnScrollChangeListener(androidx.core.widget.NestedScrollView.OnScrollChangeListener?);
+ method public void setSmoothScrollingEnabled(boolean);
+ method public final void smoothScrollBy(int, int);
+ method public final void smoothScrollBy(int, int, int);
+ method public final void smoothScrollTo(int, int);
+ method public final void smoothScrollTo(int, int, int);
+ method public boolean startNestedScroll(int, int);
+ method public void stopNestedScroll(int);
+ }
+
+ public static interface NestedScrollView.OnScrollChangeListener {
+ method public void onScrollChange(androidx.core.widget.NestedScrollView!, int, int, int, int);
+ }
+
+ public final class PopupMenuCompat {
+ method public static android.view.View.OnTouchListener? getDragToOpenListener(Object);
+ }
+
+ public final class PopupWindowCompat {
+ method public static boolean getOverlapAnchor(android.widget.PopupWindow);
+ method public static int getWindowLayoutType(android.widget.PopupWindow);
+ method public static void setOverlapAnchor(android.widget.PopupWindow, boolean);
+ method public static void setWindowLayoutType(android.widget.PopupWindow, int);
+ method public static void showAsDropDown(android.widget.PopupWindow, android.view.View, int, int, int);
+ }
+
+ @Deprecated public final class ScrollerCompat {
+ method @Deprecated public void abortAnimation();
+ method @Deprecated public boolean computeScrollOffset();
+ method @Deprecated public static androidx.core.widget.ScrollerCompat! create(android.content.Context!);
+ method @Deprecated public static androidx.core.widget.ScrollerCompat! create(android.content.Context!, android.view.animation.Interpolator!);
+ method @Deprecated public void fling(int, int, int, int, int, int, int, int);
+ method @Deprecated public void fling(int, int, int, int, int, int, int, int, int, int);
+ method @Deprecated public float getCurrVelocity();
+ method @Deprecated public int getCurrX();
+ method @Deprecated public int getCurrY();
+ method @Deprecated public int getFinalX();
+ method @Deprecated public int getFinalY();
+ method @Deprecated public boolean isFinished();
+ method @Deprecated public boolean isOverScrolled();
+ method @Deprecated public void notifyHorizontalEdgeReached(int, int, int);
+ method @Deprecated public void notifyVerticalEdgeReached(int, int, int);
+ method @Deprecated public boolean springBack(int, int, int, int, int, int);
+ method @Deprecated public void startScroll(int, int, int, int);
+ method @Deprecated public void startScroll(int, int, int, int, int);
+ }
+
+ public final class TextViewCompat {
+ method public static int getAutoSizeMaxTextSize(android.widget.TextView);
+ method public static int getAutoSizeMinTextSize(android.widget.TextView);
+ method public static int getAutoSizeStepGranularity(android.widget.TextView);
+ method public static int[] getAutoSizeTextAvailableSizes(android.widget.TextView);
+ method public static int getAutoSizeTextType(android.widget.TextView);
+ method public static android.content.res.ColorStateList? getCompoundDrawableTintList(android.widget.TextView);
+ method public static android.graphics.PorterDuff.Mode? getCompoundDrawableTintMode(android.widget.TextView);
+ method public static android.graphics.drawable.Drawable![] getCompoundDrawablesRelative(android.widget.TextView);
+ method public static int getFirstBaselineToTopHeight(android.widget.TextView);
+ method public static int getLastBaselineToBottomHeight(android.widget.TextView);
+ method public static int getMaxLines(android.widget.TextView);
+ method public static int getMinLines(android.widget.TextView);
+ method public static androidx.core.text.PrecomputedTextCompat.Params getTextMetricsParams(android.widget.TextView);
+ method public static void setAutoSizeTextTypeUniformWithConfiguration(android.widget.TextView, int, int, int, int) throws java.lang.IllegalArgumentException;
+ method public static void setAutoSizeTextTypeUniformWithPresetSizes(android.widget.TextView, int[], int) throws java.lang.IllegalArgumentException;
+ method public static void setAutoSizeTextTypeWithDefaults(android.widget.TextView, int);
+ method public static void setCompoundDrawableTintList(android.widget.TextView, android.content.res.ColorStateList?);
+ method public static void setCompoundDrawableTintMode(android.widget.TextView, android.graphics.PorterDuff.Mode?);
+ method public static void setCompoundDrawablesRelative(android.widget.TextView, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?);
+ method public static void setCompoundDrawablesRelativeWithIntrinsicBounds(android.widget.TextView, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?);
+ method public static void setCompoundDrawablesRelativeWithIntrinsicBounds(android.widget.TextView, @DrawableRes int, @DrawableRes int, @DrawableRes int, @DrawableRes int);
+ method public static void setCustomSelectionActionModeCallback(android.widget.TextView, android.view.ActionMode.Callback);
+ method public static void setFirstBaselineToTopHeight(android.widget.TextView, @IntRange(from=0) @Px int);
+ method public static void setLastBaselineToBottomHeight(android.widget.TextView, @IntRange(from=0) @Px int);
+ method public static void setLineHeight(android.widget.TextView, @IntRange(from=0) @Px int);
+ method public static void setPrecomputedText(android.widget.TextView, androidx.core.text.PrecomputedTextCompat);
+ method public static void setTextAppearance(android.widget.TextView, @StyleRes int);
+ method public static void setTextMetricsParams(android.widget.TextView, androidx.core.text.PrecomputedTextCompat.Params);
+ field public static final int AUTO_SIZE_TEXT_TYPE_NONE = 0; // 0x0
+ field public static final int AUTO_SIZE_TEXT_TYPE_UNIFORM = 1; // 0x1
+ }
+
+ public interface TintableCompoundButton {
+ method public android.content.res.ColorStateList? getSupportButtonTintList();
+ method public android.graphics.PorterDuff.Mode? getSupportButtonTintMode();
+ method public void setSupportButtonTintList(android.content.res.ColorStateList?);
+ method public void setSupportButtonTintMode(android.graphics.PorterDuff.Mode?);
+ }
+
+ public interface TintableCompoundDrawablesView {
+ method public android.content.res.ColorStateList? getSupportCompoundDrawablesTintList();
+ method public android.graphics.PorterDuff.Mode? getSupportCompoundDrawablesTintMode();
+ method public void setSupportCompoundDrawablesTintList(android.content.res.ColorStateList?);
+ method public void setSupportCompoundDrawablesTintMode(android.graphics.PorterDuff.Mode?);
+ }
+
+}
+
diff --git a/core/core/api/public_plus_experimental_current.txt b/core/core/api/public_plus_experimental_current.txt
index e7149ea..aad528b 100644
--- a/core/core/api/public_plus_experimental_current.txt
+++ b/core/core/api/public_plus_experimental_current.txt
@@ -1938,14 +1938,13 @@
}
public final class DisplayCompat {
- method public static androidx.core.view.DisplayCompat.ModeCompat getMode(android.content.Context, android.view.Display);
method public static androidx.core.view.DisplayCompat.ModeCompat![] getSupportedModes(android.content.Context, android.view.Display);
}
public static final class DisplayCompat.ModeCompat {
method public int getPhysicalHeight();
method public int getPhysicalWidth();
- method @Deprecated public boolean isNative();
+ method public boolean isNative();
method @RequiresApi(android.os.Build.VERSION_CODES.M) public android.view.Display.Mode? toMode();
}
diff --git a/core/core/api/res-1.5.0-beta01.txt b/core/core/api/res-1.5.0-beta01.txt
index 43cbfa4..a609e0a 100644
--- a/core/core/api/res-1.5.0-beta01.txt
+++ b/core/core/api/res-1.5.0-beta01.txt
@@ -6,7 +6,6 @@
attr fontProviderFetchTimeout
attr fontProviderPackage
attr fontProviderQuery
-attr fontProviderSystemFontFamily
attr fontStyle
attr fontVariationSettings
attr fontWeight
diff --git a/core/core/api/res-1.5.0-beta02.txt b/core/core/api/res-1.5.0-beta02.txt
new file mode 100644
index 0000000..43cbfa4
--- /dev/null
+++ b/core/core/api/res-1.5.0-beta02.txt
@@ -0,0 +1,18 @@
+attr alpha
+attr font
+attr fontProviderAuthority
+attr fontProviderCerts
+attr fontProviderFetchStrategy
+attr fontProviderFetchTimeout
+attr fontProviderPackage
+attr fontProviderQuery
+attr fontProviderSystemFontFamily
+attr fontStyle
+attr fontVariationSettings
+attr fontWeight
+attr ttcIndex
+style TextAppearance_Compat_Notification
+style TextAppearance_Compat_Notification_Info
+style TextAppearance_Compat_Notification_Line2
+style TextAppearance_Compat_Notification_Time
+style TextAppearance_Compat_Notification_Title
diff --git a/core/core/api/restricted_1.5.0-beta01.txt b/core/core/api/restricted_1.5.0-beta01.txt
index bc3c425..1bb8297 100644
--- a/core/core/api/restricted_1.5.0-beta01.txt
+++ b/core/core/api/restricted_1.5.0-beta01.txt
@@ -2330,14 +2330,13 @@
}
public final class DisplayCompat {
- method public static androidx.core.view.DisplayCompat.ModeCompat getMode(android.content.Context, android.view.Display);
method public static androidx.core.view.DisplayCompat.ModeCompat![] getSupportedModes(android.content.Context, android.view.Display);
}
public static final class DisplayCompat.ModeCompat {
method public int getPhysicalHeight();
method public int getPhysicalWidth();
- method @Deprecated public boolean isNative();
+ method public boolean isNative();
method @RequiresApi(android.os.Build.VERSION_CODES.M) public android.view.Display.Mode? toMode();
}
diff --git a/core/core/api/restricted_1.5.0-beta02.txt b/core/core/api/restricted_1.5.0-beta02.txt
new file mode 100644
index 0000000..1bb8297
--- /dev/null
+++ b/core/core/api/restricted_1.5.0-beta02.txt
@@ -0,0 +1,3971 @@
+// Signature format: 4.0
+package android.support.v4.os {
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ResultReceiver implements android.os.Parcelable {
+ ctor public ResultReceiver(android.os.Handler!);
+ method public int describeContents();
+ method protected void onReceiveResult(int, android.os.Bundle!);
+ method public void send(int, android.os.Bundle!);
+ method public void writeToParcel(android.os.Parcel!, int);
+ field public static final android.os.Parcelable.Creator<android.support.v4.os.ResultReceiver!>! CREATOR;
+ }
+
+}
+
+package androidx.core.accessibilityservice {
+
+ public final class AccessibilityServiceInfoCompat {
+ method public static String capabilityToString(int);
+ method public static String feedbackTypeToString(int);
+ method public static String? flagToString(int);
+ method public static int getCapabilities(android.accessibilityservice.AccessibilityServiceInfo);
+ method public static String? loadDescription(android.accessibilityservice.AccessibilityServiceInfo, android.content.pm.PackageManager);
+ field public static final int CAPABILITY_CAN_FILTER_KEY_EVENTS = 8; // 0x8
+ field public static final int CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 4; // 0x4
+ field public static final int CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION = 2; // 0x2
+ field public static final int CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT = 1; // 0x1
+ field public static final int FEEDBACK_ALL_MASK = -1; // 0xffffffff
+ field public static final int FEEDBACK_BRAILLE = 32; // 0x20
+ field public static final int FLAG_INCLUDE_NOT_IMPORTANT_VIEWS = 2; // 0x2
+ field public static final int FLAG_REPORT_VIEW_IDS = 16; // 0x10
+ field public static final int FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 8; // 0x8
+ field public static final int FLAG_REQUEST_FILTER_KEY_EVENTS = 32; // 0x20
+ field public static final int FLAG_REQUEST_TOUCH_EXPLORATION_MODE = 4; // 0x4
+ }
+
+}
+
+package androidx.core.app {
+
+ public class ActivityCompat extends androidx.core.content.ContextCompat {
+ ctor protected ActivityCompat();
+ method public static void finishAffinity(android.app.Activity);
+ method public static void finishAfterTransition(android.app.Activity);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static androidx.core.app.ActivityCompat.PermissionCompatDelegate! getPermissionCompatDelegate();
+ method public static android.net.Uri? getReferrer(android.app.Activity);
+ method @Deprecated public static boolean invalidateOptionsMenu(android.app.Activity!);
+ method public static void postponeEnterTransition(android.app.Activity);
+ method public static void recreate(android.app.Activity);
+ method public static androidx.core.view.DragAndDropPermissionsCompat? requestDragAndDropPermissions(android.app.Activity!, android.view.DragEvent!);
+ method public static void requestPermissions(android.app.Activity, String![], @IntRange(from=0) int);
+ method public static <T extends android.view.View> T requireViewById(android.app.Activity, @IdRes int);
+ method public static void setEnterSharedElementCallback(android.app.Activity, androidx.core.app.SharedElementCallback?);
+ method public static void setExitSharedElementCallback(android.app.Activity, androidx.core.app.SharedElementCallback?);
+ method public static void setLocusContext(android.app.Activity, androidx.core.content.LocusIdCompat?, android.os.Bundle?);
+ method public static void setPermissionCompatDelegate(androidx.core.app.ActivityCompat.PermissionCompatDelegate?);
+ method public static boolean shouldShowRequestPermissionRationale(android.app.Activity, String);
+ method public static void startActivityForResult(android.app.Activity, android.content.Intent, int, android.os.Bundle?);
+ method public static void startIntentSenderForResult(android.app.Activity, android.content.IntentSender, int, android.content.Intent?, int, int, int, android.os.Bundle?) throws android.content.IntentSender.SendIntentException;
+ method public static void startPostponedEnterTransition(android.app.Activity);
+ }
+
+ public static interface ActivityCompat.OnRequestPermissionsResultCallback {
+ method public void onRequestPermissionsResult(int, String![], int[]);
+ }
+
+ public static interface ActivityCompat.PermissionCompatDelegate {
+ method public boolean onActivityResult(android.app.Activity, @IntRange(from=0) int, int, android.content.Intent?);
+ method public boolean requestPermissions(android.app.Activity, String![], @IntRange(from=0) int);
+ }
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static interface ActivityCompat.RequestPermissionsRequestCodeValidator {
+ method public void validateRequestPermissionsRequestCode(int);
+ }
+
+ public final class ActivityManagerCompat {
+ method public static boolean isLowRamDevice(android.app.ActivityManager);
+ }
+
+ public class ActivityOptionsCompat {
+ ctor protected ActivityOptionsCompat();
+ method public android.graphics.Rect? getLaunchBounds();
+ method public static androidx.core.app.ActivityOptionsCompat makeBasic();
+ method public static androidx.core.app.ActivityOptionsCompat makeClipRevealAnimation(android.view.View, int, int, int, int);
+ method public static androidx.core.app.ActivityOptionsCompat makeCustomAnimation(android.content.Context, int, int);
+ method public static androidx.core.app.ActivityOptionsCompat makeScaleUpAnimation(android.view.View, int, int, int, int);
+ method public static androidx.core.app.ActivityOptionsCompat makeSceneTransitionAnimation(android.app.Activity, android.view.View, String);
+ method public static androidx.core.app.ActivityOptionsCompat makeSceneTransitionAnimation(android.app.Activity, androidx.core.util.Pair<android.view.View!,java.lang.String!>!...);
+ method public static androidx.core.app.ActivityOptionsCompat makeTaskLaunchBehind();
+ method public static androidx.core.app.ActivityOptionsCompat makeThumbnailScaleUpAnimation(android.view.View, android.graphics.Bitmap, int, int);
+ method public void requestUsageTimeReport(android.app.PendingIntent);
+ method public androidx.core.app.ActivityOptionsCompat setLaunchBounds(android.graphics.Rect?);
+ method public android.os.Bundle? toBundle();
+ method public void update(androidx.core.app.ActivityOptionsCompat);
+ field public static final String EXTRA_USAGE_TIME_REPORT = "android.activity.usage_time";
+ field public static final String EXTRA_USAGE_TIME_REPORT_PACKAGES = "android.usage_time_packages";
+ }
+
+ public final class AlarmManagerCompat {
+ method public static void setAlarmClock(android.app.AlarmManager, long, android.app.PendingIntent, android.app.PendingIntent);
+ method public static void setAndAllowWhileIdle(android.app.AlarmManager, int, long, android.app.PendingIntent);
+ method public static void setExact(android.app.AlarmManager, int, long, android.app.PendingIntent);
+ method public static void setExactAndAllowWhileIdle(android.app.AlarmManager, int, long, android.app.PendingIntent);
+ }
+
+ @RequiresApi(28) public class AppComponentFactory extends android.app.AppComponentFactory {
+ ctor public AppComponentFactory();
+ method public final android.app.Activity instantiateActivity(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public android.app.Activity instantiateActivityCompat(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public final android.app.Application instantiateApplication(ClassLoader, String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public android.app.Application instantiateApplicationCompat(ClassLoader, String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public final android.content.ContentProvider instantiateProvider(ClassLoader, String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public android.content.ContentProvider instantiateProviderCompat(ClassLoader, String) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public final android.content.BroadcastReceiver instantiateReceiver(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public android.content.BroadcastReceiver instantiateReceiverCompat(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public final android.app.Service instantiateService(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ method public android.app.Service instantiateServiceCompat(ClassLoader, String, android.content.Intent?) throws java.lang.ClassNotFoundException, java.lang.IllegalAccessException, java.lang.InstantiationException;
+ }
+
+ public class AppLaunchChecker {
+ ctor @Deprecated public AppLaunchChecker();
+ method public static boolean hasStartedFromLauncher(android.content.Context);
+ method public static void onActivityCreate(android.app.Activity);
+ }
+
+ public final class AppOpsManagerCompat {
+ method public static int noteOp(android.content.Context, String, int, String);
+ method public static int noteOpNoThrow(android.content.Context, String, int, String);
+ method public static int noteProxyOp(android.content.Context, String, String);
+ method public static int noteProxyOpNoThrow(android.content.Context, String, String);
+ method public static String? permissionToOp(String);
+ field public static final int MODE_ALLOWED = 0; // 0x0
+ field public static final int MODE_DEFAULT = 3; // 0x3
+ field public static final int MODE_ERRORED = 2; // 0x2
+ field public static final int MODE_IGNORED = 1; // 0x1
+ }
+
+ public final class BundleCompat {
+ method public static android.os.IBinder? getBinder(android.os.Bundle, String?);
+ method public static void putBinder(android.os.Bundle, String?, android.os.IBinder?);
+ }
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class ComponentActivity extends android.app.Activity implements androidx.core.view.KeyEventDispatcher.Component androidx.lifecycle.LifecycleOwner {
+ ctor public ComponentActivity();
+ method @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public <T extends androidx.core.app.ComponentActivity.ExtraData> T! getExtraData(Class<T!>!);
+ method public androidx.lifecycle.Lifecycle getLifecycle();
+ method @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void putExtraData(androidx.core.app.ComponentActivity.ExtraData!);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean superDispatchKeyEvent(android.view.KeyEvent!);
+ }
+
+ @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static class ComponentActivity.ExtraData {
+ ctor @Deprecated public ComponentActivity.ExtraData();
+ }
+
+ @RequiresApi(api=28) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class CoreComponentFactory extends android.app.AppComponentFactory {
+ ctor public CoreComponentFactory();
+ }
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static interface CoreComponentFactory.CompatWrapped {
+ method public Object! getWrapper();
+ }
+
+ public class DialogCompat {
+ method public static android.view.View requireViewById(android.app.Dialog, int);
+ }
+
+ public class FrameMetricsAggregator {
+ ctor public FrameMetricsAggregator();
+ ctor public FrameMetricsAggregator(@androidx.core.app.FrameMetricsAggregator.MetricType int);
+ method public void add(android.app.Activity);
+ method public android.util.SparseIntArray![]? getMetrics();
+ method public android.util.SparseIntArray![]? remove(android.app.Activity);
+ method public android.util.SparseIntArray![]? reset();
+ method public android.util.SparseIntArray![]? stop();
+ field public static final int ANIMATION_DURATION = 256; // 0x100
+ field public static final int ANIMATION_INDEX = 8; // 0x8
+ field public static final int COMMAND_DURATION = 32; // 0x20
+ field public static final int COMMAND_INDEX = 5; // 0x5
+ field public static final int DELAY_DURATION = 128; // 0x80
+ field public static final int DELAY_INDEX = 7; // 0x7
+ field public static final int DRAW_DURATION = 8; // 0x8
+ field public static final int DRAW_INDEX = 3; // 0x3
+ field public static final int EVERY_DURATION = 511; // 0x1ff
+ field public static final int INPUT_DURATION = 2; // 0x2
+ field public static final int INPUT_INDEX = 1; // 0x1
+ field public static final int LAYOUT_MEASURE_DURATION = 4; // 0x4
+ field public static final int LAYOUT_MEASURE_INDEX = 2; // 0x2
+ field public static final int SWAP_DURATION = 64; // 0x40
+ field public static final int SWAP_INDEX = 6; // 0x6
+ field public static final int SYNC_DURATION = 16; // 0x10
+ field public static final int SYNC_INDEX = 4; // 0x4
+ field public static final int TOTAL_DURATION = 1; // 0x1
+ field public static final int TOTAL_INDEX = 0; // 0x0
+ }
+
+ @IntDef(flag=true, value={androidx.core.app.FrameMetricsAggregator.TOTAL_DURATION, androidx.core.app.FrameMetricsAggregator.INPUT_DURATION, androidx.core.app.FrameMetricsAggregator.LAYOUT_MEASURE_DURATION, androidx.core.app.FrameMetricsAggregator.DRAW_DURATION, androidx.core.app.FrameMetricsAggregator.SYNC_DURATION, androidx.core.app.FrameMetricsAggregator.COMMAND_DURATION, androidx.core.app.FrameMetricsAggregator.SWAP_DURATION, androidx.core.app.FrameMetricsAggregator.DELAY_DURATION, androidx.core.app.FrameMetricsAggregator.ANIMATION_DURATION, androidx.core.app.FrameMetricsAggregator.EVERY_DURATION}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface FrameMetricsAggregator.MetricType {
+ }
+
+ public abstract class JobIntentService extends android.app.Service {
+ ctor public JobIntentService();
+ method public static void enqueueWork(android.content.Context, Class<?>, int, android.content.Intent);
+ method public static void enqueueWork(android.content.Context, android.content.ComponentName, int, android.content.Intent);
+ method public boolean isStopped();
+ method public android.os.IBinder! onBind(android.content.Intent);
+ method protected abstract void onHandleWork(android.content.Intent);
+ method public boolean onStopCurrentWork();
+ method public void setInterruptIfStopped(boolean);
+ }
+
+ public final class NavUtils {
+ method public static android.content.Intent? getParentActivityIntent(android.app.Activity);
+ method public static android.content.Intent? getParentActivityIntent(android.content.Context, Class<?>) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public static android.content.Intent? getParentActivityIntent(android.content.Context, android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public static String? getParentActivityName(android.app.Activity);
+ method public static String? getParentActivityName(android.content.Context, android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public static void navigateUpFromSameTask(android.app.Activity);
+ method public static void navigateUpTo(android.app.Activity, android.content.Intent);
+ method public static boolean shouldUpRecreateTask(android.app.Activity, android.content.Intent);
+ field public static final String PARENT_ACTIVITY = "android.support.PARENT_ACTIVITY";
+ }
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface NotificationBuilderWithBuilderAccessor {
+ method public android.app.Notification.Builder! getBuilder();
+ }
+
+ public class NotificationChannelCompat {
+ method public boolean canBubble();
+ method public boolean canBypassDnd();
+ method public boolean canShowBadge();
+ method public android.media.AudioAttributes? getAudioAttributes();
+ method public String? getConversationId();
+ method public String? getDescription();
+ method public String? getGroup();
+ method public String getId();
+ method public int getImportance();
+ method public int getLightColor();
+ method @androidx.core.app.NotificationCompat.NotificationVisibility public int getLockscreenVisibility();
+ method public CharSequence? getName();
+ method public String? getParentChannelId();
+ method public android.net.Uri? getSound();
+ method public long[]? getVibrationPattern();
+ method public boolean isImportantConversation();
+ method public boolean shouldShowLights();
+ method public boolean shouldVibrate();
+ method public androidx.core.app.NotificationChannelCompat.Builder toBuilder();
+ field public static final String DEFAULT_CHANNEL_ID = "miscellaneous";
+ }
+
+ public static class NotificationChannelCompat.Builder {
+ ctor public NotificationChannelCompat.Builder(String, int);
+ method public androidx.core.app.NotificationChannelCompat build();
+ method public androidx.core.app.NotificationChannelCompat.Builder setConversationId(String, String);
+ method public androidx.core.app.NotificationChannelCompat.Builder setDescription(String?);
+ method public androidx.core.app.NotificationChannelCompat.Builder setGroup(String?);
+ method public androidx.core.app.NotificationChannelCompat.Builder setImportance(int);
+ method public androidx.core.app.NotificationChannelCompat.Builder setLightColor(int);
+ method public androidx.core.app.NotificationChannelCompat.Builder setLightsEnabled(boolean);
+ method public androidx.core.app.NotificationChannelCompat.Builder setName(CharSequence?);
+ method public androidx.core.app.NotificationChannelCompat.Builder setShowBadge(boolean);
+ method public androidx.core.app.NotificationChannelCompat.Builder setSound(android.net.Uri?, android.media.AudioAttributes?);
+ method public androidx.core.app.NotificationChannelCompat.Builder setVibrationEnabled(boolean);
+ method public androidx.core.app.NotificationChannelCompat.Builder setVibrationPattern(long[]?);
+ }
+
+ public class NotificationChannelGroupCompat {
+ method public java.util.List<androidx.core.app.NotificationChannelCompat!> getChannels();
+ method public String? getDescription();
+ method public String getId();
+ method public CharSequence? getName();
+ method public boolean isBlocked();
+ method public androidx.core.app.NotificationChannelGroupCompat.Builder toBuilder();
+ }
+
+ public static class NotificationChannelGroupCompat.Builder {
+ ctor public NotificationChannelGroupCompat.Builder(String);
+ method public androidx.core.app.NotificationChannelGroupCompat build();
+ method public androidx.core.app.NotificationChannelGroupCompat.Builder setDescription(String?);
+ method public androidx.core.app.NotificationChannelGroupCompat.Builder setName(CharSequence?);
+ }
+
+ public class NotificationCompat {
+ ctor @Deprecated public NotificationCompat();
+ method public static androidx.core.app.NotificationCompat.Action? getAction(android.app.Notification, int);
+ method public static int getActionCount(android.app.Notification);
+ method public static boolean getAllowSystemGeneratedContextualActions(android.app.Notification);
+ method public static boolean getAutoCancel(android.app.Notification);
+ method public static int getBadgeIconType(android.app.Notification);
+ method public static androidx.core.app.NotificationCompat.BubbleMetadata? getBubbleMetadata(android.app.Notification);
+ method public static String? getCategory(android.app.Notification);
+ method public static String? getChannelId(android.app.Notification);
+ method public static int getColor(android.app.Notification);
+ method @RequiresApi(19) public static CharSequence? getContentInfo(android.app.Notification);
+ method @RequiresApi(19) public static CharSequence? getContentText(android.app.Notification);
+ method @RequiresApi(19) public static CharSequence? getContentTitle(android.app.Notification);
+ method public static android.os.Bundle? getExtras(android.app.Notification);
+ method public static String? getGroup(android.app.Notification);
+ method @androidx.core.app.NotificationCompat.GroupAlertBehavior public static int getGroupAlertBehavior(android.app.Notification);
+ method @RequiresApi(21) public static java.util.List<androidx.core.app.NotificationCompat.Action!> getInvisibleActions(android.app.Notification);
+ method public static boolean getLocalOnly(android.app.Notification);
+ method public static androidx.core.content.LocusIdCompat? getLocusId(android.app.Notification);
+ method public static boolean getOngoing(android.app.Notification);
+ method public static boolean getOnlyAlertOnce(android.app.Notification);
+ method public static java.util.List<androidx.core.app.Person!> getPeople(android.app.Notification);
+ method public static android.app.Notification? getPublicVersion(android.app.Notification);
+ method public static CharSequence? getSettingsText(android.app.Notification);
+ method public static String? getShortcutId(android.app.Notification);
+ method @RequiresApi(19) public static boolean getShowWhen(android.app.Notification);
+ method public static String? getSortKey(android.app.Notification);
+ method @RequiresApi(19) public static CharSequence? getSubText(android.app.Notification);
+ method public static long getTimeoutAfter(android.app.Notification);
+ method @RequiresApi(19) public static boolean getUsesChronometer(android.app.Notification);
+ method @androidx.core.app.NotificationCompat.NotificationVisibility public static int getVisibility(android.app.Notification);
+ method public static boolean isGroupSummary(android.app.Notification);
+ field public static final int BADGE_ICON_LARGE = 2; // 0x2
+ field public static final int BADGE_ICON_NONE = 0; // 0x0
+ field public static final int BADGE_ICON_SMALL = 1; // 0x1
+ field public static final String CATEGORY_ALARM = "alarm";
+ field public static final String CATEGORY_CALL = "call";
+ field public static final String CATEGORY_EMAIL = "email";
+ field public static final String CATEGORY_ERROR = "err";
+ field public static final String CATEGORY_EVENT = "event";
+ field public static final String CATEGORY_LOCATION_SHARING = "location_sharing";
+ field public static final String CATEGORY_MESSAGE = "msg";
+ field public static final String CATEGORY_MISSED_CALL = "missed_call";
+ field public static final String CATEGORY_NAVIGATION = "navigation";
+ field public static final String CATEGORY_PROGRESS = "progress";
+ field public static final String CATEGORY_PROMO = "promo";
+ field public static final String CATEGORY_RECOMMENDATION = "recommendation";
+ field public static final String CATEGORY_REMINDER = "reminder";
+ field public static final String CATEGORY_SERVICE = "service";
+ field public static final String CATEGORY_SOCIAL = "social";
+ field public static final String CATEGORY_STATUS = "status";
+ field public static final String CATEGORY_STOPWATCH = "stopwatch";
+ field public static final String CATEGORY_SYSTEM = "sys";
+ field public static final String CATEGORY_TRANSPORT = "transport";
+ field public static final String CATEGORY_WORKOUT = "workout";
+ field @ColorInt public static final int COLOR_DEFAULT = 0; // 0x0
+ field public static final int DEFAULT_ALL = -1; // 0xffffffff
+ field public static final int DEFAULT_LIGHTS = 4; // 0x4
+ field public static final int DEFAULT_SOUND = 1; // 0x1
+ field public static final int DEFAULT_VIBRATE = 2; // 0x2
+ field public static final String EXTRA_AUDIO_CONTENTS_URI = "android.audioContents";
+ field public static final String EXTRA_BACKGROUND_IMAGE_URI = "android.backgroundImageUri";
+ field public static final String EXTRA_BIG_TEXT = "android.bigText";
+ field public static final String EXTRA_CHANNEL_GROUP_ID = "android.intent.extra.CHANNEL_GROUP_ID";
+ field public static final String EXTRA_CHANNEL_ID = "android.intent.extra.CHANNEL_ID";
+ field public static final String EXTRA_CHRONOMETER_COUNT_DOWN = "android.chronometerCountDown";
+ field public static final String EXTRA_COLORIZED = "android.colorized";
+ field public static final String EXTRA_COMPACT_ACTIONS = "android.compactActions";
+ field public static final String EXTRA_COMPAT_TEMPLATE = "androidx.core.app.extra.COMPAT_TEMPLATE";
+ field public static final String EXTRA_CONVERSATION_TITLE = "android.conversationTitle";
+ field public static final String EXTRA_HIDDEN_CONVERSATION_TITLE = "android.hiddenConversationTitle";
+ field public static final String EXTRA_HISTORIC_MESSAGES = "android.messages.historic";
+ field public static final String EXTRA_INFO_TEXT = "android.infoText";
+ field public static final String EXTRA_IS_GROUP_CONVERSATION = "android.isGroupConversation";
+ field public static final String EXTRA_LARGE_ICON = "android.largeIcon";
+ field public static final String EXTRA_LARGE_ICON_BIG = "android.largeIcon.big";
+ field public static final String EXTRA_MEDIA_SESSION = "android.mediaSession";
+ field public static final String EXTRA_MESSAGES = "android.messages";
+ field public static final String EXTRA_MESSAGING_STYLE_USER = "android.messagingStyleUser";
+ field public static final String EXTRA_NOTIFICATION_ID = "android.intent.extra.NOTIFICATION_ID";
+ field public static final String EXTRA_NOTIFICATION_TAG = "android.intent.extra.NOTIFICATION_TAG";
+ field @Deprecated public static final String EXTRA_PEOPLE = "android.people";
+ field public static final String EXTRA_PEOPLE_LIST = "android.people.list";
+ field public static final String EXTRA_PICTURE = "android.picture";
+ field public static final String EXTRA_PROGRESS = "android.progress";
+ field public static final String EXTRA_PROGRESS_INDETERMINATE = "android.progressIndeterminate";
+ field public static final String EXTRA_PROGRESS_MAX = "android.progressMax";
+ field public static final String EXTRA_REMOTE_INPUT_HISTORY = "android.remoteInputHistory";
+ field public static final String EXTRA_SELF_DISPLAY_NAME = "android.selfDisplayName";
+ field public static final String EXTRA_SHOW_CHRONOMETER = "android.showChronometer";
+ field public static final String EXTRA_SHOW_WHEN = "android.showWhen";
+ field public static final String EXTRA_SMALL_ICON = "android.icon";
+ field public static final String EXTRA_SUB_TEXT = "android.subText";
+ field public static final String EXTRA_SUMMARY_TEXT = "android.summaryText";
+ field public static final String EXTRA_TEMPLATE = "android.template";
+ field public static final String EXTRA_TEXT = "android.text";
+ field public static final String EXTRA_TEXT_LINES = "android.textLines";
+ field public static final String EXTRA_TITLE = "android.title";
+ field public static final String EXTRA_TITLE_BIG = "android.title.big";
+ field public static final int FLAG_AUTO_CANCEL = 16; // 0x10
+ field public static final int FLAG_BUBBLE = 4096; // 0x1000
+ field public static final int FLAG_FOREGROUND_SERVICE = 64; // 0x40
+ field public static final int FLAG_GROUP_SUMMARY = 512; // 0x200
+ field @Deprecated public static final int FLAG_HIGH_PRIORITY = 128; // 0x80
+ field public static final int FLAG_INSISTENT = 4; // 0x4
+ field public static final int FLAG_LOCAL_ONLY = 256; // 0x100
+ field public static final int FLAG_NO_CLEAR = 32; // 0x20
+ field public static final int FLAG_ONGOING_EVENT = 2; // 0x2
+ field public static final int FLAG_ONLY_ALERT_ONCE = 8; // 0x8
+ field public static final int FLAG_SHOW_LIGHTS = 1; // 0x1
+ field public static final int GROUP_ALERT_ALL = 0; // 0x0
+ field public static final int GROUP_ALERT_CHILDREN = 2; // 0x2
+ field public static final int GROUP_ALERT_SUMMARY = 1; // 0x1
+ field public static final String GROUP_KEY_SILENT = "silent";
+ field public static final String INTENT_CATEGORY_NOTIFICATION_PREFERENCES = "android.intent.category.NOTIFICATION_PREFERENCES";
+ field public static final int PRIORITY_DEFAULT = 0; // 0x0
+ field public static final int PRIORITY_HIGH = 1; // 0x1
+ field public static final int PRIORITY_LOW = -1; // 0xffffffff
+ field public static final int PRIORITY_MAX = 2; // 0x2
+ field public static final int PRIORITY_MIN = -2; // 0xfffffffe
+ field public static final int STREAM_DEFAULT = -1; // 0xffffffff
+ field public static final int VISIBILITY_PRIVATE = 0; // 0x0
+ field public static final int VISIBILITY_PUBLIC = 1; // 0x1
+ field public static final int VISIBILITY_SECRET = -1; // 0xffffffff
+ }
+
+ public static class NotificationCompat.Action {
+ ctor public NotificationCompat.Action(int, CharSequence?, android.app.PendingIntent?);
+ ctor public NotificationCompat.Action(androidx.core.graphics.drawable.IconCompat?, CharSequence?, android.app.PendingIntent?);
+ method public android.app.PendingIntent? getActionIntent();
+ method public boolean getAllowGeneratedReplies();
+ method public androidx.core.app.RemoteInput![]? getDataOnlyRemoteInputs();
+ method public android.os.Bundle getExtras();
+ method @Deprecated public int getIcon();
+ method public androidx.core.graphics.drawable.IconCompat? getIconCompat();
+ method public androidx.core.app.RemoteInput![]? getRemoteInputs();
+ method @androidx.core.app.NotificationCompat.Action.SemanticAction public int getSemanticAction();
+ method public boolean getShowsUserInterface();
+ method public CharSequence? getTitle();
+ method public boolean isContextual();
+ field public static final int SEMANTIC_ACTION_ARCHIVE = 5; // 0x5
+ field public static final int SEMANTIC_ACTION_CALL = 10; // 0xa
+ field public static final int SEMANTIC_ACTION_DELETE = 4; // 0x4
+ field public static final int SEMANTIC_ACTION_MARK_AS_READ = 2; // 0x2
+ field public static final int SEMANTIC_ACTION_MARK_AS_UNREAD = 3; // 0x3
+ field public static final int SEMANTIC_ACTION_MUTE = 6; // 0x6
+ field public static final int SEMANTIC_ACTION_NONE = 0; // 0x0
+ field public static final int SEMANTIC_ACTION_REPLY = 1; // 0x1
+ field public static final int SEMANTIC_ACTION_THUMBS_DOWN = 9; // 0x9
+ field public static final int SEMANTIC_ACTION_THUMBS_UP = 8; // 0x8
+ field public static final int SEMANTIC_ACTION_UNMUTE = 7; // 0x7
+ field public android.app.PendingIntent! actionIntent;
+ field @Deprecated public int icon;
+ field public CharSequence! title;
+ }
+
+ public static final class NotificationCompat.Action.Builder {
+ ctor public NotificationCompat.Action.Builder(androidx.core.graphics.drawable.IconCompat?, CharSequence?, android.app.PendingIntent?);
+ ctor public NotificationCompat.Action.Builder(int, CharSequence?, android.app.PendingIntent?);
+ ctor public NotificationCompat.Action.Builder(androidx.core.app.NotificationCompat.Action);
+ method public androidx.core.app.NotificationCompat.Action.Builder addExtras(android.os.Bundle?);
+ method public androidx.core.app.NotificationCompat.Action.Builder addRemoteInput(androidx.core.app.RemoteInput?);
+ method public androidx.core.app.NotificationCompat.Action build();
+ method public androidx.core.app.NotificationCompat.Action.Builder extend(androidx.core.app.NotificationCompat.Action.Extender);
+ method @RequiresApi(19) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static androidx.core.app.NotificationCompat.Action.Builder fromAndroidAction(android.app.Notification.Action);
+ method public android.os.Bundle getExtras();
+ method public androidx.core.app.NotificationCompat.Action.Builder setAllowGeneratedReplies(boolean);
+ method public androidx.core.app.NotificationCompat.Action.Builder setContextual(boolean);
+ method public androidx.core.app.NotificationCompat.Action.Builder setSemanticAction(@androidx.core.app.NotificationCompat.Action.SemanticAction int);
+ method public androidx.core.app.NotificationCompat.Action.Builder setShowsUserInterface(boolean);
+ }
+
+ public static interface NotificationCompat.Action.Extender {
+ method public androidx.core.app.NotificationCompat.Action.Builder extend(androidx.core.app.NotificationCompat.Action.Builder);
+ }
+
+ @IntDef({androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_NONE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_REPLY, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_MARK_AS_READ, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_MARK_AS_UNREAD, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_DELETE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_ARCHIVE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_MUTE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_UNMUTE, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_THUMBS_UP, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_THUMBS_DOWN, androidx.core.app.NotificationCompat.Action.SEMANTIC_ACTION_CALL}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface NotificationCompat.Action.SemanticAction {
+ }
+
+ public static final class NotificationCompat.Action.WearableExtender implements androidx.core.app.NotificationCompat.Action.Extender {
+ ctor public NotificationCompat.Action.WearableExtender();
+ ctor public NotificationCompat.Action.WearableExtender(androidx.core.app.NotificationCompat.Action);
+ method public androidx.core.app.NotificationCompat.Action.WearableExtender clone();
+ method public androidx.core.app.NotificationCompat.Action.Builder extend(androidx.core.app.NotificationCompat.Action.Builder);
+ method @Deprecated public CharSequence? getCancelLabel();
+ method @Deprecated public CharSequence? getConfirmLabel();
+ method public boolean getHintDisplayActionInline();
+ method public boolean getHintLaunchesActivity();
+ method @Deprecated public CharSequence? getInProgressLabel();
+ method public boolean isAvailableOffline();
+ method public androidx.core.app.NotificationCompat.Action.WearableExtender setAvailableOffline(boolean);
+ method @Deprecated public androidx.core.app.NotificationCompat.Action.WearableExtender setCancelLabel(CharSequence?);
+ method @Deprecated public androidx.core.app.NotificationCompat.Action.WearableExtender setConfirmLabel(CharSequence?);
+ method public androidx.core.app.NotificationCompat.Action.WearableExtender setHintDisplayActionInline(boolean);
+ method public androidx.core.app.NotificationCompat.Action.WearableExtender setHintLaunchesActivity(boolean);
+ method @Deprecated public androidx.core.app.NotificationCompat.Action.WearableExtender setInProgressLabel(CharSequence?);
+ }
+
+ @IntDef({androidx.core.app.NotificationCompat.BADGE_ICON_NONE, androidx.core.app.NotificationCompat.BADGE_ICON_SMALL, androidx.core.app.NotificationCompat.BADGE_ICON_LARGE}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface NotificationCompat.BadgeIconType {
+ }
+
+ public static class NotificationCompat.BigPictureStyle extends androidx.core.app.NotificationCompat.Style {
+ ctor public NotificationCompat.BigPictureStyle();
+ ctor public NotificationCompat.BigPictureStyle(androidx.core.app.NotificationCompat.Builder?);
+ method public androidx.core.app.NotificationCompat.BigPictureStyle bigLargeIcon(android.graphics.Bitmap?);
+ method public androidx.core.app.NotificationCompat.BigPictureStyle bigPicture(android.graphics.Bitmap?);
+ method public androidx.core.app.NotificationCompat.BigPictureStyle setBigContentTitle(CharSequence?);
+ method public androidx.core.app.NotificationCompat.BigPictureStyle setSummaryText(CharSequence?);
+ }
+
+ public static class NotificationCompat.BigTextStyle extends androidx.core.app.NotificationCompat.Style {
+ ctor public NotificationCompat.BigTextStyle();
+ ctor public NotificationCompat.BigTextStyle(androidx.core.app.NotificationCompat.Builder?);
+ method public androidx.core.app.NotificationCompat.BigTextStyle bigText(CharSequence?);
+ method public androidx.core.app.NotificationCompat.BigTextStyle setBigContentTitle(CharSequence?);
+ method public androidx.core.app.NotificationCompat.BigTextStyle setSummaryText(CharSequence?);
+ }
+
+ public static final class NotificationCompat.BubbleMetadata {
+ method public static androidx.core.app.NotificationCompat.BubbleMetadata? fromPlatform(android.app.Notification.BubbleMetadata?);
+ method public boolean getAutoExpandBubble();
+ method public android.app.PendingIntent? getDeleteIntent();
+ method @Dimension(unit=androidx.annotation.Dimension.DP) public int getDesiredHeight();
+ method @DimenRes public int getDesiredHeightResId();
+ method public androidx.core.graphics.drawable.IconCompat? getIcon();
+ method public android.app.PendingIntent? getIntent();
+ method public String? getShortcutId();
+ method public boolean isNotificationSuppressed();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setFlags(int);
+ method public static android.app.Notification.BubbleMetadata? toPlatform(androidx.core.app.NotificationCompat.BubbleMetadata?);
+ }
+
+ public static final class NotificationCompat.BubbleMetadata.Builder {
+ ctor @Deprecated public NotificationCompat.BubbleMetadata.Builder();
+ ctor @RequiresApi(30) public NotificationCompat.BubbleMetadata.Builder(String);
+ ctor public NotificationCompat.BubbleMetadata.Builder(android.app.PendingIntent, androidx.core.graphics.drawable.IconCompat);
+ method public androidx.core.app.NotificationCompat.BubbleMetadata build();
+ method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setAutoExpandBubble(boolean);
+ method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setDeleteIntent(android.app.PendingIntent?);
+ method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setDesiredHeight(@Dimension(unit=androidx.annotation.Dimension.DP) int);
+ method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setDesiredHeightResId(@DimenRes int);
+ method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setIcon(androidx.core.graphics.drawable.IconCompat);
+ method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setIntent(android.app.PendingIntent);
+ method public androidx.core.app.NotificationCompat.BubbleMetadata.Builder setSuppressNotification(boolean);
+ }
+
+ public static class NotificationCompat.Builder {
+ ctor @RequiresApi(19) public NotificationCompat.Builder(android.content.Context, android.app.Notification);
+ ctor public NotificationCompat.Builder(android.content.Context, String);
+ ctor @Deprecated public NotificationCompat.Builder(android.content.Context);
+ method public androidx.core.app.NotificationCompat.Builder addAction(int, CharSequence?, android.app.PendingIntent?);
+ method public androidx.core.app.NotificationCompat.Builder addAction(androidx.core.app.NotificationCompat.Action?);
+ method public androidx.core.app.NotificationCompat.Builder addExtras(android.os.Bundle?);
+ method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder addInvisibleAction(int, CharSequence?, android.app.PendingIntent?);
+ method @RequiresApi(21) public androidx.core.app.NotificationCompat.Builder addInvisibleAction(androidx.core.app.NotificationCompat.Action?);
+ method @Deprecated public androidx.core.app.NotificationCompat.Builder addPerson(String?);
+ method public androidx.core.app.NotificationCompat.Builder addPerson(androidx.core.app.Person?);
+ method public android.app.Notification build();
+ method public androidx.core.app.NotificationCompat.Builder clearActions();
+ method public androidx.core.app.NotificationCompat.Builder clearInvisibleActions();
+ method public androidx.core.app.NotificationCompat.Builder clearPeople();
+ method public android.widget.RemoteViews? createBigContentView();
+ method public android.widget.RemoteViews? createContentView();
+ method public android.widget.RemoteViews? createHeadsUpContentView();
+ method public androidx.core.app.NotificationCompat.Builder extend(androidx.core.app.NotificationCompat.Extender);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.widget.RemoteViews! getBigContentView();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.core.app.NotificationCompat.BubbleMetadata? getBubbleMetadata();
+ method @ColorInt @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int getColor();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.widget.RemoteViews! getContentView();
+ method public android.os.Bundle getExtras();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.widget.RemoteViews! getHeadsUpContentView();
+ method @Deprecated public android.app.Notification getNotification();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int getPriority();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public long getWhenIfShowing();
+ method protected static CharSequence? limitCharSequenceLength(CharSequence?);
+ method public androidx.core.app.NotificationCompat.Builder setAllowSystemGeneratedContextualActions(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setAutoCancel(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setBadgeIconType(@androidx.core.app.NotificationCompat.BadgeIconType int);
+ method public androidx.core.app.NotificationCompat.Builder setBubbleMetadata(androidx.core.app.NotificationCompat.BubbleMetadata?);
+ method public androidx.core.app.NotificationCompat.Builder setCategory(String?);
+ method public androidx.core.app.NotificationCompat.Builder setChannelId(String);
+ method @RequiresApi(24) public androidx.core.app.NotificationCompat.Builder setChronometerCountDown(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setColor(@ColorInt int);
+ method public androidx.core.app.NotificationCompat.Builder setColorized(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setContent(android.widget.RemoteViews?);
+ method public androidx.core.app.NotificationCompat.Builder setContentInfo(CharSequence?);
+ method public androidx.core.app.NotificationCompat.Builder setContentIntent(android.app.PendingIntent?);
+ method public androidx.core.app.NotificationCompat.Builder setContentText(CharSequence?);
+ method public androidx.core.app.NotificationCompat.Builder setContentTitle(CharSequence?);
+ method public androidx.core.app.NotificationCompat.Builder setCustomBigContentView(android.widget.RemoteViews?);
+ method public androidx.core.app.NotificationCompat.Builder setCustomContentView(android.widget.RemoteViews?);
+ method public androidx.core.app.NotificationCompat.Builder setCustomHeadsUpContentView(android.widget.RemoteViews?);
+ method public androidx.core.app.NotificationCompat.Builder setDefaults(int);
+ method public androidx.core.app.NotificationCompat.Builder setDeleteIntent(android.app.PendingIntent?);
+ method public androidx.core.app.NotificationCompat.Builder setExtras(android.os.Bundle?);
+ method public androidx.core.app.NotificationCompat.Builder setFullScreenIntent(android.app.PendingIntent?, boolean);
+ method public androidx.core.app.NotificationCompat.Builder setGroup(String?);
+ method public androidx.core.app.NotificationCompat.Builder setGroupAlertBehavior(@androidx.core.app.NotificationCompat.GroupAlertBehavior int);
+ method public androidx.core.app.NotificationCompat.Builder setGroupSummary(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setLargeIcon(android.graphics.Bitmap?);
+ method public androidx.core.app.NotificationCompat.Builder setLights(@ColorInt int, int, int);
+ method public androidx.core.app.NotificationCompat.Builder setLocalOnly(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setLocusId(androidx.core.content.LocusIdCompat?);
+ method @Deprecated public androidx.core.app.NotificationCompat.Builder setNotificationSilent();
+ method public androidx.core.app.NotificationCompat.Builder setNumber(int);
+ method public androidx.core.app.NotificationCompat.Builder setOngoing(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setOnlyAlertOnce(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setPriority(int);
+ method public androidx.core.app.NotificationCompat.Builder setProgress(int, int, boolean);
+ method public androidx.core.app.NotificationCompat.Builder setPublicVersion(android.app.Notification?);
+ method public androidx.core.app.NotificationCompat.Builder setRemoteInputHistory(CharSequence![]?);
+ method public androidx.core.app.NotificationCompat.Builder setSettingsText(CharSequence?);
+ method public androidx.core.app.NotificationCompat.Builder setShortcutId(String?);
+ method public androidx.core.app.NotificationCompat.Builder setShortcutInfo(androidx.core.content.pm.ShortcutInfoCompat?);
+ method public androidx.core.app.NotificationCompat.Builder setShowWhen(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setSilent(boolean);
+ method @RequiresApi(23) public androidx.core.app.NotificationCompat.Builder setSmallIcon(androidx.core.graphics.drawable.IconCompat);
+ method public androidx.core.app.NotificationCompat.Builder setSmallIcon(int);
+ method public androidx.core.app.NotificationCompat.Builder setSmallIcon(int, int);
+ method public androidx.core.app.NotificationCompat.Builder setSortKey(String?);
+ method public androidx.core.app.NotificationCompat.Builder setSound(android.net.Uri?);
+ method public androidx.core.app.NotificationCompat.Builder setSound(android.net.Uri?, @androidx.core.app.NotificationCompat.StreamType int);
+ method public androidx.core.app.NotificationCompat.Builder setStyle(androidx.core.app.NotificationCompat.Style?);
+ method public androidx.core.app.NotificationCompat.Builder setSubText(CharSequence?);
+ method public androidx.core.app.NotificationCompat.Builder setTicker(CharSequence?);
+ method @Deprecated public androidx.core.app.NotificationCompat.Builder setTicker(CharSequence?, android.widget.RemoteViews?);
+ method public androidx.core.app.NotificationCompat.Builder setTimeoutAfter(long);
+ method public androidx.core.app.NotificationCompat.Builder setUsesChronometer(boolean);
+ method public androidx.core.app.NotificationCompat.Builder setVibrate(long[]?);
+ method public androidx.core.app.NotificationCompat.Builder setVisibility(@androidx.core.app.NotificationCompat.NotificationVisibility int);
+ method public androidx.core.app.NotificationCompat.Builder setWhen(long);
+ field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public java.util.ArrayList<androidx.core.app.NotificationCompat.Action!>! mActions;
+ field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.content.Context! mContext;
+ field @Deprecated public java.util.ArrayList<java.lang.String!>! mPeople;
+ field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public java.util.ArrayList<androidx.core.app.Person!> mPersonList;
+ }
+
+ public static final class NotificationCompat.CarExtender implements androidx.core.app.NotificationCompat.Extender {
+ ctor public NotificationCompat.CarExtender();
+ ctor public NotificationCompat.CarExtender(android.app.Notification);
+ method public androidx.core.app.NotificationCompat.Builder extend(androidx.core.app.NotificationCompat.Builder);
+ method @ColorInt public int getColor();
+ method public android.graphics.Bitmap? getLargeIcon();
+ method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation? getUnreadConversation();
+ method public androidx.core.app.NotificationCompat.CarExtender setColor(@ColorInt int);
+ method public androidx.core.app.NotificationCompat.CarExtender setLargeIcon(android.graphics.Bitmap?);
+ method @Deprecated public androidx.core.app.NotificationCompat.CarExtender setUnreadConversation(androidx.core.app.NotificationCompat.CarExtender.UnreadConversation?);
+ }
+
+ @Deprecated public static class NotificationCompat.CarExtender.UnreadConversation {
+ method @Deprecated public long getLatestTimestamp();
+ method @Deprecated public String![]? getMessages();
+ method @Deprecated public String? getParticipant();
+ method @Deprecated public String![]? getParticipants();
+ method @Deprecated public android.app.PendingIntent? getReadPendingIntent();
+ method @Deprecated public androidx.core.app.RemoteInput? getRemoteInput();
+ method @Deprecated public android.app.PendingIntent? getReplyPendingIntent();
+ }
+
+ @Deprecated public static class NotificationCompat.CarExtender.UnreadConversation.Builder {
+ ctor @Deprecated public NotificationCompat.CarExtender.UnreadConversation.Builder(String);
+ method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation.Builder addMessage(String?);
+ method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation build();
+ method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation.Builder setLatestTimestamp(long);
+ method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation.Builder setReadPendingIntent(android.app.PendingIntent?);
+ method @Deprecated public androidx.core.app.NotificationCompat.CarExtender.UnreadConversation.Builder setReplyAction(android.app.PendingIntent?, androidx.core.app.RemoteInput?);
+ }
+
+ public static class NotificationCompat.DecoratedCustomViewStyle extends androidx.core.app.NotificationCompat.Style {
+ ctor public NotificationCompat.DecoratedCustomViewStyle();
+ }
+
+ public static interface NotificationCompat.Extender {
+ method public androidx.core.app.NotificationCompat.Builder extend(androidx.core.app.NotificationCompat.Builder);
+ }
+
+ @IntDef({androidx.core.app.NotificationCompat.GROUP_ALERT_ALL, androidx.core.app.NotificationCompat.GROUP_ALERT_SUMMARY, androidx.core.app.NotificationCompat.GROUP_ALERT_CHILDREN}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface NotificationCompat.GroupAlertBehavior {
+ }
+
+ public static class NotificationCompat.InboxStyle extends androidx.core.app.NotificationCompat.Style {
+ ctor public NotificationCompat.InboxStyle();
+ ctor public NotificationCompat.InboxStyle(androidx.core.app.NotificationCompat.Builder?);
+ method public androidx.core.app.NotificationCompat.InboxStyle addLine(CharSequence?);
+ method public androidx.core.app.NotificationCompat.InboxStyle setBigContentTitle(CharSequence?);
+ method public androidx.core.app.NotificationCompat.InboxStyle setSummaryText(CharSequence?);
+ }
+
+ public static class NotificationCompat.MessagingStyle extends androidx.core.app.NotificationCompat.Style {
+ ctor @Deprecated public NotificationCompat.MessagingStyle(CharSequence);
+ ctor public NotificationCompat.MessagingStyle(androidx.core.app.Person);
+ method public androidx.core.app.NotificationCompat.MessagingStyle addHistoricMessage(androidx.core.app.NotificationCompat.MessagingStyle.Message?);
+ method @Deprecated public androidx.core.app.NotificationCompat.MessagingStyle addMessage(CharSequence?, long, CharSequence?);
+ method public androidx.core.app.NotificationCompat.MessagingStyle addMessage(CharSequence?, long, androidx.core.app.Person?);
+ method public androidx.core.app.NotificationCompat.MessagingStyle addMessage(androidx.core.app.NotificationCompat.MessagingStyle.Message?);
+ method public static androidx.core.app.NotificationCompat.MessagingStyle? extractMessagingStyleFromNotification(android.app.Notification);
+ method public CharSequence? getConversationTitle();
+ method public java.util.List<androidx.core.app.NotificationCompat.MessagingStyle.Message!> getHistoricMessages();
+ method public java.util.List<androidx.core.app.NotificationCompat.MessagingStyle.Message!> getMessages();
+ method public androidx.core.app.Person getUser();
+ method @Deprecated public CharSequence? getUserDisplayName();
+ method public boolean isGroupConversation();
+ method public androidx.core.app.NotificationCompat.MessagingStyle setConversationTitle(CharSequence?);
+ method public androidx.core.app.NotificationCompat.MessagingStyle setGroupConversation(boolean);
+ field public static final int MAXIMUM_RETAINED_MESSAGES = 25; // 0x19
+ }
+
+ public static final class NotificationCompat.MessagingStyle.Message {
+ ctor public NotificationCompat.MessagingStyle.Message(CharSequence?, long, androidx.core.app.Person?);
+ ctor @Deprecated public NotificationCompat.MessagingStyle.Message(CharSequence?, long, CharSequence?);
+ method public String? getDataMimeType();
+ method public android.net.Uri? getDataUri();
+ method public android.os.Bundle getExtras();
+ method public androidx.core.app.Person? getPerson();
+ method @Deprecated public CharSequence? getSender();
+ method public CharSequence? getText();
+ method public long getTimestamp();
+ method public androidx.core.app.NotificationCompat.MessagingStyle.Message setData(String?, android.net.Uri?);
+ }
+
+ @IntDef({androidx.core.app.NotificationCompat.VISIBILITY_PUBLIC, androidx.core.app.NotificationCompat.VISIBILITY_PRIVATE, androidx.core.app.NotificationCompat.VISIBILITY_SECRET}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface NotificationCompat.NotificationVisibility {
+ }
+
+ @IntDef({android.media.AudioManager.STREAM_VOICE_CALL, android.media.AudioManager.STREAM_SYSTEM, android.media.AudioManager.STREAM_RING, android.media.AudioManager.STREAM_MUSIC, android.media.AudioManager.STREAM_ALARM, android.media.AudioManager.STREAM_NOTIFICATION, android.media.AudioManager.STREAM_DTMF, android.media.AudioManager.STREAM_ACCESSIBILITY}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface NotificationCompat.StreamType {
+ }
+
+ public abstract static class NotificationCompat.Style {
+ ctor public NotificationCompat.Style();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void addCompatExtras(android.os.Bundle);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void apply(androidx.core.app.NotificationBuilderWithBuilderAccessor!);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.widget.RemoteViews applyStandardTemplate(boolean, int, boolean);
+ method public android.app.Notification? build();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void buildIntoRemoteViews(android.widget.RemoteViews!, android.widget.RemoteViews!);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) protected void clearCompatExtraKeys(android.os.Bundle);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.Bitmap! createColoredBitmap(int, int);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean displayCustomViewInline();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static androidx.core.app.NotificationCompat.Style? extractStyleFromNotification(android.app.Notification);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) protected String? getClassName();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.widget.RemoteViews! makeBigContentView(androidx.core.app.NotificationBuilderWithBuilderAccessor!);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.widget.RemoteViews! makeContentView(androidx.core.app.NotificationBuilderWithBuilderAccessor!);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.widget.RemoteViews! makeHeadsUpContentView(androidx.core.app.NotificationBuilderWithBuilderAccessor!);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) protected void restoreFromCompatExtras(android.os.Bundle);
+ method public void setBuilder(androidx.core.app.NotificationCompat.Builder?);
+ field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) protected androidx.core.app.NotificationCompat.Builder! mBuilder;
+ }
+
+ public static final class NotificationCompat.WearableExtender implements androidx.core.app.NotificationCompat.Extender {
+ ctor public NotificationCompat.WearableExtender();
+ ctor public NotificationCompat.WearableExtender(android.app.Notification);
+ method public androidx.core.app.NotificationCompat.WearableExtender addAction(androidx.core.app.NotificationCompat.Action);
+ method public androidx.core.app.NotificationCompat.WearableExtender addActions(java.util.List<androidx.core.app.NotificationCompat.Action!>);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender addPage(android.app.Notification);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender addPages(java.util.List<android.app.Notification!>);
+ method public androidx.core.app.NotificationCompat.WearableExtender clearActions();
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender clearPages();
+ method public androidx.core.app.NotificationCompat.WearableExtender clone();
+ method public androidx.core.app.NotificationCompat.Builder extend(androidx.core.app.NotificationCompat.Builder);
+ method public java.util.List<androidx.core.app.NotificationCompat.Action!> getActions();
+ method @Deprecated public android.graphics.Bitmap? getBackground();
+ method public String? getBridgeTag();
+ method public int getContentAction();
+ method @Deprecated public int getContentIcon();
+ method @Deprecated public int getContentIconGravity();
+ method public boolean getContentIntentAvailableOffline();
+ method @Deprecated public int getCustomContentHeight();
+ method @Deprecated public int getCustomSizePreset();
+ method public String? getDismissalId();
+ method @Deprecated public android.app.PendingIntent? getDisplayIntent();
+ method @Deprecated public int getGravity();
+ method @Deprecated public boolean getHintAmbientBigPicture();
+ method @Deprecated public boolean getHintAvoidBackgroundClipping();
+ method public boolean getHintContentIntentLaunchesActivity();
+ method @Deprecated public boolean getHintHideIcon();
+ method @Deprecated public int getHintScreenTimeout();
+ method @Deprecated public boolean getHintShowBackgroundOnly();
+ method @Deprecated public java.util.List<android.app.Notification!> getPages();
+ method public boolean getStartScrollBottom();
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setBackground(android.graphics.Bitmap?);
+ method public androidx.core.app.NotificationCompat.WearableExtender setBridgeTag(String?);
+ method public androidx.core.app.NotificationCompat.WearableExtender setContentAction(int);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setContentIcon(int);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setContentIconGravity(int);
+ method public androidx.core.app.NotificationCompat.WearableExtender setContentIntentAvailableOffline(boolean);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setCustomContentHeight(int);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setCustomSizePreset(int);
+ method public androidx.core.app.NotificationCompat.WearableExtender setDismissalId(String?);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setDisplayIntent(android.app.PendingIntent?);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setGravity(int);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setHintAmbientBigPicture(boolean);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setHintAvoidBackgroundClipping(boolean);
+ method public androidx.core.app.NotificationCompat.WearableExtender setHintContentIntentLaunchesActivity(boolean);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setHintHideIcon(boolean);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setHintScreenTimeout(int);
+ method @Deprecated public androidx.core.app.NotificationCompat.WearableExtender setHintShowBackgroundOnly(boolean);
+ method public androidx.core.app.NotificationCompat.WearableExtender setStartScrollBottom(boolean);
+ field @Deprecated public static final int SCREEN_TIMEOUT_LONG = -1; // 0xffffffff
+ field @Deprecated public static final int SCREEN_TIMEOUT_SHORT = 0; // 0x0
+ field @Deprecated public static final int SIZE_DEFAULT = 0; // 0x0
+ field @Deprecated public static final int SIZE_FULL_SCREEN = 5; // 0x5
+ field @Deprecated public static final int SIZE_LARGE = 4; // 0x4
+ field @Deprecated public static final int SIZE_MEDIUM = 3; // 0x3
+ field @Deprecated public static final int SIZE_SMALL = 2; // 0x2
+ field @Deprecated public static final int SIZE_XSMALL = 1; // 0x1
+ field public static final int UNSET_ACTION_INDEX = -1; // 0xffffffff
+ }
+
+ public final class NotificationCompatExtras {
+ field public static final String EXTRA_ACTION_EXTRAS = "android.support.actionExtras";
+ field public static final String EXTRA_GROUP_KEY = "android.support.groupKey";
+ field public static final String EXTRA_GROUP_SUMMARY = "android.support.isGroupSummary";
+ field public static final String EXTRA_LOCAL_ONLY = "android.support.localOnly";
+ field public static final String EXTRA_REMOTE_INPUTS = "android.support.remoteInputs";
+ field public static final String EXTRA_SORT_KEY = "android.support.sortKey";
+ }
+
+ public abstract class NotificationCompatSideChannelService extends android.app.Service {
+ ctor public NotificationCompatSideChannelService();
+ method public abstract void cancel(String!, int, String!);
+ method public abstract void cancelAll(String!);
+ method public abstract void notify(String!, int, String!, android.app.Notification!);
+ method public android.os.IBinder! onBind(android.content.Intent!);
+ }
+
+ public final class NotificationManagerCompat {
+ method public boolean areNotificationsEnabled();
+ method public void cancel(int);
+ method public void cancel(String?, int);
+ method public void cancelAll();
+ method public void createNotificationChannel(android.app.NotificationChannel);
+ method public void createNotificationChannel(androidx.core.app.NotificationChannelCompat);
+ method public void createNotificationChannelGroup(android.app.NotificationChannelGroup);
+ method public void createNotificationChannelGroup(androidx.core.app.NotificationChannelGroupCompat);
+ method public void createNotificationChannelGroups(java.util.List<android.app.NotificationChannelGroup!>);
+ method public void createNotificationChannelGroupsCompat(java.util.List<androidx.core.app.NotificationChannelGroupCompat!>);
+ method public void createNotificationChannels(java.util.List<android.app.NotificationChannel!>);
+ method public void createNotificationChannelsCompat(java.util.List<androidx.core.app.NotificationChannelCompat!>);
+ method public void deleteNotificationChannel(String);
+ method public void deleteNotificationChannelGroup(String);
+ method public void deleteUnlistedNotificationChannels(java.util.Collection<java.lang.String!>);
+ method public static androidx.core.app.NotificationManagerCompat from(android.content.Context);
+ method public static java.util.Set<java.lang.String!> getEnabledListenerPackages(android.content.Context);
+ method public int getImportance();
+ method public android.app.NotificationChannel? getNotificationChannel(String);
+ method public android.app.NotificationChannel? getNotificationChannel(String, String);
+ method public androidx.core.app.NotificationChannelCompat? getNotificationChannelCompat(String);
+ method public androidx.core.app.NotificationChannelCompat? getNotificationChannelCompat(String, String);
+ method public android.app.NotificationChannelGroup? getNotificationChannelGroup(String);
+ method public androidx.core.app.NotificationChannelGroupCompat? getNotificationChannelGroupCompat(String);
+ method public java.util.List<android.app.NotificationChannelGroup!> getNotificationChannelGroups();
+ method public java.util.List<androidx.core.app.NotificationChannelGroupCompat!> getNotificationChannelGroupsCompat();
+ method public java.util.List<android.app.NotificationChannel!> getNotificationChannels();
+ method public java.util.List<androidx.core.app.NotificationChannelCompat!> getNotificationChannelsCompat();
+ method public void notify(int, android.app.Notification);
+ method public void notify(String?, int, android.app.Notification);
+ field public static final String ACTION_BIND_SIDE_CHANNEL = "android.support.BIND_NOTIFICATION_SIDE_CHANNEL";
+ field public static final String EXTRA_USE_SIDE_CHANNEL = "android.support.useSideChannel";
+ field public static final int IMPORTANCE_DEFAULT = 3; // 0x3
+ field public static final int IMPORTANCE_HIGH = 4; // 0x4
+ field public static final int IMPORTANCE_LOW = 2; // 0x2
+ field public static final int IMPORTANCE_MAX = 5; // 0x5
+ field public static final int IMPORTANCE_MIN = 1; // 0x1
+ field public static final int IMPORTANCE_NONE = 0; // 0x0
+ field public static final int IMPORTANCE_UNSPECIFIED = -1000; // 0xfffffc18
+ }
+
+ public class Person {
+ method @RequiresApi(28) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static androidx.core.app.Person fromAndroidPerson(android.app.Person);
+ method public static androidx.core.app.Person fromBundle(android.os.Bundle);
+ method @RequiresApi(22) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static androidx.core.app.Person fromPersistableBundle(android.os.PersistableBundle);
+ method public androidx.core.graphics.drawable.IconCompat? getIcon();
+ method public String? getKey();
+ method public CharSequence? getName();
+ method public String? getUri();
+ method public boolean isBot();
+ method public boolean isImportant();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public String resolveToLegacyUri();
+ method @RequiresApi(28) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.app.Person toAndroidPerson();
+ method public androidx.core.app.Person.Builder toBuilder();
+ method public android.os.Bundle toBundle();
+ method @RequiresApi(22) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.os.PersistableBundle toPersistableBundle();
+ }
+
+ public static class Person.Builder {
+ ctor public Person.Builder();
+ method public androidx.core.app.Person build();
+ method public androidx.core.app.Person.Builder setBot(boolean);
+ method public androidx.core.app.Person.Builder setIcon(androidx.core.graphics.drawable.IconCompat?);
+ method public androidx.core.app.Person.Builder setImportant(boolean);
+ method public androidx.core.app.Person.Builder setKey(String?);
+ method public androidx.core.app.Person.Builder setName(CharSequence?);
+ method public androidx.core.app.Person.Builder setUri(String?);
+ }
+
+ @androidx.versionedparcelable.VersionedParcelize(jetifyAs="android.support.v4.app.RemoteActionCompat") public final class RemoteActionCompat implements androidx.versionedparcelable.VersionedParcelable {
+ ctor public RemoteActionCompat(androidx.core.graphics.drawable.IconCompat, CharSequence, CharSequence, android.app.PendingIntent);
+ ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public RemoteActionCompat();
+ ctor public RemoteActionCompat(androidx.core.app.RemoteActionCompat);
+ method @RequiresApi(26) public static androidx.core.app.RemoteActionCompat createFromRemoteAction(android.app.RemoteAction);
+ method public android.app.PendingIntent getActionIntent();
+ method public CharSequence getContentDescription();
+ method public androidx.core.graphics.drawable.IconCompat getIcon();
+ method public CharSequence getTitle();
+ method public boolean isEnabled();
+ method public void setEnabled(boolean);
+ method public void setShouldShowIcon(boolean);
+ method public boolean shouldShowIcon();
+ method @RequiresApi(26) public android.app.RemoteAction toRemoteAction();
+ field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) @androidx.versionedparcelable.ParcelField(4) public android.app.PendingIntent! mActionIntent;
+ field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) @androidx.versionedparcelable.ParcelField(3) public CharSequence! mContentDescription;
+ field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) @androidx.versionedparcelable.ParcelField(5) public boolean mEnabled;
+ field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) @androidx.versionedparcelable.ParcelField(1) public androidx.core.graphics.drawable.IconCompat! mIcon;
+ field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) @androidx.versionedparcelable.ParcelField(6) public boolean mShouldShowIcon;
+ field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) @androidx.versionedparcelable.ParcelField(2) public CharSequence! mTitle;
+ }
+
+ public final class RemoteInput {
+ method public static void addDataResultToIntent(androidx.core.app.RemoteInput!, android.content.Intent!, java.util.Map<java.lang.String!,android.net.Uri!>!);
+ method public static void addResultsToIntent(androidx.core.app.RemoteInput![]!, android.content.Intent!, android.os.Bundle!);
+ method public boolean getAllowFreeFormInput();
+ method public java.util.Set<java.lang.String!>! getAllowedDataTypes();
+ method public CharSequence![]! getChoices();
+ method public static java.util.Map<java.lang.String!,android.net.Uri!>! getDataResultsFromIntent(android.content.Intent!, String!);
+ method @androidx.core.app.RemoteInput.EditChoicesBeforeSending public int getEditChoicesBeforeSending();
+ method public android.os.Bundle! getExtras();
+ method public CharSequence! getLabel();
+ method public String! getResultKey();
+ method public static android.os.Bundle! getResultsFromIntent(android.content.Intent!);
+ method @androidx.core.app.RemoteInput.Source public static int getResultsSource(android.content.Intent);
+ method public boolean isDataOnly();
+ method public static void setResultsSource(android.content.Intent, @androidx.core.app.RemoteInput.Source int);
+ field public static final int EDIT_CHOICES_BEFORE_SENDING_AUTO = 0; // 0x0
+ field public static final int EDIT_CHOICES_BEFORE_SENDING_DISABLED = 1; // 0x1
+ field public static final int EDIT_CHOICES_BEFORE_SENDING_ENABLED = 2; // 0x2
+ field public static final String EXTRA_RESULTS_DATA = "android.remoteinput.resultsData";
+ field public static final String RESULTS_CLIP_LABEL = "android.remoteinput.results";
+ field public static final int SOURCE_CHOICE = 1; // 0x1
+ field public static final int SOURCE_FREE_FORM_INPUT = 0; // 0x0
+ }
+
+ public static final class RemoteInput.Builder {
+ ctor public RemoteInput.Builder(String);
+ method public androidx.core.app.RemoteInput.Builder addExtras(android.os.Bundle);
+ method public androidx.core.app.RemoteInput build();
+ method public android.os.Bundle getExtras();
+ method public androidx.core.app.RemoteInput.Builder setAllowDataType(String, boolean);
+ method public androidx.core.app.RemoteInput.Builder setAllowFreeFormInput(boolean);
+ method public androidx.core.app.RemoteInput.Builder setChoices(CharSequence![]?);
+ method public androidx.core.app.RemoteInput.Builder setEditChoicesBeforeSending(@androidx.core.app.RemoteInput.EditChoicesBeforeSending int);
+ method public androidx.core.app.RemoteInput.Builder setLabel(CharSequence?);
+ }
+
+ @IntDef({androidx.core.app.RemoteInput.EDIT_CHOICES_BEFORE_SENDING_AUTO, androidx.core.app.RemoteInput.EDIT_CHOICES_BEFORE_SENDING_DISABLED, androidx.core.app.RemoteInput.EDIT_CHOICES_BEFORE_SENDING_ENABLED}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface RemoteInput.EditChoicesBeforeSending {
+ }
+
+ @IntDef({androidx.core.app.RemoteInput.SOURCE_FREE_FORM_INPUT, androidx.core.app.RemoteInput.SOURCE_CHOICE}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface RemoteInput.Source {
+ }
+
+ public final class ServiceCompat {
+ method public static void stopForeground(android.app.Service, @androidx.core.app.ServiceCompat.StopForegroundFlags int);
+ field public static final int START_STICKY = 1; // 0x1
+ field public static final int STOP_FOREGROUND_DETACH = 2; // 0x2
+ field public static final int STOP_FOREGROUND_REMOVE = 1; // 0x1
+ }
+
+ @IntDef(flag=true, value={androidx.core.app.ServiceCompat.STOP_FOREGROUND_REMOVE, androidx.core.app.ServiceCompat.STOP_FOREGROUND_DETACH}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ServiceCompat.StopForegroundFlags {
+ }
+
+ public final class ShareCompat {
+ method @Deprecated public static void configureMenuItem(android.view.MenuItem, androidx.core.app.ShareCompat.IntentBuilder);
+ method @Deprecated public static void configureMenuItem(android.view.Menu, @IdRes int, androidx.core.app.ShareCompat.IntentBuilder);
+ method public static android.content.ComponentName? getCallingActivity(android.app.Activity);
+ method public static String? getCallingPackage(android.app.Activity);
+ field public static final String EXTRA_CALLING_ACTIVITY = "androidx.core.app.EXTRA_CALLING_ACTIVITY";
+ field public static final String EXTRA_CALLING_ACTIVITY_INTEROP = "android.support.v4.app.EXTRA_CALLING_ACTIVITY";
+ field public static final String EXTRA_CALLING_PACKAGE = "androidx.core.app.EXTRA_CALLING_PACKAGE";
+ field public static final String EXTRA_CALLING_PACKAGE_INTEROP = "android.support.v4.app.EXTRA_CALLING_PACKAGE";
+ }
+
+ public static class ShareCompat.IntentBuilder {
+ ctor public ShareCompat.IntentBuilder(android.content.Context);
+ method public androidx.core.app.ShareCompat.IntentBuilder addEmailBcc(String);
+ method public androidx.core.app.ShareCompat.IntentBuilder addEmailBcc(String![]);
+ method public androidx.core.app.ShareCompat.IntentBuilder addEmailCc(String);
+ method public androidx.core.app.ShareCompat.IntentBuilder addEmailCc(String![]);
+ method public androidx.core.app.ShareCompat.IntentBuilder addEmailTo(String);
+ method public androidx.core.app.ShareCompat.IntentBuilder addEmailTo(String![]);
+ method public androidx.core.app.ShareCompat.IntentBuilder addStream(android.net.Uri);
+ method public android.content.Intent createChooserIntent();
+ method @Deprecated public static androidx.core.app.ShareCompat.IntentBuilder from(android.app.Activity);
+ method public android.content.Intent getIntent();
+ method public androidx.core.app.ShareCompat.IntentBuilder setChooserTitle(CharSequence?);
+ method public androidx.core.app.ShareCompat.IntentBuilder setChooserTitle(@StringRes int);
+ method public androidx.core.app.ShareCompat.IntentBuilder setEmailBcc(String![]?);
+ method public androidx.core.app.ShareCompat.IntentBuilder setEmailCc(String![]?);
+ method public androidx.core.app.ShareCompat.IntentBuilder setEmailTo(String![]?);
+ method public androidx.core.app.ShareCompat.IntentBuilder setHtmlText(String?);
+ method public androidx.core.app.ShareCompat.IntentBuilder setStream(android.net.Uri?);
+ method public androidx.core.app.ShareCompat.IntentBuilder setSubject(String?);
+ method public androidx.core.app.ShareCompat.IntentBuilder setText(CharSequence?);
+ method public androidx.core.app.ShareCompat.IntentBuilder setType(String?);
+ method public void startChooser();
+ }
+
+ public static class ShareCompat.IntentReader {
+ ctor public ShareCompat.IntentReader(android.app.Activity);
+ ctor public ShareCompat.IntentReader(android.content.Context, android.content.Intent);
+ method @Deprecated public static androidx.core.app.ShareCompat.IntentReader from(android.app.Activity);
+ method public android.content.ComponentName? getCallingActivity();
+ method public android.graphics.drawable.Drawable? getCallingActivityIcon();
+ method public android.graphics.drawable.Drawable? getCallingApplicationIcon();
+ method public CharSequence? getCallingApplicationLabel();
+ method public String? getCallingPackage();
+ method public String![]? getEmailBcc();
+ method public String![]? getEmailCc();
+ method public String![]? getEmailTo();
+ method public String? getHtmlText();
+ method public android.net.Uri? getStream();
+ method public android.net.Uri? getStream(int);
+ method public int getStreamCount();
+ method public String? getSubject();
+ method public CharSequence? getText();
+ method public String? getType();
+ method public boolean isMultipleShare();
+ method public boolean isShareIntent();
+ method public boolean isSingleShare();
+ }
+
+ public abstract class SharedElementCallback {
+ ctor public SharedElementCallback();
+ method public android.os.Parcelable! onCaptureSharedElementSnapshot(android.view.View!, android.graphics.Matrix!, android.graphics.RectF!);
+ method public android.view.View! onCreateSnapshotView(android.content.Context!, android.os.Parcelable!);
+ method public void onMapSharedElements(java.util.List<java.lang.String!>!, java.util.Map<java.lang.String!,android.view.View!>!);
+ method public void onRejectSharedElements(java.util.List<android.view.View!>!);
+ method public void onSharedElementEnd(java.util.List<java.lang.String!>!, java.util.List<android.view.View!>!, java.util.List<android.view.View!>!);
+ method public void onSharedElementStart(java.util.List<java.lang.String!>!, java.util.List<android.view.View!>!, java.util.List<android.view.View!>!);
+ method public void onSharedElementsArrived(java.util.List<java.lang.String!>!, java.util.List<android.view.View!>!, androidx.core.app.SharedElementCallback.OnSharedElementsReadyListener!);
+ }
+
+ public static interface SharedElementCallback.OnSharedElementsReadyListener {
+ method public void onSharedElementsReady();
+ }
+
+ public final class TaskStackBuilder implements java.lang.Iterable<android.content.Intent> {
+ method public androidx.core.app.TaskStackBuilder addNextIntent(android.content.Intent);
+ method public androidx.core.app.TaskStackBuilder addNextIntentWithParentStack(android.content.Intent);
+ method public androidx.core.app.TaskStackBuilder addParentStack(android.app.Activity);
+ method public androidx.core.app.TaskStackBuilder addParentStack(Class<?>);
+ method public androidx.core.app.TaskStackBuilder! addParentStack(android.content.ComponentName!);
+ method public static androidx.core.app.TaskStackBuilder create(android.content.Context);
+ method public android.content.Intent? editIntentAt(int);
+ method @Deprecated public static androidx.core.app.TaskStackBuilder! from(android.content.Context!);
+ method @Deprecated public android.content.Intent! getIntent(int);
+ method public int getIntentCount();
+ method public android.content.Intent![] getIntents();
+ method public android.app.PendingIntent? getPendingIntent(int, int);
+ method public android.app.PendingIntent? getPendingIntent(int, int, android.os.Bundle?);
+ method @Deprecated public java.util.Iterator<android.content.Intent!>! iterator();
+ method public void startActivities();
+ method public void startActivities(android.os.Bundle?);
+ }
+
+ public static interface TaskStackBuilder.SupportParentable {
+ method public android.content.Intent? getSupportParentActivityIntent();
+ }
+
+}
+
+package androidx.core.content {
+
+ public final class ContentProviderCompat {
+ method public static android.content.Context requireContext(android.content.ContentProvider);
+ }
+
+ public final class ContentResolverCompat {
+ method public static android.database.Cursor! query(android.content.ContentResolver!, android.net.Uri!, String![]!, String!, String![]!, String!, androidx.core.os.CancellationSignal!);
+ }
+
+ public class ContextCompat {
+ ctor protected ContextCompat();
+ method public static int checkSelfPermission(android.content.Context, String);
+ method public static android.content.Context? createDeviceProtectedStorageContext(android.content.Context);
+ method public static java.io.File! getCodeCacheDir(android.content.Context);
+ method @ColorInt public static int getColor(android.content.Context, @ColorRes int);
+ method public static android.content.res.ColorStateList? getColorStateList(android.content.Context, @ColorRes int);
+ method public static java.io.File? getDataDir(android.content.Context);
+ method public static android.graphics.drawable.Drawable? getDrawable(android.content.Context, @DrawableRes int);
+ method public static java.io.File![] getExternalCacheDirs(android.content.Context);
+ method public static java.io.File![] getExternalFilesDirs(android.content.Context, String?);
+ method public static java.util.concurrent.Executor! getMainExecutor(android.content.Context!);
+ method public static java.io.File? getNoBackupFilesDir(android.content.Context);
+ method public static java.io.File![] getObbDirs(android.content.Context);
+ method public static <T> T? getSystemService(android.content.Context, Class<T!>);
+ method public static String? getSystemServiceName(android.content.Context, Class<?>);
+ method public static boolean isDeviceProtectedStorage(android.content.Context);
+ method public static boolean startActivities(android.content.Context, android.content.Intent![]);
+ method public static boolean startActivities(android.content.Context, android.content.Intent![], android.os.Bundle?);
+ method public static void startActivity(android.content.Context, android.content.Intent, android.os.Bundle?);
+ method public static void startForegroundService(android.content.Context, android.content.Intent);
+ }
+
+ public class FileProvider extends android.content.ContentProvider {
+ ctor public FileProvider();
+ method public int delete(android.net.Uri, String?, String![]?);
+ method public String! getType(android.net.Uri);
+ method public static android.net.Uri! getUriForFile(android.content.Context, String, java.io.File);
+ method public static android.net.Uri getUriForFile(android.content.Context, String, java.io.File, String);
+ method public android.net.Uri! insert(android.net.Uri, android.content.ContentValues!);
+ method public boolean onCreate();
+ method public android.database.Cursor! query(android.net.Uri, String![]?, String?, String![]?, String?);
+ method public int update(android.net.Uri, android.content.ContentValues!, String?, String![]?);
+ }
+
+ public final class IntentCompat {
+ method public static android.content.Intent makeMainSelectorActivity(String, String);
+ field public static final String ACTION_CREATE_REMINDER = "android.intent.action.CREATE_REMINDER";
+ field public static final String CATEGORY_LEANBACK_LAUNCHER = "android.intent.category.LEANBACK_LAUNCHER";
+ field public static final String EXTRA_HTML_TEXT = "android.intent.extra.HTML_TEXT";
+ field public static final String EXTRA_START_PLAYBACK = "android.intent.extra.START_PLAYBACK";
+ field public static final String EXTRA_TIME = "android.intent.extra.TIME";
+ }
+
+ public final class LocusIdCompat {
+ ctor public LocusIdCompat(String);
+ method public String getId();
+ method @RequiresApi(29) public android.content.LocusId toLocusId();
+ method @RequiresApi(29) public static androidx.core.content.LocusIdCompat toLocusIdCompat(android.content.LocusId);
+ }
+
+ public final class MimeTypeFilter {
+ method public static boolean matches(String?, String);
+ method public static String? matches(String?, String![]);
+ method public static String? matches(String![]?, String);
+ method public static String![] matchesMany(String![]?, String);
+ }
+
+ public final class PermissionChecker {
+ method @androidx.core.content.PermissionChecker.PermissionResult public static int checkCallingOrSelfPermission(android.content.Context, String);
+ method @androidx.core.content.PermissionChecker.PermissionResult public static int checkCallingPermission(android.content.Context, String, String?);
+ method @androidx.core.content.PermissionChecker.PermissionResult public static int checkPermission(android.content.Context, String, int, int, String?);
+ method @androidx.core.content.PermissionChecker.PermissionResult public static int checkSelfPermission(android.content.Context, String);
+ field public static final int PERMISSION_DENIED = -1; // 0xffffffff
+ field public static final int PERMISSION_DENIED_APP_OP = -2; // 0xfffffffe
+ field public static final int PERMISSION_GRANTED = 0; // 0x0
+ }
+
+ @IntDef({androidx.core.content.PermissionChecker.PERMISSION_GRANTED, androidx.core.content.PermissionChecker.PERMISSION_DENIED, androidx.core.content.PermissionChecker.PERMISSION_DENIED_APP_OP}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface PermissionChecker.PermissionResult {
+ }
+
+ @Deprecated public final class SharedPreferencesCompat {
+ }
+
+ @Deprecated public static final class SharedPreferencesCompat.EditorCompat {
+ method @Deprecated public void apply(android.content.SharedPreferences.Editor);
+ method @Deprecated public static androidx.core.content.SharedPreferencesCompat.EditorCompat! getInstance();
+ }
+
+}
+
+package androidx.core.content.pm {
+
+ @Deprecated public final class ActivityInfoCompat {
+ field @Deprecated public static final int CONFIG_UI_MODE = 512; // 0x200
+ }
+
+ public final class PackageInfoCompat {
+ method public static long getLongVersionCode(android.content.pm.PackageInfo);
+ method public static java.util.List<android.content.pm.Signature!> getSignatures(android.content.pm.PackageManager, String) throws android.content.pm.PackageManager.NameNotFoundException;
+ method public static boolean hasSignatures(android.content.pm.PackageManager, String, @Size(min=1) java.util.Map<byte[]!,java.lang.Integer!>, boolean) throws android.content.pm.PackageManager.NameNotFoundException;
+ }
+
+ public final class PermissionInfoCompat {
+ method public static int getProtection(android.content.pm.PermissionInfo);
+ method public static int getProtectionFlags(android.content.pm.PermissionInfo);
+ }
+
+ public class ShortcutInfoCompat {
+ method public android.content.ComponentName? getActivity();
+ method public java.util.Set<java.lang.String!>? getCategories();
+ method public CharSequence? getDisabledMessage();
+ method public int getDisabledReason();
+ method public android.os.PersistableBundle? getExtras();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.core.graphics.drawable.IconCompat! getIcon();
+ method public String getId();
+ method public android.content.Intent getIntent();
+ method public android.content.Intent![] getIntents();
+ method public long getLastChangedTimestamp();
+ method public androidx.core.content.LocusIdCompat? getLocusId();
+ method public CharSequence? getLongLabel();
+ method public String getPackage();
+ method public int getRank();
+ method public CharSequence getShortLabel();
+ method public android.os.UserHandle? getUserHandle();
+ method public boolean hasKeyFieldsOnly();
+ method public boolean isCached();
+ method public boolean isDeclaredInManifest();
+ method public boolean isDynamic();
+ method public boolean isEnabled();
+ method public boolean isImmutable();
+ method public boolean isPinned();
+ method @RequiresApi(25) public android.content.pm.ShortcutInfo! toShortcutInfo();
+ }
+
+ public static class ShortcutInfoCompat.Builder {
+ ctor public ShortcutInfoCompat.Builder(android.content.Context, String);
+ ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public ShortcutInfoCompat.Builder(androidx.core.content.pm.ShortcutInfoCompat);
+ ctor @RequiresApi(25) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public ShortcutInfoCompat.Builder(android.content.Context, android.content.pm.ShortcutInfo);
+ method public androidx.core.content.pm.ShortcutInfoCompat build();
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setActivity(android.content.ComponentName);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setAlwaysBadged();
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setCategories(java.util.Set<java.lang.String!>);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setDisabledMessage(CharSequence);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setExtras(android.os.PersistableBundle);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIcon(androidx.core.graphics.drawable.IconCompat!);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntent(android.content.Intent);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIntents(android.content.Intent![]);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setIsConversation();
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setLocusId(androidx.core.content.LocusIdCompat?);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setLongLabel(CharSequence);
+ method @Deprecated public androidx.core.content.pm.ShortcutInfoCompat.Builder setLongLived();
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setLongLived(boolean);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setPerson(androidx.core.app.Person);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setPersons(androidx.core.app.Person![]);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setRank(int);
+ method public androidx.core.content.pm.ShortcutInfoCompat.Builder setShortLabel(CharSequence);
+ }
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public abstract class ShortcutInfoCompatSaver<T> {
+ ctor public ShortcutInfoCompatSaver();
+ method @AnyThread public abstract T! addShortcuts(java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>!);
+ method @WorkerThread public java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>! getShortcuts() throws java.lang.Exception;
+ method @AnyThread public abstract T! removeAllShortcuts();
+ method @AnyThread public abstract T! removeShortcuts(java.util.List<java.lang.String!>!);
+ }
+
+ public class ShortcutManagerCompat {
+ method public static boolean addDynamicShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
+ method public static android.content.Intent createShortcutResultIntent(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat);
+ method public static void disableShortcuts(android.content.Context, java.util.List<java.lang.String!>, CharSequence?);
+ method public static void enableShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
+ method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getDynamicShortcuts(android.content.Context);
+ method public static int getIconMaxHeight(android.content.Context);
+ method public static int getIconMaxWidth(android.content.Context);
+ method public static int getMaxShortcutCountPerActivity(android.content.Context);
+ method public static java.util.List<androidx.core.content.pm.ShortcutInfoCompat!> getShortcuts(android.content.Context, @androidx.core.content.pm.ShortcutManagerCompat.ShortcutMatchFlags int);
+ method public static boolean isRateLimitingActive(android.content.Context);
+ method public static boolean isRequestPinShortcutSupported(android.content.Context);
+ method public static boolean pushDynamicShortcut(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat);
+ method public static void removeAllDynamicShortcuts(android.content.Context);
+ method public static void removeDynamicShortcuts(android.content.Context, java.util.List<java.lang.String!>);
+ method public static void removeLongLivedShortcuts(android.content.Context, java.util.List<java.lang.String!>);
+ method public static void reportShortcutUsed(android.content.Context, String);
+ method public static boolean requestPinShortcut(android.content.Context, androidx.core.content.pm.ShortcutInfoCompat, android.content.IntentSender?);
+ method public static boolean setDynamicShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
+ method public static boolean updateShortcuts(android.content.Context, java.util.List<androidx.core.content.pm.ShortcutInfoCompat!>);
+ field public static final String EXTRA_SHORTCUT_ID = "android.intent.extra.shortcut.ID";
+ field public static final int FLAG_MATCH_CACHED = 8; // 0x8
+ field public static final int FLAG_MATCH_DYNAMIC = 2; // 0x2
+ field public static final int FLAG_MATCH_MANIFEST = 1; // 0x1
+ field public static final int FLAG_MATCH_PINNED = 4; // 0x4
+ }
+
+ @IntDef(flag=true, value={androidx.core.content.pm.ShortcutManagerCompat.FLAG_MATCH_MANIFEST, androidx.core.content.pm.ShortcutManagerCompat.FLAG_MATCH_DYNAMIC, androidx.core.content.pm.ShortcutManagerCompat.FLAG_MATCH_PINNED, androidx.core.content.pm.ShortcutManagerCompat.FLAG_MATCH_CACHED}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ShortcutManagerCompat.ShortcutMatchFlags {
+ }
+
+}
+
+package androidx.core.content.res {
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class ColorStateListInflaterCompat {
+ method public static android.content.res.ColorStateList createFromXml(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.content.res.Resources.Theme?) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+ method public static android.content.res.ColorStateList createFromXmlInner(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.content.res.Resources.Theme?) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+ method public static android.content.res.ColorStateList? inflate(android.content.res.Resources, @XmlRes int, android.content.res.Resources.Theme?);
+ }
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class ComplexColorCompat {
+ method @ColorInt public int getColor();
+ method public android.graphics.Shader? getShader();
+ method public static androidx.core.content.res.ComplexColorCompat? inflate(android.content.res.Resources, @ColorRes int, android.content.res.Resources.Theme?);
+ method public boolean isGradient();
+ method public boolean isStateful();
+ method public boolean onStateChanged(int[]!);
+ method public void setColor(@ColorInt int);
+ method public boolean willDraw();
+ }
+
+ public final class ConfigurationHelper {
+ method public static int getDensityDpi(android.content.res.Resources);
+ }
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class FontResourcesParserCompat {
+ method public static androidx.core.content.res.FontResourcesParserCompat.FamilyResourceEntry? parse(org.xmlpull.v1.XmlPullParser!, android.content.res.Resources!) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+ method public static java.util.List<java.util.List<byte[]!>!>! readCerts(android.content.res.Resources!, @ArrayRes int);
+ field public static final int FETCH_STRATEGY_ASYNC = 1; // 0x1
+ field public static final int FETCH_STRATEGY_BLOCKING = 0; // 0x0
+ field public static final int INFINITE_TIMEOUT_VALUE = -1; // 0xffffffff
+ }
+
+ public static interface FontResourcesParserCompat.FamilyResourceEntry {
+ }
+
+ @IntDef({androidx.core.content.res.FontResourcesParserCompat.FETCH_STRATEGY_BLOCKING, androidx.core.content.res.FontResourcesParserCompat.FETCH_STRATEGY_ASYNC}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface FontResourcesParserCompat.FetchStrategy {
+ }
+
+ public static final class FontResourcesParserCompat.FontFamilyFilesResourceEntry implements androidx.core.content.res.FontResourcesParserCompat.FamilyResourceEntry {
+ ctor public FontResourcesParserCompat.FontFamilyFilesResourceEntry(androidx.core.content.res.FontResourcesParserCompat.FontFileResourceEntry![]);
+ method public androidx.core.content.res.FontResourcesParserCompat.FontFileResourceEntry![] getEntries();
+ }
+
+ public static final class FontResourcesParserCompat.FontFileResourceEntry {
+ ctor public FontResourcesParserCompat.FontFileResourceEntry(String, int, boolean, String?, int, int);
+ method public String getFileName();
+ method public int getResourceId();
+ method public int getTtcIndex();
+ method public String? getVariationSettings();
+ method public int getWeight();
+ method public boolean isItalic();
+ }
+
+ public static final class FontResourcesParserCompat.ProviderResourceEntry implements androidx.core.content.res.FontResourcesParserCompat.FamilyResourceEntry {
+ ctor public FontResourcesParserCompat.ProviderResourceEntry(androidx.core.provider.FontRequest, @androidx.core.content.res.FontResourcesParserCompat.FetchStrategy int, int);
+ method @androidx.core.content.res.FontResourcesParserCompat.FetchStrategy public int getFetchStrategy();
+ method public androidx.core.provider.FontRequest getRequest();
+ method public int getTimeout();
+ }
+
+ public final class ResourcesCompat {
+ method public static android.graphics.Typeface? getCachedFont(android.content.Context, @FontRes int) throws android.content.res.Resources.NotFoundException;
+ method @ColorInt public static int getColor(android.content.res.Resources, @ColorRes int, android.content.res.Resources.Theme?) throws android.content.res.Resources.NotFoundException;
+ method public static android.content.res.ColorStateList? getColorStateList(android.content.res.Resources, @ColorRes int, android.content.res.Resources.Theme?) throws android.content.res.Resources.NotFoundException;
+ method public static android.graphics.drawable.Drawable? getDrawable(android.content.res.Resources, @DrawableRes int, android.content.res.Resources.Theme?) throws android.content.res.Resources.NotFoundException;
+ method public static android.graphics.drawable.Drawable? getDrawableForDensity(android.content.res.Resources, @DrawableRes int, int, android.content.res.Resources.Theme?) throws android.content.res.Resources.NotFoundException;
+ method public static float getFloat(android.content.res.Resources, @DimenRes int);
+ method public static android.graphics.Typeface? getFont(android.content.Context, @FontRes int) throws android.content.res.Resources.NotFoundException;
+ method public static void getFont(android.content.Context, @FontRes int, androidx.core.content.res.ResourcesCompat.FontCallback, android.os.Handler?) throws android.content.res.Resources.NotFoundException;
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static android.graphics.Typeface! getFont(android.content.Context, @FontRes int, android.util.TypedValue!, int, androidx.core.content.res.ResourcesCompat.FontCallback?) throws android.content.res.Resources.NotFoundException;
+ field @AnyRes public static final int ID_NULL = 0; // 0x0
+ }
+
+ public abstract static class ResourcesCompat.FontCallback {
+ ctor public ResourcesCompat.FontCallback();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final void callbackFailAsync(@androidx.core.provider.FontsContractCompat.FontRequestCallback.FontRequestFailReason int, android.os.Handler?);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final void callbackSuccessAsync(android.graphics.Typeface!, android.os.Handler?);
+ method public abstract void onFontRetrievalFailed(@androidx.core.provider.FontsContractCompat.FontRequestCallback.FontRequestFailReason int);
+ method public abstract void onFontRetrieved(android.graphics.Typeface);
+ }
+
+ public static final class ResourcesCompat.ThemeCompat {
+ method public static void rebase(android.content.res.Resources.Theme);
+ }
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class TypedArrayUtils {
+ method public static int getAttr(android.content.Context, int, int);
+ method public static boolean getBoolean(android.content.res.TypedArray, @StyleableRes int, @StyleableRes int, boolean);
+ method public static android.graphics.drawable.Drawable? getDrawable(android.content.res.TypedArray, @StyleableRes int, @StyleableRes int);
+ method public static int getInt(android.content.res.TypedArray, @StyleableRes int, @StyleableRes int, int);
+ method public static boolean getNamedBoolean(android.content.res.TypedArray, org.xmlpull.v1.XmlPullParser, String, @StyleableRes int, boolean);
+ method @ColorInt public static int getNamedColor(android.content.res.TypedArray, org.xmlpull.v1.XmlPullParser, String, @StyleableRes int, @ColorInt int);
+ method public static android.content.res.ColorStateList? getNamedColorStateList(android.content.res.TypedArray, org.xmlpull.v1.XmlPullParser, android.content.res.Resources.Theme?, String, @StyleableRes int);
+ method public static androidx.core.content.res.ComplexColorCompat! getNamedComplexColor(android.content.res.TypedArray, org.xmlpull.v1.XmlPullParser, android.content.res.Resources.Theme?, String, @StyleableRes int, @ColorInt int);
+ method public static float getNamedFloat(android.content.res.TypedArray, org.xmlpull.v1.XmlPullParser, String, @StyleableRes int, float);
+ method public static int getNamedInt(android.content.res.TypedArray, org.xmlpull.v1.XmlPullParser, String, @StyleableRes int, int);
+ method @AnyRes public static int getNamedResourceId(android.content.res.TypedArray, org.xmlpull.v1.XmlPullParser, String, @StyleableRes int, @AnyRes int);
+ method public static String? getNamedString(android.content.res.TypedArray, org.xmlpull.v1.XmlPullParser, String, @StyleableRes int);
+ method @AnyRes public static int getResourceId(android.content.res.TypedArray, @StyleableRes int, @StyleableRes int, @AnyRes int);
+ method public static String? getString(android.content.res.TypedArray, @StyleableRes int, @StyleableRes int);
+ method public static CharSequence? getText(android.content.res.TypedArray, @StyleableRes int, @StyleableRes int);
+ method public static CharSequence![]? getTextArray(android.content.res.TypedArray, @StyleableRes int, @StyleableRes int);
+ method public static boolean hasAttribute(org.xmlpull.v1.XmlPullParser, String);
+ method public static android.content.res.TypedArray obtainAttributes(android.content.res.Resources, android.content.res.Resources.Theme?, android.util.AttributeSet, int[]);
+ method public static android.util.TypedValue? peekNamedValue(android.content.res.TypedArray, org.xmlpull.v1.XmlPullParser, String, int);
+ }
+
+}
+
+package androidx.core.database {
+
+ public final class CursorWindowCompat {
+ method public static android.database.CursorWindow create(String?, long);
+ }
+
+ @Deprecated public final class DatabaseUtilsCompat {
+ method @Deprecated public static String![]! appendSelectionArgs(String![]!, String![]!);
+ method @Deprecated public static String! concatenateWhere(String!, String!);
+ }
+
+}
+
+package androidx.core.database.sqlite {
+
+ public final class SQLiteCursorCompat {
+ method public static void setFillWindowForwardOnly(android.database.sqlite.SQLiteCursor, boolean);
+ }
+
+}
+
+package androidx.core.graphics {
+
+ public final class BitmapCompat {
+ method public static int getAllocationByteCount(android.graphics.Bitmap);
+ method public static boolean hasMipMap(android.graphics.Bitmap);
+ method public static void setHasMipMap(android.graphics.Bitmap, boolean);
+ }
+
+ public class BlendModeColorFilterCompat {
+ method public static android.graphics.ColorFilter? createBlendModeColorFilterCompat(int, androidx.core.graphics.BlendModeCompat);
+ }
+
+ public enum BlendModeCompat {
+ enum_constant public static final androidx.core.graphics.BlendModeCompat CLEAR;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat COLOR;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat COLOR_BURN;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat COLOR_DODGE;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat DARKEN;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat DIFFERENCE;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat DST;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat DST_ATOP;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat DST_IN;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat DST_OUT;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat DST_OVER;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat EXCLUSION;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat HARD_LIGHT;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat HUE;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat LIGHTEN;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat LUMINOSITY;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat MODULATE;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat MULTIPLY;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat OVERLAY;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat PLUS;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat SATURATION;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat SCREEN;
+ enum_constant @RequiresApi(android.os.Build.VERSION_CODES.Q) public static final androidx.core.graphics.BlendModeCompat SOFT_LIGHT;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat SRC;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat SRC_ATOP;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat SRC_IN;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat SRC_OUT;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat SRC_OVER;
+ enum_constant public static final androidx.core.graphics.BlendModeCompat XOR;
+ }
+
+ public final class ColorUtils {
+ method @ColorInt public static int HSLToColor(float[]);
+ method @ColorInt public static int LABToColor(@FloatRange(from=0.0f, to=100) double, @FloatRange(from=0xffffff80, to=127) double, @FloatRange(from=0xffffff80, to=127) double);
+ method public static void LABToXYZ(@FloatRange(from=0.0f, to=100) double, @FloatRange(from=0xffffff80, to=127) double, @FloatRange(from=0xffffff80, to=127) double, double[]);
+ method public static void RGBToHSL(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, float[]);
+ method public static void RGBToLAB(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, double[]);
+ method public static void RGBToXYZ(@IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, @IntRange(from=0, to=255) int, double[]);
+ method @ColorInt public static int XYZToColor(@FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_X) double, @FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_Y) double, @FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_Z) double);
+ method public static void XYZToLAB(@FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_X) double, @FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_Y) double, @FloatRange(from=0.0f, to=androidx.core.graphics.ColorUtils.XYZ_WHITE_REFERENCE_Z) double, double[]);
+ method @ColorInt public static int blendARGB(@ColorInt int, @ColorInt int, @FloatRange(from=0.0, to=1.0) float);
+ method public static void blendHSL(float[], float[], @FloatRange(from=0.0, to=1.0) float, float[]);
+ method public static void blendLAB(double[], double[], @FloatRange(from=0.0, to=1.0) double, double[]);
+ method public static double calculateContrast(@ColorInt int, @ColorInt int);
+ method @FloatRange(from=0.0, to=1.0) public static double calculateLuminance(@ColorInt int);
+ method public static int calculateMinimumAlpha(@ColorInt int, @ColorInt int, float);
+ method public static void colorToHSL(@ColorInt int, float[]);
+ method public static void colorToLAB(@ColorInt int, double[]);
+ method public static void colorToXYZ(@ColorInt int, double[]);
+ method public static int compositeColors(@ColorInt int, @ColorInt int);
+ method @RequiresApi(26) public static android.graphics.Color compositeColors(android.graphics.Color, android.graphics.Color);
+ method public static double distanceEuclidean(double[], double[]);
+ method @ColorInt public static int setAlphaComponent(@ColorInt int, @IntRange(from=0, to=255) int);
+ }
+
+ public final class Insets {
+ method public static androidx.core.graphics.Insets add(androidx.core.graphics.Insets, androidx.core.graphics.Insets);
+ method public static androidx.core.graphics.Insets max(androidx.core.graphics.Insets, androidx.core.graphics.Insets);
+ method public static androidx.core.graphics.Insets min(androidx.core.graphics.Insets, androidx.core.graphics.Insets);
+ method public static androidx.core.graphics.Insets of(int, int, int, int);
+ method public static androidx.core.graphics.Insets of(android.graphics.Rect);
+ method public static androidx.core.graphics.Insets subtract(androidx.core.graphics.Insets, androidx.core.graphics.Insets);
+ method @RequiresApi(api=29) public static androidx.core.graphics.Insets toCompatInsets(android.graphics.Insets);
+ method @RequiresApi(api=29) public android.graphics.Insets toPlatformInsets();
+ method @Deprecated @RequiresApi(api=29) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static androidx.core.graphics.Insets wrap(android.graphics.Insets);
+ field public static final androidx.core.graphics.Insets NONE;
+ field public final int bottom;
+ field public final int left;
+ field public final int right;
+ field public final int top;
+ }
+
+ public final class PaintCompat {
+ method public static boolean hasGlyph(android.graphics.Paint, String);
+ method public static boolean setBlendMode(android.graphics.Paint, androidx.core.graphics.BlendModeCompat?);
+ }
+
+ public final class PathSegment {
+ ctor public PathSegment(android.graphics.PointF, float, android.graphics.PointF, float);
+ method public android.graphics.PointF getEnd();
+ method public float getEndFraction();
+ method public android.graphics.PointF getStart();
+ method public float getStartFraction();
+ }
+
+ public final class PathUtils {
+ method @RequiresApi(26) public static java.util.Collection<androidx.core.graphics.PathSegment!> flatten(android.graphics.Path);
+ method @RequiresApi(26) public static java.util.Collection<androidx.core.graphics.PathSegment!> flatten(android.graphics.Path, @FloatRange(from=0) float);
+ }
+
+ public class TypefaceCompat {
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @VisibleForTesting public static void clearCache();
+ method public static android.graphics.Typeface create(android.content.Context, android.graphics.Typeface?, int);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static android.graphics.Typeface? createFromFontInfo(android.content.Context, android.os.CancellationSignal?, androidx.core.provider.FontsContractCompat.FontInfo![], int);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static android.graphics.Typeface? createFromResourcesFamilyXml(android.content.Context, androidx.core.content.res.FontResourcesParserCompat.FamilyResourceEntry, android.content.res.Resources, int, int, androidx.core.content.res.ResourcesCompat.FontCallback?, android.os.Handler?, boolean);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static android.graphics.Typeface? createFromResourcesFontFile(android.content.Context, android.content.res.Resources, int, String!, int);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static android.graphics.Typeface? findFromCache(android.content.res.Resources, int, int);
+ }
+
+ @RequiresApi(26) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class TypefaceCompatApi26Impl {
+ ctor public TypefaceCompatApi26Impl();
+ method protected android.graphics.Typeface? createFromFamiliesWithDefault(Object!);
+ method public android.graphics.Typeface? createFromFontFamilyFilesResourceEntry(android.content.Context!, androidx.core.content.res.FontResourcesParserCompat.FontFamilyFilesResourceEntry!, android.content.res.Resources!, int);
+ method public android.graphics.Typeface? createFromFontInfo(android.content.Context!, android.os.CancellationSignal?, androidx.core.provider.FontsContractCompat.FontInfo![], int);
+ method public android.graphics.Typeface? createFromResourcesFontFile(android.content.Context!, android.content.res.Resources!, int, String!, int);
+ method protected java.lang.reflect.Method! obtainAbortCreationMethod(Class<?>!) throws java.lang.NoSuchMethodException;
+ method protected java.lang.reflect.Method! obtainAddFontFromAssetManagerMethod(Class<?>!) throws java.lang.NoSuchMethodException;
+ method protected java.lang.reflect.Method! obtainAddFontFromBufferMethod(Class<?>!) throws java.lang.NoSuchMethodException;
+ method protected java.lang.reflect.Method! obtainCreateFromFamiliesWithDefaultMethod(Class<?>!) throws java.lang.NoSuchMethodException;
+ method protected Class<?>! obtainFontFamily() throws java.lang.ClassNotFoundException;
+ method protected java.lang.reflect.Constructor<?>! obtainFontFamilyCtor(Class<?>!) throws java.lang.NoSuchMethodException;
+ method protected java.lang.reflect.Method! obtainFreezeMethod(Class<?>!) throws java.lang.NoSuchMethodException;
+ field protected final java.lang.reflect.Method! mAbortCreation;
+ field protected final java.lang.reflect.Method! mAddFontFromAssetManager;
+ field protected final java.lang.reflect.Method! mAddFontFromBuffer;
+ field protected final java.lang.reflect.Method! mCreateFromFamiliesWithDefault;
+ field protected final Class<?>! mFontFamily;
+ field protected final java.lang.reflect.Constructor<?>! mFontFamilyCtor;
+ field protected final java.lang.reflect.Method! mFreeze;
+ }
+
+ @RequiresApi(28) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class TypefaceCompatApi28Impl extends androidx.core.graphics.TypefaceCompatApi26Impl {
+ ctor public TypefaceCompatApi28Impl();
+ }
+
+ @RequiresApi(29) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public class TypefaceCompatApi29Impl {
+ ctor public TypefaceCompatApi29Impl();
+ method public android.graphics.Typeface? createFromFontFamilyFilesResourceEntry(android.content.Context!, androidx.core.content.res.FontResourcesParserCompat.FontFamilyFilesResourceEntry!, android.content.res.Resources!, int);
+ method public android.graphics.Typeface? createFromFontInfo(android.content.Context!, android.os.CancellationSignal?, androidx.core.provider.FontsContractCompat.FontInfo![], int);
+ method protected android.graphics.Typeface! createFromInputStream(android.content.Context!, java.io.InputStream!);
+ method public android.graphics.Typeface? createFromResourcesFontFile(android.content.Context!, android.content.res.Resources!, int, String!, int);
+ method protected androidx.core.provider.FontsContractCompat.FontInfo! findBestInfo(androidx.core.provider.FontsContractCompat.FontInfo![]!, int);
+ }
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class TypefaceCompatUtil {
+ method public static void closeQuietly(java.io.Closeable!);
+ method @RequiresApi(19) public static java.nio.ByteBuffer? copyToDirectBuffer(android.content.Context!, android.content.res.Resources!, int);
+ method public static boolean copyToFile(java.io.File!, java.io.InputStream!);
+ method public static boolean copyToFile(java.io.File!, android.content.res.Resources!, int);
+ method public static java.io.File? getTempFile(android.content.Context!);
+ method @RequiresApi(19) public static java.nio.ByteBuffer? mmap(android.content.Context!, android.os.CancellationSignal!, android.net.Uri!);
+ }
+
+}
+
+package androidx.core.graphics.drawable {
+
+ public final class DrawableCompat {
+ method public static void applyTheme(android.graphics.drawable.Drawable, android.content.res.Resources.Theme);
+ method public static boolean canApplyTheme(android.graphics.drawable.Drawable);
+ method public static void clearColorFilter(android.graphics.drawable.Drawable);
+ method public static int getAlpha(android.graphics.drawable.Drawable);
+ method public static android.graphics.ColorFilter! getColorFilter(android.graphics.drawable.Drawable);
+ method public static int getLayoutDirection(android.graphics.drawable.Drawable);
+ method public static void inflate(android.graphics.drawable.Drawable, android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.content.res.Resources.Theme?) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
+ method public static boolean isAutoMirrored(android.graphics.drawable.Drawable);
+ method @Deprecated public static void jumpToCurrentState(android.graphics.drawable.Drawable);
+ method public static void setAutoMirrored(android.graphics.drawable.Drawable, boolean);
+ method public static void setHotspot(android.graphics.drawable.Drawable, float, float);
+ method public static void setHotspotBounds(android.graphics.drawable.Drawable, int, int, int, int);
+ method public static boolean setLayoutDirection(android.graphics.drawable.Drawable, int);
+ method public static void setTint(android.graphics.drawable.Drawable, @ColorInt int);
+ method public static void setTintList(android.graphics.drawable.Drawable, android.content.res.ColorStateList?);
+ method public static void setTintMode(android.graphics.drawable.Drawable, android.graphics.PorterDuff.Mode);
+ method public static <T extends android.graphics.drawable.Drawable> T! unwrap(android.graphics.drawable.Drawable);
+ method public static android.graphics.drawable.Drawable! wrap(android.graphics.drawable.Drawable);
+ }
+
+ @androidx.versionedparcelable.VersionedParcelize(allowSerialization=true, ignoreParcelables=true, isCustom=true, jetifyAs="android.support.v4.graphics.drawable.IconCompat") public class IconCompat extends androidx.versionedparcelable.CustomVersionedParcelable {
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void addToShortcutIntent(android.content.Intent, android.graphics.drawable.Drawable?, android.content.Context);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void checkResource(android.content.Context);
+ method public static androidx.core.graphics.drawable.IconCompat? createFromBundle(android.os.Bundle);
+ method @RequiresApi(23) public static androidx.core.graphics.drawable.IconCompat? createFromIcon(android.content.Context, android.graphics.drawable.Icon);
+ method @RequiresApi(23) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static androidx.core.graphics.drawable.IconCompat? createFromIcon(android.graphics.drawable.Icon);
+ method @RequiresApi(23) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static androidx.core.graphics.drawable.IconCompat? createFromIconOrNullIfZeroResId(android.graphics.drawable.Icon);
+ method public static androidx.core.graphics.drawable.IconCompat! createWithAdaptiveBitmap(android.graphics.Bitmap!);
+ method public static androidx.core.graphics.drawable.IconCompat createWithAdaptiveBitmapContentUri(String);
+ method public static androidx.core.graphics.drawable.IconCompat createWithAdaptiveBitmapContentUri(android.net.Uri);
+ method public static androidx.core.graphics.drawable.IconCompat! createWithBitmap(android.graphics.Bitmap!);
+ method public static androidx.core.graphics.drawable.IconCompat! createWithContentUri(String!);
+ method public static androidx.core.graphics.drawable.IconCompat! createWithContentUri(android.net.Uri!);
+ method public static androidx.core.graphics.drawable.IconCompat! createWithData(byte[]!, int, int);
+ method public static androidx.core.graphics.drawable.IconCompat! createWithResource(android.content.Context!, @DrawableRes int);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static androidx.core.graphics.drawable.IconCompat! createWithResource(android.content.res.Resources!, String!, @DrawableRes int);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.graphics.Bitmap? getBitmap();
+ method @IdRes public int getResId();
+ method public String getResPackage();
+ method public int getType();
+ method public android.net.Uri getUri();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public java.io.InputStream? getUriInputStream(android.content.Context);
+ method public android.graphics.drawable.Drawable? loadDrawable(android.content.Context);
+ method public androidx.core.graphics.drawable.IconCompat! setTint(@ColorInt int);
+ method public androidx.core.graphics.drawable.IconCompat! setTintList(android.content.res.ColorStateList!);
+ method public androidx.core.graphics.drawable.IconCompat! setTintMode(android.graphics.PorterDuff.Mode!);
+ method public android.os.Bundle toBundle();
+ method @Deprecated @RequiresApi(23) public android.graphics.drawable.Icon toIcon();
+ method @RequiresApi(23) public android.graphics.drawable.Icon toIcon(android.content.Context?);
+ field public static final int TYPE_ADAPTIVE_BITMAP = 5; // 0x5
+ field public static final int TYPE_BITMAP = 1; // 0x1
+ field public static final int TYPE_DATA = 3; // 0x3
+ field public static final int TYPE_RESOURCE = 2; // 0x2
+ field public static final int TYPE_UNKNOWN = -1; // 0xffffffff
+ field public static final int TYPE_URI = 4; // 0x4
+ field public static final int TYPE_URI_ADAPTIVE_BITMAP = 6; // 0x6
+ field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @androidx.versionedparcelable.ParcelField(value=1, defaultValue="androidx.core.graphics.drawable.IconCompat.TYPE_UNKNOWN") public int mType;
+ }
+
+ public abstract class RoundedBitmapDrawable extends android.graphics.drawable.Drawable {
+ method public void draw(android.graphics.Canvas);
+ method public final android.graphics.Bitmap? getBitmap();
+ method public float getCornerRadius();
+ method public int getGravity();
+ method public int getOpacity();
+ method public final android.graphics.Paint getPaint();
+ method public boolean hasAntiAlias();
+ method public boolean hasMipMap();
+ method public boolean isCircular();
+ method public void setAlpha(int);
+ method public void setAntiAlias(boolean);
+ method public void setCircular(boolean);
+ method public void setColorFilter(android.graphics.ColorFilter!);
+ method public void setCornerRadius(float);
+ method public void setDither(boolean);
+ method public void setGravity(int);
+ method public void setMipMap(boolean);
+ method public void setTargetDensity(android.graphics.Canvas);
+ method public void setTargetDensity(android.util.DisplayMetrics);
+ method public void setTargetDensity(int);
+ }
+
+ public final class RoundedBitmapDrawableFactory {
+ method public static androidx.core.graphics.drawable.RoundedBitmapDrawable create(android.content.res.Resources, android.graphics.Bitmap?);
+ method public static androidx.core.graphics.drawable.RoundedBitmapDrawable create(android.content.res.Resources, String);
+ method public static androidx.core.graphics.drawable.RoundedBitmapDrawable create(android.content.res.Resources, java.io.InputStream);
+ }
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface TintAwareDrawable {
+ method public void setTint(@ColorInt int);
+ method public void setTintList(android.content.res.ColorStateList!);
+ method public void setTintMode(android.graphics.PorterDuff.Mode!);
+ }
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface WrappedDrawable {
+ method public android.graphics.drawable.Drawable! getWrappedDrawable();
+ method public void setWrappedDrawable(android.graphics.drawable.Drawable!);
+ }
+
+}
+
+package androidx.core.hardware.display {
+
+ public final class DisplayManagerCompat {
+ method public android.view.Display? getDisplay(int);
+ method public android.view.Display![] getDisplays();
+ method public android.view.Display![] getDisplays(String?);
+ method public static androidx.core.hardware.display.DisplayManagerCompat getInstance(android.content.Context);
+ field public static final String DISPLAY_CATEGORY_PRESENTATION = "android.hardware.display.category.PRESENTATION";
+ }
+
+}
+
+package androidx.core.hardware.fingerprint {
+
+ @Deprecated public class FingerprintManagerCompat {
+ method @Deprecated @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) public void authenticate(androidx.core.hardware.fingerprint.FingerprintManagerCompat.CryptoObject?, int, androidx.core.os.CancellationSignal?, androidx.core.hardware.fingerprint.FingerprintManagerCompat.AuthenticationCallback, android.os.Handler?);
+ method @Deprecated public static androidx.core.hardware.fingerprint.FingerprintManagerCompat from(android.content.Context);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) public boolean hasEnrolledFingerprints();
+ method @Deprecated @RequiresPermission(android.Manifest.permission.USE_FINGERPRINT) public boolean isHardwareDetected();
+ }
+
+ @Deprecated public abstract static class FingerprintManagerCompat.AuthenticationCallback {
+ ctor @Deprecated public FingerprintManagerCompat.AuthenticationCallback();
+ method @Deprecated public void onAuthenticationError(int, CharSequence!);
+ method @Deprecated public void onAuthenticationFailed();
+ method @Deprecated public void onAuthenticationHelp(int, CharSequence!);
+ method @Deprecated public void onAuthenticationSucceeded(androidx.core.hardware.fingerprint.FingerprintManagerCompat.AuthenticationResult!);
+ }
+
+ @Deprecated public static final class FingerprintManagerCompat.AuthenticationResult {
+ ctor @Deprecated public FingerprintManagerCompat.AuthenticationResult(androidx.core.hardware.fingerprint.FingerprintManagerCompat.CryptoObject!);
+ method @Deprecated public androidx.core.hardware.fingerprint.FingerprintManagerCompat.CryptoObject! getCryptoObject();
+ }
+
+ @Deprecated public static class FingerprintManagerCompat.CryptoObject {
+ ctor @Deprecated public FingerprintManagerCompat.CryptoObject(java.security.Signature);
+ ctor @Deprecated public FingerprintManagerCompat.CryptoObject(javax.crypto.Cipher);
+ ctor @Deprecated public FingerprintManagerCompat.CryptoObject(javax.crypto.Mac);
+ method @Deprecated public javax.crypto.Cipher? getCipher();
+ method @Deprecated public javax.crypto.Mac? getMac();
+ method @Deprecated public java.security.Signature? getSignature();
+ }
+
+}
+
+package androidx.core.internal.view {
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface SupportMenu extends android.view.Menu {
+ method public void setGroupDividerEnabled(boolean);
+ field public static final int CATEGORY_MASK = -65536; // 0xffff0000
+ field public static final int CATEGORY_SHIFT = 16; // 0x10
+ field public static final int FLAG_KEEP_OPEN_ON_SUBMENU_OPENED = 4; // 0x4
+ field public static final int SUPPORTED_MODIFIERS_MASK = 69647; // 0x1100f
+ field public static final int USER_MASK = 65535; // 0xffff
+ field public static final int USER_SHIFT = 0; // 0x0
+ }
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface SupportMenuItem extends android.view.MenuItem {
+ method public int getAlphabeticModifiers();
+ method public CharSequence! getContentDescription();
+ method public android.content.res.ColorStateList! getIconTintList();
+ method public android.graphics.PorterDuff.Mode! getIconTintMode();
+ method public int getNumericModifiers();
+ method public androidx.core.view.ActionProvider! getSupportActionProvider();
+ method public CharSequence! getTooltipText();
+ method public boolean requiresActionButton();
+ method public boolean requiresOverflow();
+ method public android.view.MenuItem! setAlphabeticShortcut(char, int);
+ method public androidx.core.internal.view.SupportMenuItem! setContentDescription(CharSequence!);
+ method public android.view.MenuItem! setIconTintList(android.content.res.ColorStateList!);
+ method public android.view.MenuItem! setIconTintMode(android.graphics.PorterDuff.Mode!);
+ method public android.view.MenuItem! setNumericShortcut(char, int);
+ method public android.view.MenuItem! setShortcut(char, char, int, int);
+ method public androidx.core.internal.view.SupportMenuItem! setSupportActionProvider(androidx.core.view.ActionProvider!);
+ method public androidx.core.internal.view.SupportMenuItem! setTooltipText(CharSequence!);
+ field public static final int SHOW_AS_ACTION_ALWAYS = 2; // 0x2
+ field public static final int SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW = 8; // 0x8
+ field public static final int SHOW_AS_ACTION_IF_ROOM = 1; // 0x1
+ field public static final int SHOW_AS_ACTION_NEVER = 0; // 0x0
+ field public static final int SHOW_AS_ACTION_WITH_TEXT = 4; // 0x4
+ }
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface SupportSubMenu extends androidx.core.internal.view.SupportMenu android.view.SubMenu {
+ }
+
+}
+
+package androidx.core.location {
+
+ public abstract class GnssStatusCompat {
+ method @FloatRange(from=0, to=360) public abstract float getAzimuthDegrees(@IntRange(from=0) int);
+ method @FloatRange(from=0, to=63) public abstract float getBasebandCn0DbHz(@IntRange(from=0) int);
+ method @FloatRange(from=0) public abstract float getCarrierFrequencyHz(@IntRange(from=0) int);
+ method @FloatRange(from=0, to=63) public abstract float getCn0DbHz(@IntRange(from=0) int);
+ method public abstract int getConstellationType(@IntRange(from=0) int);
+ method @FloatRange(from=0xffffffa6, to=90) public abstract float getElevationDegrees(@IntRange(from=0) int);
+ method @IntRange(from=0) public abstract int getSatelliteCount();
+ method @IntRange(from=1, to=200) public abstract int getSvid(@IntRange(from=0) int);
+ method public abstract boolean hasAlmanacData(@IntRange(from=0) int);
+ method public abstract boolean hasBasebandCn0DbHz(@IntRange(from=0) int);
+ method public abstract boolean hasCarrierFrequencyHz(@IntRange(from=0) int);
+ method public abstract boolean hasEphemerisData(@IntRange(from=0) int);
+ method public abstract boolean usedInFix(@IntRange(from=0) int);
+ method @RequiresApi(android.os.Build.VERSION_CODES.N) public static androidx.core.location.GnssStatusCompat wrap(android.location.GnssStatus);
+ method public static androidx.core.location.GnssStatusCompat wrap(android.location.GpsStatus);
+ field public static final int CONSTELLATION_BEIDOU = 5; // 0x5
+ field public static final int CONSTELLATION_GALILEO = 6; // 0x6
+ field public static final int CONSTELLATION_GLONASS = 3; // 0x3
+ field public static final int CONSTELLATION_GPS = 1; // 0x1
+ field public static final int CONSTELLATION_IRNSS = 7; // 0x7
+ field public static final int CONSTELLATION_QZSS = 4; // 0x4
+ field public static final int CONSTELLATION_SBAS = 2; // 0x2
+ field public static final int CONSTELLATION_UNKNOWN = 0; // 0x0
+ }
+
+ public abstract static class GnssStatusCompat.Callback {
+ ctor public GnssStatusCompat.Callback();
+ method public void onFirstFix(@IntRange(from=0) int);
+ method public void onSatelliteStatusChanged(androidx.core.location.GnssStatusCompat);
+ method public void onStarted();
+ method public void onStopped();
+ }
+
+ public final class LocationManagerCompat {
+ method public static boolean isLocationEnabled(android.location.LocationManager);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback, android.os.Handler);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public static boolean registerGnssStatusCallback(android.location.LocationManager, java.util.concurrent.Executor, androidx.core.location.GnssStatusCompat.Callback);
+ method public static void unregisterGnssStatusCallback(android.location.LocationManager, androidx.core.location.GnssStatusCompat.Callback);
+ }
+
+}
+
+package androidx.core.math {
+
+ public class MathUtils {
+ method public static float clamp(float, float, float);
+ method public static double clamp(double, double, double);
+ method public static int clamp(int, int, int);
+ method public static long clamp(long, long, long);
+ }
+
+}
+
+package androidx.core.net {
+
+ public final class ConnectivityManagerCompat {
+ method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public static android.net.NetworkInfo? getNetworkInfoFromBroadcast(android.net.ConnectivityManager, android.content.Intent);
+ method @androidx.core.net.ConnectivityManagerCompat.RestrictBackgroundStatus public static int getRestrictBackgroundStatus(android.net.ConnectivityManager);
+ method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public static boolean isActiveNetworkMetered(android.net.ConnectivityManager);
+ field public static final int RESTRICT_BACKGROUND_STATUS_DISABLED = 1; // 0x1
+ field public static final int RESTRICT_BACKGROUND_STATUS_ENABLED = 3; // 0x3
+ field public static final int RESTRICT_BACKGROUND_STATUS_WHITELISTED = 2; // 0x2
+ }
+
+ @IntDef({androidx.core.net.ConnectivityManagerCompat.RESTRICT_BACKGROUND_STATUS_DISABLED, androidx.core.net.ConnectivityManagerCompat.RESTRICT_BACKGROUND_STATUS_WHITELISTED, androidx.core.net.ConnectivityManagerCompat.RESTRICT_BACKGROUND_STATUS_ENABLED}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ConnectivityManagerCompat.RestrictBackgroundStatus {
+ }
+
+ public final class MailTo {
+ method public String? getBcc();
+ method public String? getBody();
+ method public String? getCc();
+ method public java.util.Map<java.lang.String!,java.lang.String!>? getHeaders();
+ method public String? getSubject();
+ method public String? getTo();
+ method public static boolean isMailTo(String?);
+ method public static boolean isMailTo(android.net.Uri?);
+ method public static androidx.core.net.MailTo parse(String) throws androidx.core.net.ParseException;
+ method public static androidx.core.net.MailTo parse(android.net.Uri) throws androidx.core.net.ParseException;
+ field public static final String MAILTO_SCHEME = "mailto:";
+ }
+
+ public class ParseException extends java.lang.RuntimeException {
+ field public final String response;
+ }
+
+ public final class TrafficStatsCompat {
+ method @Deprecated public static void clearThreadStatsTag();
+ method @Deprecated public static int getThreadStatsTag();
+ method @Deprecated public static void incrementOperationCount(int);
+ method @Deprecated public static void incrementOperationCount(int, int);
+ method @Deprecated public static void setThreadStatsTag(int);
+ method public static void tagDatagramSocket(java.net.DatagramSocket) throws java.net.SocketException;
+ method @Deprecated public static void tagSocket(java.net.Socket!) throws java.net.SocketException;
+ method public static void untagDatagramSocket(java.net.DatagramSocket) throws java.net.SocketException;
+ method @Deprecated public static void untagSocket(java.net.Socket!) throws java.net.SocketException;
+ }
+
+ public final class UriCompat {
+ method public static String toSafeString(android.net.Uri);
+ }
+
+}
+
+package androidx.core.os {
+
+ public class BuildCompat {
+ method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.N) public static boolean isAtLeastN();
+ method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.N_MR1) public static boolean isAtLeastNMR1();
+ method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.O) public static boolean isAtLeastO();
+ method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.O_MR1) public static boolean isAtLeastOMR1();
+ method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.P) public static boolean isAtLeastP();
+ method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.Q) public static boolean isAtLeastQ();
+ method @Deprecated @ChecksSdkIntAtLeast(api=android.os.Build.VERSION_CODES.R) public static boolean isAtLeastR();
+ method @ChecksSdkIntAtLeast(codename="S") public static boolean isAtLeastS();
+ }
+
+ public final class CancellationSignal {
+ ctor public CancellationSignal();
+ method public void cancel();
+ method public Object? getCancellationSignalObject();
+ method public boolean isCanceled();
+ method public void setOnCancelListener(androidx.core.os.CancellationSignal.OnCancelListener?);
+ method public void throwIfCanceled();
+ }
+
+ public static interface CancellationSignal.OnCancelListener {
+ method public void onCancel();
+ }
+
+ public final class ConfigurationCompat {
+ method public static androidx.core.os.LocaleListCompat getLocales(android.content.res.Configuration);
+ }
+
+ public final class EnvironmentCompat {
+ method public static String getStorageState(java.io.File);
+ field public static final String MEDIA_UNKNOWN = "unknown";
+ }
+
+ public final class HandlerCompat {
+ method public static android.os.Handler createAsync(android.os.Looper);
+ method public static android.os.Handler createAsync(android.os.Looper, android.os.Handler.Callback);
+ method public static boolean postDelayed(android.os.Handler, Runnable, Object?, long);
+ }
+
+ public class HandlerExecutor implements java.util.concurrent.Executor {
+ ctor public HandlerExecutor(android.os.Handler);
+ method public void execute(Runnable);
+ }
+
+ public final class LocaleListCompat {
+ method public static androidx.core.os.LocaleListCompat create(java.util.Locale!...);
+ method public static androidx.core.os.LocaleListCompat forLanguageTags(String?);
+ method public java.util.Locale! get(int);
+ method @Size(min=1) public static androidx.core.os.LocaleListCompat getAdjustedDefault();
+ method @Size(min=1) public static androidx.core.os.LocaleListCompat getDefault();
+ method public static androidx.core.os.LocaleListCompat getEmptyLocaleList();
+ method public java.util.Locale? getFirstMatch(String![]);
+ method @IntRange(from=0xffffffff) public int indexOf(java.util.Locale!);
+ method public boolean isEmpty();
+ method @IntRange(from=0) public int size();
+ method public String toLanguageTags();
+ method public Object? unwrap();
+ method @Deprecated @RequiresApi(24) public static androidx.core.os.LocaleListCompat! wrap(Object!);
+ method @RequiresApi(24) public static androidx.core.os.LocaleListCompat wrap(android.os.LocaleList);
+ }
+
+ public final class MessageCompat {
+ method public static boolean isAsynchronous(android.os.Message);
+ method public static void setAsynchronous(android.os.Message, boolean);
+ }
+
+ public class OperationCanceledException extends java.lang.RuntimeException {
+ ctor public OperationCanceledException();
+ ctor public OperationCanceledException(String?);
+ }
+
+ public final class ParcelCompat {
+ method public static boolean readBoolean(android.os.Parcel);
+ method public static void writeBoolean(android.os.Parcel, boolean);
+ }
+
+ @Deprecated public final class ParcelableCompat {
+ method @Deprecated public static <T> android.os.Parcelable.Creator<T!>! newCreator(androidx.core.os.ParcelableCompatCreatorCallbacks<T!>!);
+ }
+
+ @Deprecated public interface ParcelableCompatCreatorCallbacks<T> {
+ method @Deprecated public T! createFromParcel(android.os.Parcel!, ClassLoader!);
+ method @Deprecated public T![]! newArray(int);
+ }
+
+ public final class ProcessCompat {
+ method public static boolean isApplicationUid(int);
+ }
+
+ @Deprecated public final class TraceCompat {
+ method @Deprecated public static void beginAsyncSection(String, int);
+ method @Deprecated public static void beginSection(String);
+ method @Deprecated public static void endAsyncSection(String, int);
+ method @Deprecated public static void endSection();
+ method @Deprecated public static boolean isEnabled();
+ method @Deprecated public static void setCounter(String, int);
+ }
+
+ public class UserManagerCompat {
+ method public static boolean isUserUnlocked(android.content.Context);
+ }
+
+}
+
+package androidx.core.provider {
+
+ public final class FontRequest {
+ ctor public FontRequest(String, String, String, java.util.List<java.util.List<byte[]!>!>);
+ ctor public FontRequest(String, String, String, @ArrayRes int);
+ method public java.util.List<java.util.List<byte[]!>!>? getCertificates();
+ method @ArrayRes public int getCertificatesArrayResId();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public String! getIdentifier();
+ method public String getProviderAuthority();
+ method public String getProviderPackage();
+ method public String getQuery();
+ }
+
+ public class FontsContractCompat {
+ method public static android.graphics.Typeface? buildTypeface(android.content.Context, android.os.CancellationSignal?, androidx.core.provider.FontsContractCompat.FontInfo![]);
+ method public static androidx.core.provider.FontsContractCompat.FontFamilyResult fetchFonts(android.content.Context, android.os.CancellationSignal?, androidx.core.provider.FontRequest) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static android.graphics.Typeface! getFontSync(android.content.Context!, androidx.core.provider.FontRequest!, androidx.core.content.res.ResourcesCompat.FontCallback?, android.os.Handler?, boolean, int, int);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @VisibleForTesting public static android.content.pm.ProviderInfo? getProvider(android.content.pm.PackageManager, androidx.core.provider.FontRequest, android.content.res.Resources?) throws android.content.pm.PackageManager.NameNotFoundException;
+ method @RequiresApi(19) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static java.util.Map<android.net.Uri!,java.nio.ByteBuffer!>! prepareFontData(android.content.Context!, androidx.core.provider.FontsContractCompat.FontInfo![]!, android.os.CancellationSignal!);
+ method public static void requestFont(android.content.Context, androidx.core.provider.FontRequest, androidx.core.provider.FontsContractCompat.FontRequestCallback, android.os.Handler);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static void resetCache();
+ field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final String PARCEL_FONT_RESULTS = "font_results";
+ }
+
+ public static final class FontsContractCompat.Columns implements android.provider.BaseColumns {
+ ctor public FontsContractCompat.Columns();
+ field public static final String FILE_ID = "file_id";
+ field public static final String ITALIC = "font_italic";
+ field public static final String RESULT_CODE = "result_code";
+ field public static final int RESULT_CODE_FONT_NOT_FOUND = 1; // 0x1
+ field public static final int RESULT_CODE_FONT_UNAVAILABLE = 2; // 0x2
+ field public static final int RESULT_CODE_MALFORMED_QUERY = 3; // 0x3
+ field public static final int RESULT_CODE_OK = 0; // 0x0
+ field public static final String TTC_INDEX = "font_ttc_index";
+ field public static final String VARIATION_SETTINGS = "font_variation_settings";
+ field public static final String WEIGHT = "font_weight";
+ }
+
+ public static class FontsContractCompat.FontFamilyResult {
+ ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public FontsContractCompat.FontFamilyResult(int, androidx.core.provider.FontsContractCompat.FontInfo![]?);
+ method public androidx.core.provider.FontsContractCompat.FontInfo![]! getFonts();
+ method public int getStatusCode();
+ field public static final int STATUS_OK = 0; // 0x0
+ field public static final int STATUS_UNEXPECTED_DATA_PROVIDED = 2; // 0x2
+ field public static final int STATUS_WRONG_CERTIFICATES = 1; // 0x1
+ }
+
+ public static class FontsContractCompat.FontInfo {
+ ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public FontsContractCompat.FontInfo(android.net.Uri, @IntRange(from=0) int, @IntRange(from=1, to=1000) int, boolean, int);
+ method public int getResultCode();
+ method @IntRange(from=0) public int getTtcIndex();
+ method public android.net.Uri getUri();
+ method @IntRange(from=1, to=1000) public int getWeight();
+ method public boolean isItalic();
+ }
+
+ public static class FontsContractCompat.FontRequestCallback {
+ ctor public FontsContractCompat.FontRequestCallback();
+ method public void onTypefaceRequestFailed(@androidx.core.provider.FontsContractCompat.FontRequestCallback.FontRequestFailReason int);
+ method public void onTypefaceRetrieved(android.graphics.Typeface!);
+ field public static final int FAIL_REASON_FONT_LOAD_ERROR = -3; // 0xfffffffd
+ field public static final int FAIL_REASON_FONT_NOT_FOUND = 1; // 0x1
+ field public static final int FAIL_REASON_FONT_UNAVAILABLE = 2; // 0x2
+ field public static final int FAIL_REASON_MALFORMED_QUERY = 3; // 0x3
+ field public static final int FAIL_REASON_PROVIDER_NOT_FOUND = -1; // 0xffffffff
+ field public static final int FAIL_REASON_SECURITY_VIOLATION = -4; // 0xfffffffc
+ field public static final int FAIL_REASON_WRONG_CERTIFICATES = -2; // 0xfffffffe
+ field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final int RESULT_OK = 0; // 0x0
+ }
+
+ @IntDef({androidx.core.provider.FontsContractCompat.FontRequestCallback.FAIL_REASON_PROVIDER_NOT_FOUND, androidx.core.provider.FontsContractCompat.FontRequestCallback.FAIL_REASON_FONT_LOAD_ERROR, androidx.core.provider.FontsContractCompat.FontRequestCallback.FAIL_REASON_FONT_NOT_FOUND, androidx.core.provider.FontsContractCompat.FontRequestCallback.FAIL_REASON_FONT_UNAVAILABLE, androidx.core.provider.FontsContractCompat.FontRequestCallback.FAIL_REASON_MALFORMED_QUERY, androidx.core.provider.FontsContractCompat.FontRequestCallback.FAIL_REASON_WRONG_CERTIFICATES, androidx.core.provider.FontsContractCompat.FontRequestCallback.FAIL_REASON_SECURITY_VIOLATION, androidx.core.provider.FontsContractCompat.FontRequestCallback.RESULT_OK}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface FontsContractCompat.FontRequestCallback.FontRequestFailReason {
+ }
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class SelfDestructiveThread {
+ ctor public SelfDestructiveThread(String!, int, int);
+ method @VisibleForTesting public int getGeneration();
+ method @VisibleForTesting public boolean isRunning();
+ method public <T> void postAndReply(java.util.concurrent.Callable<T!>!, androidx.core.provider.SelfDestructiveThread.ReplyCallback<T!>!);
+ method public <T> T! postAndWait(java.util.concurrent.Callable<T!>!, int) throws java.lang.InterruptedException;
+ }
+
+ public static interface SelfDestructiveThread.ReplyCallback<T> {
+ method public void onReply(T!);
+ }
+
+}
+
+package androidx.core.telephony.mbms {
+
+ public final class MbmsHelper {
+ method public static CharSequence? getBestNameForService(android.content.Context, android.telephony.mbms.ServiceInfo);
+ }
+
+}
+
+package androidx.core.text {
+
+ public final class BidiFormatter {
+ method public static androidx.core.text.BidiFormatter! getInstance();
+ method public static androidx.core.text.BidiFormatter! getInstance(boolean);
+ method public static androidx.core.text.BidiFormatter! getInstance(java.util.Locale!);
+ method public boolean getStereoReset();
+ method public boolean isRtl(String!);
+ method public boolean isRtl(CharSequence!);
+ method public boolean isRtlContext();
+ method public String! unicodeWrap(String!, androidx.core.text.TextDirectionHeuristicCompat!, boolean);
+ method public CharSequence! unicodeWrap(CharSequence!, androidx.core.text.TextDirectionHeuristicCompat!, boolean);
+ method public String! unicodeWrap(String!, androidx.core.text.TextDirectionHeuristicCompat!);
+ method public CharSequence! unicodeWrap(CharSequence!, androidx.core.text.TextDirectionHeuristicCompat!);
+ method public String! unicodeWrap(String!, boolean);
+ method public CharSequence! unicodeWrap(CharSequence!, boolean);
+ method public String! unicodeWrap(String!);
+ method public CharSequence! unicodeWrap(CharSequence!);
+ }
+
+ public static final class BidiFormatter.Builder {
+ ctor public BidiFormatter.Builder();
+ ctor public BidiFormatter.Builder(boolean);
+ ctor public BidiFormatter.Builder(java.util.Locale!);
+ method public androidx.core.text.BidiFormatter! build();
+ method public androidx.core.text.BidiFormatter.Builder! setTextDirectionHeuristic(androidx.core.text.TextDirectionHeuristicCompat!);
+ method public androidx.core.text.BidiFormatter.Builder! stereoReset(boolean);
+ }
+
+ public final class HtmlCompat {
+ method public static android.text.Spanned fromHtml(String, int);
+ method public static android.text.Spanned fromHtml(String, int, android.text.Html.ImageGetter?, android.text.Html.TagHandler?);
+ method public static String toHtml(android.text.Spanned, int);
+ field public static final int FROM_HTML_MODE_COMPACT = 63; // 0x3f
+ field public static final int FROM_HTML_MODE_LEGACY = 0; // 0x0
+ field public static final int FROM_HTML_OPTION_USE_CSS_COLORS = 256; // 0x100
+ field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_BLOCKQUOTE = 32; // 0x20
+ field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_DIV = 16; // 0x10
+ field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_HEADING = 2; // 0x2
+ field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_LIST = 8; // 0x8
+ field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_LIST_ITEM = 4; // 0x4
+ field public static final int FROM_HTML_SEPARATOR_LINE_BREAK_PARAGRAPH = 1; // 0x1
+ field public static final int TO_HTML_PARAGRAPH_LINES_CONSECUTIVE = 0; // 0x0
+ field public static final int TO_HTML_PARAGRAPH_LINES_INDIVIDUAL = 1; // 0x1
+ }
+
+ public final class ICUCompat {
+ method public static String? maximizeAndGetScript(java.util.Locale!);
+ }
+
+ public class PrecomputedTextCompat implements android.text.Spannable {
+ method public char charAt(int);
+ method public static androidx.core.text.PrecomputedTextCompat! create(CharSequence, androidx.core.text.PrecomputedTextCompat.Params);
+ method @IntRange(from=0) public int getParagraphCount();
+ method @IntRange(from=0) public int getParagraphEnd(@IntRange(from=0) int);
+ method @IntRange(from=0) public int getParagraphStart(@IntRange(from=0) int);
+ method public androidx.core.text.PrecomputedTextCompat.Params getParams();
+ method @RequiresApi(28) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.text.PrecomputedText? getPrecomputedText();
+ method public int getSpanEnd(Object!);
+ method public int getSpanFlags(Object!);
+ method public int getSpanStart(Object!);
+ method public <T> T![]! getSpans(int, int, Class<T!>!);
+ method @UiThread public static java.util.concurrent.Future<androidx.core.text.PrecomputedTextCompat!>! getTextFuture(CharSequence, androidx.core.text.PrecomputedTextCompat.Params, java.util.concurrent.Executor?);
+ method public int length();
+ method public int nextSpanTransition(int, int, Class!);
+ method public void removeSpan(Object!);
+ method public void setSpan(Object!, int, int, int);
+ method public CharSequence! subSequence(int, int);
+ }
+
+ public static final class PrecomputedTextCompat.Params {
+ ctor @RequiresApi(28) public PrecomputedTextCompat.Params(android.text.PrecomputedText.Params);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean equalsWithoutTextDirection(androidx.core.text.PrecomputedTextCompat.Params);
+ method @RequiresApi(23) public int getBreakStrategy();
+ method @RequiresApi(23) public int getHyphenationFrequency();
+ method @RequiresApi(18) public android.text.TextDirectionHeuristic? getTextDirection();
+ method public android.text.TextPaint getTextPaint();
+ }
+
+ public static class PrecomputedTextCompat.Params.Builder {
+ ctor public PrecomputedTextCompat.Params.Builder(android.text.TextPaint);
+ method public androidx.core.text.PrecomputedTextCompat.Params build();
+ method @RequiresApi(23) public androidx.core.text.PrecomputedTextCompat.Params.Builder! setBreakStrategy(int);
+ method @RequiresApi(23) public androidx.core.text.PrecomputedTextCompat.Params.Builder! setHyphenationFrequency(int);
+ method @RequiresApi(18) public androidx.core.text.PrecomputedTextCompat.Params.Builder! setTextDirection(android.text.TextDirectionHeuristic);
+ }
+
+ public interface TextDirectionHeuristicCompat {
+ method public boolean isRtl(char[]!, int, int);
+ method public boolean isRtl(CharSequence!, int, int);
+ }
+
+ public final class TextDirectionHeuristicsCompat {
+ field public static final androidx.core.text.TextDirectionHeuristicCompat! ANYRTL_LTR;
+ field public static final androidx.core.text.TextDirectionHeuristicCompat! FIRSTSTRONG_LTR;
+ field public static final androidx.core.text.TextDirectionHeuristicCompat! FIRSTSTRONG_RTL;
+ field public static final androidx.core.text.TextDirectionHeuristicCompat! LOCALE;
+ field public static final androidx.core.text.TextDirectionHeuristicCompat! LTR;
+ field public static final androidx.core.text.TextDirectionHeuristicCompat! RTL;
+ }
+
+ public final class TextUtilsCompat {
+ method public static int getLayoutDirectionFromLocale(java.util.Locale?);
+ method public static String htmlEncode(String);
+ }
+
+}
+
+package androidx.core.text.util {
+
+ public final class LinkifyCompat {
+ method public static boolean addLinks(android.text.Spannable, @androidx.core.text.util.LinkifyCompat.LinkifyMask int);
+ method public static boolean addLinks(android.widget.TextView, @androidx.core.text.util.LinkifyCompat.LinkifyMask int);
+ method public static void addLinks(android.widget.TextView, java.util.regex.Pattern, String?);
+ method public static void addLinks(android.widget.TextView, java.util.regex.Pattern, String?, android.text.util.Linkify.MatchFilter?, android.text.util.Linkify.TransformFilter?);
+ method public static void addLinks(android.widget.TextView, java.util.regex.Pattern, String?, String![]?, android.text.util.Linkify.MatchFilter?, android.text.util.Linkify.TransformFilter?);
+ method public static boolean addLinks(android.text.Spannable, java.util.regex.Pattern, String?);
+ method public static boolean addLinks(android.text.Spannable, java.util.regex.Pattern, String?, android.text.util.Linkify.MatchFilter?, android.text.util.Linkify.TransformFilter?);
+ method public static boolean addLinks(android.text.Spannable, java.util.regex.Pattern, String?, String![]?, android.text.util.Linkify.MatchFilter?, android.text.util.Linkify.TransformFilter?);
+ }
+
+ @IntDef(flag=true, value={android.text.util.Linkify.WEB_URLS, android.text.util.Linkify.EMAIL_ADDRESSES, android.text.util.Linkify.PHONE_NUMBERS, android.text.util.Linkify.MAP_ADDRESSES, android.text.util.Linkify.ALL}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface LinkifyCompat.LinkifyMask {
+ }
+
+}
+
+package androidx.core.util {
+
+ public class AtomicFile {
+ ctor public AtomicFile(java.io.File);
+ method public void delete();
+ method public void failWrite(java.io.FileOutputStream?);
+ method public void finishWrite(java.io.FileOutputStream?);
+ method public java.io.File getBaseFile();
+ method public java.io.FileInputStream openRead() throws java.io.FileNotFoundException;
+ method public byte[] readFully() throws java.io.IOException;
+ method public java.io.FileOutputStream startWrite() throws java.io.IOException;
+ }
+
+ public interface Consumer<T> {
+ method public void accept(T!);
+ }
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class DebugUtils {
+ method public static void buildShortClassTag(Object!, StringBuilder!);
+ }
+
+ @Deprecated @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class LogWriter extends java.io.Writer {
+ ctor @Deprecated public LogWriter(String!);
+ method @Deprecated public void close();
+ method @Deprecated public void flush();
+ method @Deprecated public void write(char[]!, int, int);
+ }
+
+ public class ObjectsCompat {
+ method public static boolean equals(Object?, Object?);
+ method public static int hash(java.lang.Object!...);
+ method public static int hashCode(Object?);
+ method public static String? toString(Object?, String?);
+ }
+
+ public class Pair<F, S> {
+ ctor public Pair(F!, S!);
+ method public static <A, B> androidx.core.util.Pair<A!,B!> create(A!, B!);
+ field public final F! first;
+ field public final S! second;
+ }
+
+ public final class PatternsCompat {
+ field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final java.util.regex.Pattern AUTOLINK_EMAIL_ADDRESS;
+ field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final java.util.regex.Pattern AUTOLINK_WEB_URL;
+ field public static final java.util.regex.Pattern DOMAIN_NAME;
+ field public static final java.util.regex.Pattern EMAIL_ADDRESS;
+ field public static final java.util.regex.Pattern IP_ADDRESS;
+ field public static final java.util.regex.Pattern WEB_URL;
+ }
+
+ public final class Pools {
+ }
+
+ public static interface Pools.Pool<T> {
+ method public T? acquire();
+ method public boolean release(T);
+ }
+
+ public static class Pools.SimplePool<T> implements androidx.core.util.Pools.Pool<T> {
+ ctor public Pools.SimplePool(int);
+ method public T! acquire();
+ method public boolean release(T);
+ }
+
+ public static class Pools.SynchronizedPool<T> extends androidx.core.util.Pools.SimplePool<T> {
+ ctor public Pools.SynchronizedPool(int);
+ }
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class Preconditions {
+ method public static void checkArgument(boolean);
+ method public static void checkArgument(boolean, Object);
+ method public static int checkArgumentInRange(int, int, int, String);
+ method @IntRange(from=0) public static int checkArgumentNonnegative(int, String?);
+ method @IntRange(from=0) public static int checkArgumentNonnegative(int);
+ method public static int checkFlagsArgument(int, int);
+ method public static <T> T checkNotNull(T?);
+ method public static <T> T checkNotNull(T?, Object);
+ method public static void checkState(boolean, String?);
+ method public static void checkState(boolean);
+ method public static <T extends java.lang.CharSequence> T checkStringNotEmpty(T?);
+ method public static <T extends java.lang.CharSequence> T checkStringNotEmpty(T?, Object);
+ method public static <T extends java.lang.CharSequence> T checkStringNotEmpty(T?, String, java.lang.Object!...);
+ }
+
+ public interface Predicate<T> {
+ method public boolean test(T!);
+ }
+
+ public interface Supplier<T> {
+ method public T! get();
+ }
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class TimeUtils {
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static void formatDuration(long, StringBuilder!);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static void formatDuration(long, java.io.PrintWriter!, int);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static void formatDuration(long, java.io.PrintWriter!);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static void formatDuration(long, long, java.io.PrintWriter!);
+ field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final int HUNDRED_DAY_FIELD_LEN = 19; // 0x13
+ }
+
+}
+
+package androidx.core.view {
+
+ public class AccessibilityDelegateCompat {
+ ctor public AccessibilityDelegateCompat();
+ ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public AccessibilityDelegateCompat(android.view.View.AccessibilityDelegate!);
+ method public boolean dispatchPopulateAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
+ method public androidx.core.view.accessibility.AccessibilityNodeProviderCompat! getAccessibilityNodeProvider(android.view.View!);
+ method public void onInitializeAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
+ method public void onInitializeAccessibilityNodeInfo(android.view.View!, androidx.core.view.accessibility.AccessibilityNodeInfoCompat!);
+ method public void onPopulateAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
+ method public boolean onRequestSendAccessibilityEvent(android.view.ViewGroup!, android.view.View!, android.view.accessibility.AccessibilityEvent!);
+ method public boolean performAccessibilityAction(android.view.View!, int, android.os.Bundle!);
+ method public void sendAccessibilityEvent(android.view.View!, int);
+ method public void sendAccessibilityEventUnchecked(android.view.View!, android.view.accessibility.AccessibilityEvent!);
+ }
+
+ public abstract class ActionProvider {
+ ctor public ActionProvider(android.content.Context!);
+ method public android.content.Context! getContext();
+ method public boolean hasSubMenu();
+ method public boolean isVisible();
+ method public abstract android.view.View! onCreateActionView();
+ method public android.view.View! onCreateActionView(android.view.MenuItem!);
+ method public boolean onPerformDefaultAction();
+ method public void onPrepareSubMenu(android.view.SubMenu!);
+ method public boolean overridesItemVisibility();
+ method public void refreshVisibility();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void reset();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setSubUiVisibilityListener(androidx.core.view.ActionProvider.SubUiVisibilityListener!);
+ method public void setVisibilityListener(androidx.core.view.ActionProvider.VisibilityListener!);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void subUiVisibilityChanged(boolean);
+ }
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static interface ActionProvider.SubUiVisibilityListener {
+ method public void onSubUiVisibilityChanged(boolean);
+ }
+
+ public static interface ActionProvider.VisibilityListener {
+ method public void onActionProviderVisibilityChanged(boolean);
+ }
+
+ public final class ContentInfoCompat {
+ method public android.content.ClipData getClip();
+ method public android.os.Bundle? getExtras();
+ method @androidx.core.view.ContentInfoCompat.Flags public int getFlags();
+ method public android.net.Uri? getLinkUri();
+ method @androidx.core.view.ContentInfoCompat.Source public int getSource();
+ method public android.util.Pair<androidx.core.view.ContentInfoCompat!,androidx.core.view.ContentInfoCompat!> partition(androidx.core.util.Predicate<android.content.ClipData.Item!>);
+ field public static final int FLAG_CONVERT_TO_PLAIN_TEXT = 1; // 0x1
+ field public static final int SOURCE_APP = 0; // 0x0
+ field public static final int SOURCE_CLIPBOARD = 1; // 0x1
+ field public static final int SOURCE_DRAG_AND_DROP = 3; // 0x3
+ field public static final int SOURCE_INPUT_METHOD = 2; // 0x2
+ }
+
+ public static final class ContentInfoCompat.Builder {
+ ctor public ContentInfoCompat.Builder(androidx.core.view.ContentInfoCompat);
+ ctor public ContentInfoCompat.Builder(android.content.ClipData, @androidx.core.view.ContentInfoCompat.Source int);
+ method public androidx.core.view.ContentInfoCompat build();
+ method public androidx.core.view.ContentInfoCompat.Builder setClip(android.content.ClipData);
+ method public androidx.core.view.ContentInfoCompat.Builder setExtras(android.os.Bundle?);
+ method public androidx.core.view.ContentInfoCompat.Builder setFlags(@androidx.core.view.ContentInfoCompat.Flags int);
+ method public androidx.core.view.ContentInfoCompat.Builder setLinkUri(android.net.Uri?);
+ method public androidx.core.view.ContentInfoCompat.Builder setSource(@androidx.core.view.ContentInfoCompat.Source int);
+ }
+
+ @IntDef(flag=true, value={androidx.core.view.ContentInfoCompat.FLAG_CONVERT_TO_PLAIN_TEXT}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ContentInfoCompat.Flags {
+ }
+
+ @IntDef({androidx.core.view.ContentInfoCompat.SOURCE_APP, androidx.core.view.ContentInfoCompat.SOURCE_CLIPBOARD, androidx.core.view.ContentInfoCompat.SOURCE_INPUT_METHOD, androidx.core.view.ContentInfoCompat.SOURCE_DRAG_AND_DROP}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ContentInfoCompat.Source {
+ }
+
+ public final class DisplayCompat {
+ method public static androidx.core.view.DisplayCompat.ModeCompat![] getSupportedModes(android.content.Context, android.view.Display);
+ }
+
+ public static final class DisplayCompat.ModeCompat {
+ method public int getPhysicalHeight();
+ method public int getPhysicalWidth();
+ method public boolean isNative();
+ method @RequiresApi(android.os.Build.VERSION_CODES.M) public android.view.Display.Mode? toMode();
+ }
+
+ public final class DisplayCutoutCompat {
+ ctor public DisplayCutoutCompat(android.graphics.Rect!, java.util.List<android.graphics.Rect!>!);
+ ctor public DisplayCutoutCompat(androidx.core.graphics.Insets, android.graphics.Rect?, android.graphics.Rect?, android.graphics.Rect?, android.graphics.Rect?, androidx.core.graphics.Insets);
+ method public java.util.List<android.graphics.Rect!> getBoundingRects();
+ method public int getSafeInsetBottom();
+ method public int getSafeInsetLeft();
+ method public int getSafeInsetRight();
+ method public int getSafeInsetTop();
+ method public androidx.core.graphics.Insets getWaterfallInsets();
+ }
+
+ public final class DragAndDropPermissionsCompat {
+ method public void release();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static androidx.core.view.DragAndDropPermissionsCompat? request(android.app.Activity!, android.view.DragEvent!);
+ }
+
+ public class DragStartHelper {
+ ctor public DragStartHelper(android.view.View!, androidx.core.view.DragStartHelper.OnDragStartListener!);
+ method public void attach();
+ method public void detach();
+ method public void getTouchPosition(android.graphics.Point!);
+ method public boolean onLongClick(android.view.View!);
+ method public boolean onTouch(android.view.View!, android.view.MotionEvent!);
+ }
+
+ public static interface DragStartHelper.OnDragStartListener {
+ method public boolean onDragStart(android.view.View!, androidx.core.view.DragStartHelper!);
+ }
+
+ public final class GestureDetectorCompat {
+ ctor public GestureDetectorCompat(android.content.Context!, android.view.GestureDetector.OnGestureListener!);
+ ctor public GestureDetectorCompat(android.content.Context!, android.view.GestureDetector.OnGestureListener!, android.os.Handler!);
+ method public boolean isLongpressEnabled();
+ method public boolean onTouchEvent(android.view.MotionEvent!);
+ method public void setIsLongpressEnabled(boolean);
+ method public void setOnDoubleTapListener(android.view.GestureDetector.OnDoubleTapListener!);
+ }
+
+ public final class GravityCompat {
+ method public static void apply(int, int, int, android.graphics.Rect!, android.graphics.Rect!, int);
+ method public static void apply(int, int, int, android.graphics.Rect!, int, int, android.graphics.Rect!, int);
+ method public static void applyDisplay(int, android.graphics.Rect!, android.graphics.Rect!, int);
+ method public static int getAbsoluteGravity(int, int);
+ field public static final int END = 8388613; // 0x800005
+ field public static final int RELATIVE_HORIZONTAL_GRAVITY_MASK = 8388615; // 0x800007
+ field public static final int RELATIVE_LAYOUT_DIRECTION = 8388608; // 0x800000
+ field public static final int START = 8388611; // 0x800003
+ }
+
+ public final class InputDeviceCompat {
+ field public static final int SOURCE_ANY = -256; // 0xffffff00
+ field public static final int SOURCE_CLASS_BUTTON = 1; // 0x1
+ field public static final int SOURCE_CLASS_JOYSTICK = 16; // 0x10
+ field public static final int SOURCE_CLASS_MASK = 255; // 0xff
+ field public static final int SOURCE_CLASS_NONE = 0; // 0x0
+ field public static final int SOURCE_CLASS_POINTER = 2; // 0x2
+ field public static final int SOURCE_CLASS_POSITION = 8; // 0x8
+ field public static final int SOURCE_CLASS_TRACKBALL = 4; // 0x4
+ field public static final int SOURCE_DPAD = 513; // 0x201
+ field public static final int SOURCE_GAMEPAD = 1025; // 0x401
+ field public static final int SOURCE_HDMI = 33554433; // 0x2000001
+ field public static final int SOURCE_JOYSTICK = 16777232; // 0x1000010
+ field public static final int SOURCE_KEYBOARD = 257; // 0x101
+ field public static final int SOURCE_MOUSE = 8194; // 0x2002
+ field public static final int SOURCE_ROTARY_ENCODER = 4194304; // 0x400000
+ field public static final int SOURCE_STYLUS = 16386; // 0x4002
+ field public static final int SOURCE_TOUCHPAD = 1048584; // 0x100008
+ field public static final int SOURCE_TOUCHSCREEN = 4098; // 0x1002
+ field public static final int SOURCE_TOUCH_NAVIGATION = 2097152; // 0x200000
+ field public static final int SOURCE_TRACKBALL = 65540; // 0x10004
+ field public static final int SOURCE_UNKNOWN = 0; // 0x0
+ }
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public class KeyEventDispatcher {
+ method public static boolean dispatchBeforeHierarchy(android.view.View, android.view.KeyEvent);
+ method public static boolean dispatchKeyEvent(androidx.core.view.KeyEventDispatcher.Component, android.view.View?, android.view.Window.Callback?, android.view.KeyEvent);
+ }
+
+ public static interface KeyEventDispatcher.Component {
+ method public boolean superDispatchKeyEvent(android.view.KeyEvent!);
+ }
+
+ public final class LayoutInflaterCompat {
+ method @Deprecated public static androidx.core.view.LayoutInflaterFactory! getFactory(android.view.LayoutInflater!);
+ method @Deprecated public static void setFactory(android.view.LayoutInflater, androidx.core.view.LayoutInflaterFactory);
+ method public static void setFactory2(android.view.LayoutInflater, android.view.LayoutInflater.Factory2);
+ }
+
+ @Deprecated public interface LayoutInflaterFactory {
+ method @Deprecated public android.view.View! onCreateView(android.view.View!, String!, android.content.Context!, android.util.AttributeSet!);
+ }
+
+ public final class MarginLayoutParamsCompat {
+ method public static int getLayoutDirection(android.view.ViewGroup.MarginLayoutParams!);
+ method public static int getMarginEnd(android.view.ViewGroup.MarginLayoutParams!);
+ method public static int getMarginStart(android.view.ViewGroup.MarginLayoutParams!);
+ method public static boolean isMarginRelative(android.view.ViewGroup.MarginLayoutParams!);
+ method public static void resolveLayoutDirection(android.view.ViewGroup.MarginLayoutParams!, int);
+ method public static void setLayoutDirection(android.view.ViewGroup.MarginLayoutParams!, int);
+ method public static void setMarginEnd(android.view.ViewGroup.MarginLayoutParams!, int);
+ method public static void setMarginStart(android.view.ViewGroup.MarginLayoutParams!, int);
+ }
+
+ public final class MenuCompat {
+ method public static void setGroupDividerEnabled(android.view.Menu!, boolean);
+ method @Deprecated public static void setShowAsAction(android.view.MenuItem!, int);
+ }
+
+ public final class MenuItemCompat {
+ method @Deprecated public static boolean collapseActionView(android.view.MenuItem!);
+ method @Deprecated public static boolean expandActionView(android.view.MenuItem!);
+ method public static androidx.core.view.ActionProvider! getActionProvider(android.view.MenuItem!);
+ method @Deprecated public static android.view.View! getActionView(android.view.MenuItem!);
+ method public static int getAlphabeticModifiers(android.view.MenuItem!);
+ method public static CharSequence! getContentDescription(android.view.MenuItem!);
+ method public static android.content.res.ColorStateList! getIconTintList(android.view.MenuItem!);
+ method public static android.graphics.PorterDuff.Mode! getIconTintMode(android.view.MenuItem!);
+ method public static int getNumericModifiers(android.view.MenuItem!);
+ method public static CharSequence! getTooltipText(android.view.MenuItem!);
+ method @Deprecated public static boolean isActionViewExpanded(android.view.MenuItem!);
+ method public static android.view.MenuItem! setActionProvider(android.view.MenuItem!, androidx.core.view.ActionProvider!);
+ method @Deprecated public static android.view.MenuItem! setActionView(android.view.MenuItem!, android.view.View!);
+ method @Deprecated public static android.view.MenuItem! setActionView(android.view.MenuItem!, int);
+ method public static void setAlphabeticShortcut(android.view.MenuItem!, char, int);
+ method public static void setContentDescription(android.view.MenuItem!, CharSequence!);
+ method public static void setIconTintList(android.view.MenuItem!, android.content.res.ColorStateList!);
+ method public static void setIconTintMode(android.view.MenuItem!, android.graphics.PorterDuff.Mode!);
+ method public static void setNumericShortcut(android.view.MenuItem!, char, int);
+ method @Deprecated public static android.view.MenuItem! setOnActionExpandListener(android.view.MenuItem!, androidx.core.view.MenuItemCompat.OnActionExpandListener!);
+ method public static void setShortcut(android.view.MenuItem!, char, char, int, int);
+ method @Deprecated public static void setShowAsAction(android.view.MenuItem!, int);
+ method public static void setTooltipText(android.view.MenuItem!, CharSequence!);
+ field @Deprecated public static final int SHOW_AS_ACTION_ALWAYS = 2; // 0x2
+ field @Deprecated public static final int SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW = 8; // 0x8
+ field @Deprecated public static final int SHOW_AS_ACTION_IF_ROOM = 1; // 0x1
+ field @Deprecated public static final int SHOW_AS_ACTION_NEVER = 0; // 0x0
+ field @Deprecated public static final int SHOW_AS_ACTION_WITH_TEXT = 4; // 0x4
+ }
+
+ @Deprecated public static interface MenuItemCompat.OnActionExpandListener {
+ method @Deprecated public boolean onMenuItemActionCollapse(android.view.MenuItem!);
+ method @Deprecated public boolean onMenuItemActionExpand(android.view.MenuItem!);
+ }
+
+ public final class MotionEventCompat {
+ method @Deprecated public static int findPointerIndex(android.view.MotionEvent!, int);
+ method @Deprecated public static int getActionIndex(android.view.MotionEvent!);
+ method @Deprecated public static int getActionMasked(android.view.MotionEvent!);
+ method @Deprecated public static float getAxisValue(android.view.MotionEvent!, int);
+ method @Deprecated public static float getAxisValue(android.view.MotionEvent!, int, int);
+ method @Deprecated public static int getButtonState(android.view.MotionEvent!);
+ method @Deprecated public static int getPointerCount(android.view.MotionEvent!);
+ method @Deprecated public static int getPointerId(android.view.MotionEvent!, int);
+ method @Deprecated public static int getSource(android.view.MotionEvent!);
+ method @Deprecated public static float getX(android.view.MotionEvent!, int);
+ method @Deprecated public static float getY(android.view.MotionEvent!, int);
+ method public static boolean isFromSource(android.view.MotionEvent!, int);
+ field @Deprecated public static final int ACTION_HOVER_ENTER = 9; // 0x9
+ field @Deprecated public static final int ACTION_HOVER_EXIT = 10; // 0xa
+ field @Deprecated public static final int ACTION_HOVER_MOVE = 7; // 0x7
+ field @Deprecated public static final int ACTION_MASK = 255; // 0xff
+ field @Deprecated public static final int ACTION_POINTER_DOWN = 5; // 0x5
+ field @Deprecated public static final int ACTION_POINTER_INDEX_MASK = 65280; // 0xff00
+ field @Deprecated public static final int ACTION_POINTER_INDEX_SHIFT = 8; // 0x8
+ field @Deprecated public static final int ACTION_POINTER_UP = 6; // 0x6
+ field @Deprecated public static final int ACTION_SCROLL = 8; // 0x8
+ field @Deprecated public static final int AXIS_BRAKE = 23; // 0x17
+ field @Deprecated public static final int AXIS_DISTANCE = 24; // 0x18
+ field @Deprecated public static final int AXIS_GAS = 22; // 0x16
+ field @Deprecated public static final int AXIS_GENERIC_1 = 32; // 0x20
+ field @Deprecated public static final int AXIS_GENERIC_10 = 41; // 0x29
+ field @Deprecated public static final int AXIS_GENERIC_11 = 42; // 0x2a
+ field @Deprecated public static final int AXIS_GENERIC_12 = 43; // 0x2b
+ field @Deprecated public static final int AXIS_GENERIC_13 = 44; // 0x2c
+ field @Deprecated public static final int AXIS_GENERIC_14 = 45; // 0x2d
+ field @Deprecated public static final int AXIS_GENERIC_15 = 46; // 0x2e
+ field @Deprecated public static final int AXIS_GENERIC_16 = 47; // 0x2f
+ field @Deprecated public static final int AXIS_GENERIC_2 = 33; // 0x21
+ field @Deprecated public static final int AXIS_GENERIC_3 = 34; // 0x22
+ field @Deprecated public static final int AXIS_GENERIC_4 = 35; // 0x23
+ field @Deprecated public static final int AXIS_GENERIC_5 = 36; // 0x24
+ field @Deprecated public static final int AXIS_GENERIC_6 = 37; // 0x25
+ field @Deprecated public static final int AXIS_GENERIC_7 = 38; // 0x26
+ field @Deprecated public static final int AXIS_GENERIC_8 = 39; // 0x27
+ field @Deprecated public static final int AXIS_GENERIC_9 = 40; // 0x28
+ field @Deprecated public static final int AXIS_HAT_X = 15; // 0xf
+ field @Deprecated public static final int AXIS_HAT_Y = 16; // 0x10
+ field @Deprecated public static final int AXIS_HSCROLL = 10; // 0xa
+ field @Deprecated public static final int AXIS_LTRIGGER = 17; // 0x11
+ field @Deprecated public static final int AXIS_ORIENTATION = 8; // 0x8
+ field @Deprecated public static final int AXIS_PRESSURE = 2; // 0x2
+ field public static final int AXIS_RELATIVE_X = 27; // 0x1b
+ field public static final int AXIS_RELATIVE_Y = 28; // 0x1c
+ field @Deprecated public static final int AXIS_RTRIGGER = 18; // 0x12
+ field @Deprecated public static final int AXIS_RUDDER = 20; // 0x14
+ field @Deprecated public static final int AXIS_RX = 12; // 0xc
+ field @Deprecated public static final int AXIS_RY = 13; // 0xd
+ field @Deprecated public static final int AXIS_RZ = 14; // 0xe
+ field public static final int AXIS_SCROLL = 26; // 0x1a
+ field @Deprecated public static final int AXIS_SIZE = 3; // 0x3
+ field @Deprecated public static final int AXIS_THROTTLE = 19; // 0x13
+ field @Deprecated public static final int AXIS_TILT = 25; // 0x19
+ field @Deprecated public static final int AXIS_TOOL_MAJOR = 6; // 0x6
+ field @Deprecated public static final int AXIS_TOOL_MINOR = 7; // 0x7
+ field @Deprecated public static final int AXIS_TOUCH_MAJOR = 4; // 0x4
+ field @Deprecated public static final int AXIS_TOUCH_MINOR = 5; // 0x5
+ field @Deprecated public static final int AXIS_VSCROLL = 9; // 0x9
+ field @Deprecated public static final int AXIS_WHEEL = 21; // 0x15
+ field @Deprecated public static final int AXIS_X = 0; // 0x0
+ field @Deprecated public static final int AXIS_Y = 1; // 0x1
+ field @Deprecated public static final int AXIS_Z = 11; // 0xb
+ field @Deprecated public static final int BUTTON_PRIMARY = 1; // 0x1
+ }
+
+ public interface NestedScrollingChild {
+ method public boolean dispatchNestedFling(float, float, boolean);
+ method public boolean dispatchNestedPreFling(float, float);
+ method public boolean dispatchNestedPreScroll(int, int, int[]?, int[]?);
+ method public boolean dispatchNestedScroll(int, int, int, int, int[]?);
+ method public boolean hasNestedScrollingParent();
+ method public boolean isNestedScrollingEnabled();
+ method public void setNestedScrollingEnabled(boolean);
+ method public boolean startNestedScroll(@androidx.core.view.ViewCompat.ScrollAxis int);
+ method public void stopNestedScroll();
+ }
+
+ public interface NestedScrollingChild2 extends androidx.core.view.NestedScrollingChild {
+ method public boolean dispatchNestedPreScroll(int, int, int[]?, int[]?, @androidx.core.view.ViewCompat.NestedScrollType int);
+ method public boolean dispatchNestedScroll(int, int, int, int, int[]?, @androidx.core.view.ViewCompat.NestedScrollType int);
+ method public boolean hasNestedScrollingParent(@androidx.core.view.ViewCompat.NestedScrollType int);
+ method public boolean startNestedScroll(@androidx.core.view.ViewCompat.ScrollAxis int, @androidx.core.view.ViewCompat.NestedScrollType int);
+ method public void stopNestedScroll(@androidx.core.view.ViewCompat.NestedScrollType int);
+ }
+
+ public interface NestedScrollingChild3 extends androidx.core.view.NestedScrollingChild2 {
+ method public void dispatchNestedScroll(int, int, int, int, int[]?, @androidx.core.view.ViewCompat.NestedScrollType int, int[]);
+ }
+
+ public class NestedScrollingChildHelper {
+ ctor public NestedScrollingChildHelper(android.view.View);
+ method public boolean dispatchNestedFling(float, float, boolean);
+ method public boolean dispatchNestedPreFling(float, float);
+ method public boolean dispatchNestedPreScroll(int, int, int[]?, int[]?);
+ method public boolean dispatchNestedPreScroll(int, int, int[]?, int[]?, @androidx.core.view.ViewCompat.NestedScrollType int);
+ method public boolean dispatchNestedScroll(int, int, int, int, int[]?);
+ method public boolean dispatchNestedScroll(int, int, int, int, int[]?, @androidx.core.view.ViewCompat.NestedScrollType int);
+ method public void dispatchNestedScroll(int, int, int, int, int[]?, @androidx.core.view.ViewCompat.NestedScrollType int, int[]?);
+ method public boolean hasNestedScrollingParent();
+ method public boolean hasNestedScrollingParent(@androidx.core.view.ViewCompat.NestedScrollType int);
+ method public boolean isNestedScrollingEnabled();
+ method public void onDetachedFromWindow();
+ method public void onStopNestedScroll(android.view.View);
+ method public void setNestedScrollingEnabled(boolean);
+ method public boolean startNestedScroll(@androidx.core.view.ViewCompat.ScrollAxis int);
+ method public boolean startNestedScroll(@androidx.core.view.ViewCompat.ScrollAxis int, @androidx.core.view.ViewCompat.NestedScrollType int);
+ method public void stopNestedScroll();
+ method public void stopNestedScroll(@androidx.core.view.ViewCompat.NestedScrollType int);
+ }
+
+ public interface NestedScrollingParent {
+ method @androidx.core.view.ViewCompat.ScrollAxis public int getNestedScrollAxes();
+ method public boolean onNestedFling(android.view.View, float, float, boolean);
+ method public boolean onNestedPreFling(android.view.View, float, float);
+ method public void onNestedPreScroll(android.view.View, int, int, int[]);
+ method public void onNestedScroll(android.view.View, int, int, int, int);
+ method public void onNestedScrollAccepted(android.view.View, android.view.View, @androidx.core.view.ViewCompat.ScrollAxis int);
+ method public boolean onStartNestedScroll(android.view.View, android.view.View, @androidx.core.view.ViewCompat.ScrollAxis int);
+ method public void onStopNestedScroll(android.view.View);
+ }
+
+ public interface NestedScrollingParent2 extends androidx.core.view.NestedScrollingParent {
+ method public void onNestedPreScroll(android.view.View, int, int, int[], @androidx.core.view.ViewCompat.NestedScrollType int);
+ method public void onNestedScroll(android.view.View, int, int, int, int, @androidx.core.view.ViewCompat.NestedScrollType int);
+ method public void onNestedScrollAccepted(android.view.View, android.view.View, @androidx.core.view.ViewCompat.ScrollAxis int, @androidx.core.view.ViewCompat.NestedScrollType int);
+ method public boolean onStartNestedScroll(android.view.View, android.view.View, @androidx.core.view.ViewCompat.ScrollAxis int, @androidx.core.view.ViewCompat.NestedScrollType int);
+ method public void onStopNestedScroll(android.view.View, @androidx.core.view.ViewCompat.NestedScrollType int);
+ }
+
+ public interface NestedScrollingParent3 extends androidx.core.view.NestedScrollingParent2 {
+ method public void onNestedScroll(android.view.View, int, int, int, int, @androidx.core.view.ViewCompat.NestedScrollType int, int[]);
+ }
+
+ public class NestedScrollingParentHelper {
+ ctor public NestedScrollingParentHelper(android.view.ViewGroup);
+ method @androidx.core.view.ViewCompat.ScrollAxis public int getNestedScrollAxes();
+ method public void onNestedScrollAccepted(android.view.View, android.view.View, @androidx.core.view.ViewCompat.ScrollAxis int);
+ method public void onNestedScrollAccepted(android.view.View, android.view.View, @androidx.core.view.ViewCompat.ScrollAxis int, @androidx.core.view.ViewCompat.NestedScrollType int);
+ method public void onStopNestedScroll(android.view.View);
+ method public void onStopNestedScroll(android.view.View, @androidx.core.view.ViewCompat.NestedScrollType int);
+ }
+
+ public interface OnApplyWindowInsetsListener {
+ method public androidx.core.view.WindowInsetsCompat! onApplyWindowInsets(android.view.View!, androidx.core.view.WindowInsetsCompat!);
+ }
+
+ public interface OnReceiveContentListener {
+ method public androidx.core.view.ContentInfoCompat? onReceiveContent(android.view.View, androidx.core.view.ContentInfoCompat);
+ }
+
+ public interface OnReceiveContentViewBehavior {
+ method public androidx.core.view.ContentInfoCompat? onReceiveContent(androidx.core.view.ContentInfoCompat);
+ }
+
+ public final class OneShotPreDrawListener implements android.view.View.OnAttachStateChangeListener android.view.ViewTreeObserver.OnPreDrawListener {
+ method public static androidx.core.view.OneShotPreDrawListener add(android.view.View, Runnable);
+ method public boolean onPreDraw();
+ method public void onViewAttachedToWindow(android.view.View!);
+ method public void onViewDetachedFromWindow(android.view.View!);
+ method public void removeListener();
+ }
+
+ public final class PointerIconCompat {
+ method public static androidx.core.view.PointerIconCompat! create(android.graphics.Bitmap!, float, float);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public Object! getPointerIcon();
+ method public static androidx.core.view.PointerIconCompat! getSystemIcon(android.content.Context!, int);
+ method public static androidx.core.view.PointerIconCompat! load(android.content.res.Resources!, int);
+ field public static final int TYPE_ALIAS = 1010; // 0x3f2
+ field public static final int TYPE_ALL_SCROLL = 1013; // 0x3f5
+ field public static final int TYPE_ARROW = 1000; // 0x3e8
+ field public static final int TYPE_CELL = 1006; // 0x3ee
+ field public static final int TYPE_CONTEXT_MENU = 1001; // 0x3e9
+ field public static final int TYPE_COPY = 1011; // 0x3f3
+ field public static final int TYPE_CROSSHAIR = 1007; // 0x3ef
+ field public static final int TYPE_DEFAULT = 1000; // 0x3e8
+ field public static final int TYPE_GRAB = 1020; // 0x3fc
+ field public static final int TYPE_GRABBING = 1021; // 0x3fd
+ field public static final int TYPE_HAND = 1002; // 0x3ea
+ field public static final int TYPE_HELP = 1003; // 0x3eb
+ field public static final int TYPE_HORIZONTAL_DOUBLE_ARROW = 1014; // 0x3f6
+ field public static final int TYPE_NO_DROP = 1012; // 0x3f4
+ field public static final int TYPE_NULL = 0; // 0x0
+ field public static final int TYPE_TEXT = 1008; // 0x3f0
+ field public static final int TYPE_TOP_LEFT_DIAGONAL_DOUBLE_ARROW = 1017; // 0x3f9
+ field public static final int TYPE_TOP_RIGHT_DIAGONAL_DOUBLE_ARROW = 1016; // 0x3f8
+ field public static final int TYPE_VERTICAL_DOUBLE_ARROW = 1015; // 0x3f7
+ field public static final int TYPE_VERTICAL_TEXT = 1009; // 0x3f1
+ field public static final int TYPE_WAIT = 1004; // 0x3ec
+ field public static final int TYPE_ZOOM_IN = 1018; // 0x3fa
+ field public static final int TYPE_ZOOM_OUT = 1019; // 0x3fb
+ }
+
+ public final class ScaleGestureDetectorCompat {
+ method @Deprecated public static boolean isQuickScaleEnabled(Object!);
+ method public static boolean isQuickScaleEnabled(android.view.ScaleGestureDetector!);
+ method @Deprecated public static void setQuickScaleEnabled(Object!, boolean);
+ method public static void setQuickScaleEnabled(android.view.ScaleGestureDetector!, boolean);
+ }
+
+ public interface ScrollingView {
+ method public int computeHorizontalScrollExtent();
+ method public int computeHorizontalScrollOffset();
+ method public int computeHorizontalScrollRange();
+ method public int computeVerticalScrollExtent();
+ method public int computeVerticalScrollOffset();
+ method public int computeVerticalScrollRange();
+ }
+
+ public interface TintableBackgroundView {
+ method public android.content.res.ColorStateList? getSupportBackgroundTintList();
+ method public android.graphics.PorterDuff.Mode? getSupportBackgroundTintMode();
+ method public void setSupportBackgroundTintList(android.content.res.ColorStateList?);
+ method public void setSupportBackgroundTintMode(android.graphics.PorterDuff.Mode?);
+ }
+
+ @Deprecated public final class VelocityTrackerCompat {
+ method @Deprecated public static float getXVelocity(android.view.VelocityTracker!, int);
+ method @Deprecated public static float getYVelocity(android.view.VelocityTracker!, int);
+ }
+
+ public class ViewCompat {
+ ctor @Deprecated protected ViewCompat();
+ method public static int addAccessibilityAction(android.view.View, CharSequence, androidx.core.view.accessibility.AccessibilityViewCommand);
+ method public static void addKeyboardNavigationClusters(android.view.View, java.util.Collection<android.view.View!>, int);
+ method public static void addOnUnhandledKeyEventListener(android.view.View, androidx.core.view.ViewCompat.OnUnhandledKeyEventListenerCompat);
+ method public static androidx.core.view.ViewPropertyAnimatorCompat animate(android.view.View);
+ method @Deprecated public static boolean canScrollHorizontally(android.view.View!, int);
+ method @Deprecated public static boolean canScrollVertically(android.view.View!, int);
+ method public static void cancelDragAndDrop(android.view.View);
+ method @Deprecated public static int combineMeasuredStates(int, int);
+ method public static androidx.core.view.WindowInsetsCompat computeSystemWindowInsets(android.view.View, androidx.core.view.WindowInsetsCompat, android.graphics.Rect);
+ method public static androidx.core.view.WindowInsetsCompat dispatchApplyWindowInsets(android.view.View, androidx.core.view.WindowInsetsCompat);
+ method public static void dispatchFinishTemporaryDetach(android.view.View);
+ method public static boolean dispatchNestedFling(android.view.View, float, float, boolean);
+ method public static boolean dispatchNestedPreFling(android.view.View, float, float);
+ method public static boolean dispatchNestedPreScroll(android.view.View, int, int, int[]?, int[]?);
+ method public static boolean dispatchNestedPreScroll(android.view.View, int, int, int[]?, int[]?, @androidx.core.view.ViewCompat.NestedScrollType int);
+ method public static boolean dispatchNestedScroll(android.view.View, int, int, int, int, int[]?);
+ method public static void dispatchNestedScroll(android.view.View, int, int, int, int, int[]?, @androidx.core.view.ViewCompat.NestedScrollType int, int[]);
+ method public static boolean dispatchNestedScroll(android.view.View, int, int, int, int, int[]?, @androidx.core.view.ViewCompat.NestedScrollType int);
+ method public static void dispatchStartTemporaryDetach(android.view.View);
+ method public static void enableAccessibleClickableSpanSupport(android.view.View!);
+ method public static int generateViewId();
+ method public static androidx.core.view.AccessibilityDelegateCompat? getAccessibilityDelegate(android.view.View);
+ method public static int getAccessibilityLiveRegion(android.view.View);
+ method public static androidx.core.view.accessibility.AccessibilityNodeProviderCompat! getAccessibilityNodeProvider(android.view.View);
+ method @UiThread public static CharSequence! getAccessibilityPaneTitle(android.view.View!);
+ method @Deprecated public static float getAlpha(android.view.View!);
+ method public static android.content.res.ColorStateList! getBackgroundTintList(android.view.View);
+ method public static android.graphics.PorterDuff.Mode! getBackgroundTintMode(android.view.View);
+ method public static android.graphics.Rect? getClipBounds(android.view.View);
+ method public static android.view.Display? getDisplay(android.view.View);
+ method public static float getElevation(android.view.View);
+ method public static boolean getFitsSystemWindows(android.view.View);
+ method public static int getImportantForAccessibility(android.view.View);
+ method public static int getImportantForAutofill(android.view.View);
+ method public static int getLabelFor(android.view.View);
+ method @Deprecated public static int getLayerType(android.view.View!);
+ method public static int getLayoutDirection(android.view.View);
+ method @Deprecated public static android.graphics.Matrix? getMatrix(android.view.View!);
+ method @Deprecated public static int getMeasuredHeightAndState(android.view.View!);
+ method @Deprecated public static int getMeasuredState(android.view.View!);
+ method @Deprecated public static int getMeasuredWidthAndState(android.view.View!);
+ method public static int getMinimumHeight(android.view.View);
+ method public static int getMinimumWidth(android.view.View);
+ method public static int getNextClusterForwardId(android.view.View);
+ method public static String![]? getOnReceiveContentMimeTypes(android.view.View);
+ method @Deprecated public static int getOverScrollMode(android.view.View!);
+ method @Px public static int getPaddingEnd(android.view.View);
+ method @Px public static int getPaddingStart(android.view.View);
+ method public static android.view.ViewParent! getParentForAccessibility(android.view.View);
+ method @Deprecated public static float getPivotX(android.view.View!);
+ method @Deprecated public static float getPivotY(android.view.View!);
+ method public static androidx.core.view.WindowInsetsCompat? getRootWindowInsets(android.view.View);
+ method @Deprecated public static float getRotation(android.view.View!);
+ method @Deprecated public static float getRotationX(android.view.View!);
+ method @Deprecated public static float getRotationY(android.view.View!);
+ method @Deprecated public static float getScaleX(android.view.View!);
+ method @Deprecated public static float getScaleY(android.view.View!);
+ method public static int getScrollIndicators(android.view.View);
+ method @UiThread public static final CharSequence? getStateDescription(android.view.View);
+ method public static java.util.List<android.graphics.Rect!> getSystemGestureExclusionRects(android.view.View);
+ method public static String? getTransitionName(android.view.View);
+ method @Deprecated public static float getTranslationX(android.view.View!);
+ method @Deprecated public static float getTranslationY(android.view.View!);
+ method public static float getTranslationZ(android.view.View);
+ method public static androidx.core.view.WindowInsetsControllerCompat? getWindowInsetsController(android.view.View);
+ method public static int getWindowSystemUiVisibility(android.view.View);
+ method @Deprecated public static float getX(android.view.View!);
+ method @Deprecated public static float getY(android.view.View!);
+ method public static float getZ(android.view.View);
+ method public static boolean hasAccessibilityDelegate(android.view.View);
+ method public static boolean hasExplicitFocusable(android.view.View);
+ method public static boolean hasNestedScrollingParent(android.view.View);
+ method public static boolean hasNestedScrollingParent(android.view.View, @androidx.core.view.ViewCompat.NestedScrollType int);
+ method public static boolean hasOnClickListeners(android.view.View);
+ method public static boolean hasOverlappingRendering(android.view.View);
+ method public static boolean hasTransientState(android.view.View);
+ method @UiThread public static boolean isAccessibilityHeading(android.view.View!);
+ method public static boolean isAttachedToWindow(android.view.View);
+ method public static boolean isFocusedByDefault(android.view.View);
+ method public static boolean isImportantForAccessibility(android.view.View);
+ method public static boolean isImportantForAutofill(android.view.View);
+ method public static boolean isInLayout(android.view.View);
+ method public static boolean isKeyboardNavigationCluster(android.view.View);
+ method public static boolean isLaidOut(android.view.View);
+ method public static boolean isLayoutDirectionResolved(android.view.View);
+ method public static boolean isNestedScrollingEnabled(android.view.View);
+ method @Deprecated public static boolean isOpaque(android.view.View!);
+ method public static boolean isPaddingRelative(android.view.View);
+ method @UiThread public static boolean isScreenReaderFocusable(android.view.View!);
+ method @Deprecated public static void jumpDrawablesToCurrentState(android.view.View!);
+ method public static android.view.View! keyboardNavigationClusterSearch(android.view.View, android.view.View!, @androidx.core.view.ViewCompat.FocusDirection int);
+ method public static void offsetLeftAndRight(android.view.View, int);
+ method public static void offsetTopAndBottom(android.view.View, int);
+ method public static androidx.core.view.WindowInsetsCompat onApplyWindowInsets(android.view.View, androidx.core.view.WindowInsetsCompat);
+ method @Deprecated public static void onInitializeAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
+ method public static void onInitializeAccessibilityNodeInfo(android.view.View, androidx.core.view.accessibility.AccessibilityNodeInfoCompat!);
+ method @Deprecated public static void onPopulateAccessibilityEvent(android.view.View!, android.view.accessibility.AccessibilityEvent!);
+ method public static boolean performAccessibilityAction(android.view.View, int, android.os.Bundle!);
+ method public static androidx.core.view.ContentInfoCompat? performReceiveContent(android.view.View, androidx.core.view.ContentInfoCompat);
+ method public static void postInvalidateOnAnimation(android.view.View);
+ method public static void postInvalidateOnAnimation(android.view.View, int, int, int, int);
+ method public static void postOnAnimation(android.view.View, Runnable!);
+ method public static void postOnAnimationDelayed(android.view.View, Runnable!, long);
+ method public static void removeAccessibilityAction(android.view.View, int);
+ method public static void removeOnUnhandledKeyEventListener(android.view.View, androidx.core.view.ViewCompat.OnUnhandledKeyEventListenerCompat);
+ method public static void replaceAccessibilityAction(android.view.View, androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat, CharSequence?, androidx.core.view.accessibility.AccessibilityViewCommand?);
+ method public static void requestApplyInsets(android.view.View);
+ method public static <T extends android.view.View> T requireViewById(android.view.View, @IdRes int);
+ method @Deprecated public static int resolveSizeAndState(int, int, int);
+ method public static boolean restoreDefaultFocus(android.view.View);
+ method public static void saveAttributeDataForStyleable(android.view.View, android.content.Context, int[], android.util.AttributeSet?, android.content.res.TypedArray, int, int);
+ method public static void setAccessibilityDelegate(android.view.View, androidx.core.view.AccessibilityDelegateCompat!);
+ method @UiThread public static void setAccessibilityHeading(android.view.View!, boolean);
+ method public static void setAccessibilityLiveRegion(android.view.View, int);
+ method @UiThread public static void setAccessibilityPaneTitle(android.view.View!, CharSequence!);
+ method @Deprecated public static void setActivated(android.view.View!, boolean);
+ method @Deprecated public static void setAlpha(android.view.View!, @FloatRange(from=0.0, to=1.0) float);
+ method public static void setAutofillHints(android.view.View, java.lang.String!...);
+ method public static void setBackground(android.view.View, android.graphics.drawable.Drawable?);
+ method public static void setBackgroundTintList(android.view.View, android.content.res.ColorStateList!);
+ method public static void setBackgroundTintMode(android.view.View, android.graphics.PorterDuff.Mode!);
+ method @Deprecated public static void setChildrenDrawingOrderEnabled(android.view.ViewGroup!, boolean);
+ method public static void setClipBounds(android.view.View, android.graphics.Rect!);
+ method public static void setElevation(android.view.View, float);
+ method @Deprecated public static void setFitsSystemWindows(android.view.View!, boolean);
+ method public static void setFocusedByDefault(android.view.View, boolean);
+ method public static void setHasTransientState(android.view.View, boolean);
+ method public static void setImportantForAccessibility(android.view.View, int);
+ method public static void setImportantForAutofill(android.view.View, int);
+ method public static void setKeyboardNavigationCluster(android.view.View, boolean);
+ method public static void setLabelFor(android.view.View, @IdRes int);
+ method public static void setLayerPaint(android.view.View, android.graphics.Paint!);
+ method @Deprecated public static void setLayerType(android.view.View!, int, android.graphics.Paint!);
+ method public static void setLayoutDirection(android.view.View, int);
+ method public static void setNestedScrollingEnabled(android.view.View, boolean);
+ method public static void setNextClusterForwardId(android.view.View, int);
+ method public static void setOnApplyWindowInsetsListener(android.view.View, androidx.core.view.OnApplyWindowInsetsListener?);
+ method public static void setOnReceiveContentListener(android.view.View, String![]?, androidx.core.view.OnReceiveContentListener?);
+ method @Deprecated public static void setOverScrollMode(android.view.View!, int);
+ method public static void setPaddingRelative(android.view.View, @Px int, @Px int, @Px int, @Px int);
+ method @Deprecated public static void setPivotX(android.view.View!, float);
+ method @Deprecated public static void setPivotY(android.view.View!, float);
+ method public static void setPointerIcon(android.view.View, androidx.core.view.PointerIconCompat!);
+ method @Deprecated public static void setRotation(android.view.View!, float);
+ method @Deprecated public static void setRotationX(android.view.View!, float);
+ method @Deprecated public static void setRotationY(android.view.View!, float);
+ method @Deprecated public static void setSaveFromParentEnabled(android.view.View!, boolean);
+ method @Deprecated public static void setScaleX(android.view.View!, float);
+ method @Deprecated public static void setScaleY(android.view.View!, float);
+ method @UiThread public static void setScreenReaderFocusable(android.view.View!, boolean);
+ method public static void setScrollIndicators(android.view.View, @androidx.core.view.ViewCompat.ScrollIndicators int);
+ method public static void setScrollIndicators(android.view.View, @androidx.core.view.ViewCompat.ScrollIndicators int, @androidx.core.view.ViewCompat.ScrollIndicators int);
+ method @UiThread public static void setStateDescription(android.view.View, CharSequence?);
+ method public static void setSystemGestureExclusionRects(android.view.View, java.util.List<android.graphics.Rect!>);
+ method public static void setTooltipText(android.view.View, CharSequence?);
+ method public static void setTransitionName(android.view.View, String!);
+ method @Deprecated public static void setTranslationX(android.view.View!, float);
+ method @Deprecated public static void setTranslationY(android.view.View!, float);
+ method public static void setTranslationZ(android.view.View, float);
+ method public static void setWindowInsetsAnimationCallback(android.view.View, androidx.core.view.WindowInsetsAnimationCompat.Callback?);
+ method @Deprecated public static void setX(android.view.View!, float);
+ method @Deprecated public static void setY(android.view.View!, float);
+ method public static void setZ(android.view.View, float);
+ method public static boolean startDragAndDrop(android.view.View, android.content.ClipData!, android.view.View.DragShadowBuilder!, Object!, int);
+ method public static boolean startNestedScroll(android.view.View, @androidx.core.view.ViewCompat.ScrollAxis int);
+ method public static boolean startNestedScroll(android.view.View, @androidx.core.view.ViewCompat.ScrollAxis int, @androidx.core.view.ViewCompat.NestedScrollType int);
+ method public static void stopNestedScroll(android.view.View);
+ method public static void stopNestedScroll(android.view.View, @androidx.core.view.ViewCompat.NestedScrollType int);
+ method public static void updateDragShadow(android.view.View, android.view.View.DragShadowBuilder!);
+ field public static final int ACCESSIBILITY_LIVE_REGION_ASSERTIVE = 2; // 0x2
+ field public static final int ACCESSIBILITY_LIVE_REGION_NONE = 0; // 0x0
+ field public static final int ACCESSIBILITY_LIVE_REGION_POLITE = 1; // 0x1
+ field public static final int IMPORTANT_FOR_ACCESSIBILITY_AUTO = 0; // 0x0
+ field public static final int IMPORTANT_FOR_ACCESSIBILITY_NO = 2; // 0x2
+ field public static final int IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS = 4; // 0x4
+ field public static final int IMPORTANT_FOR_ACCESSIBILITY_YES = 1; // 0x1
+ field @Deprecated public static final int LAYER_TYPE_HARDWARE = 2; // 0x2
+ field @Deprecated public static final int LAYER_TYPE_NONE = 0; // 0x0
+ field @Deprecated public static final int LAYER_TYPE_SOFTWARE = 1; // 0x1
+ field public static final int LAYOUT_DIRECTION_INHERIT = 2; // 0x2
+ field public static final int LAYOUT_DIRECTION_LOCALE = 3; // 0x3
+ field public static final int LAYOUT_DIRECTION_LTR = 0; // 0x0
+ field public static final int LAYOUT_DIRECTION_RTL = 1; // 0x1
+ field @Deprecated public static final int MEASURED_HEIGHT_STATE_SHIFT = 16; // 0x10
+ field @Deprecated public static final int MEASURED_SIZE_MASK = 16777215; // 0xffffff
+ field @Deprecated public static final int MEASURED_STATE_MASK = -16777216; // 0xff000000
+ field @Deprecated public static final int MEASURED_STATE_TOO_SMALL = 16777216; // 0x1000000
+ field @Deprecated public static final int OVER_SCROLL_ALWAYS = 0; // 0x0
+ field @Deprecated public static final int OVER_SCROLL_IF_CONTENT_SCROLLS = 1; // 0x1
+ field @Deprecated public static final int OVER_SCROLL_NEVER = 2; // 0x2
+ field public static final int SCROLL_AXIS_HORIZONTAL = 1; // 0x1
+ field public static final int SCROLL_AXIS_NONE = 0; // 0x0
+ field public static final int SCROLL_AXIS_VERTICAL = 2; // 0x2
+ field public static final int SCROLL_INDICATOR_BOTTOM = 2; // 0x2
+ field public static final int SCROLL_INDICATOR_END = 32; // 0x20
+ field public static final int SCROLL_INDICATOR_LEFT = 4; // 0x4
+ field public static final int SCROLL_INDICATOR_RIGHT = 8; // 0x8
+ field public static final int SCROLL_INDICATOR_START = 16; // 0x10
+ field public static final int SCROLL_INDICATOR_TOP = 1; // 0x1
+ field public static final int TYPE_NON_TOUCH = 1; // 0x1
+ field public static final int TYPE_TOUCH = 0; // 0x0
+ }
+
+ @IntDef({android.view.View.FOCUS_LEFT, android.view.View.FOCUS_UP, android.view.View.FOCUS_RIGHT, android.view.View.FOCUS_DOWN, android.view.View.FOCUS_FORWARD, android.view.View.FOCUS_BACKWARD}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ViewCompat.FocusDirection {
+ }
+
+ @IntDef({android.view.View.FOCUS_LEFT, android.view.View.FOCUS_UP, android.view.View.FOCUS_RIGHT, android.view.View.FOCUS_DOWN}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ViewCompat.FocusRealDirection {
+ }
+
+ @IntDef({android.view.View.FOCUS_FORWARD, android.view.View.FOCUS_BACKWARD}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ViewCompat.FocusRelativeDirection {
+ }
+
+ @IntDef({androidx.core.view.ViewCompat.TYPE_TOUCH, androidx.core.view.ViewCompat.TYPE_NON_TOUCH}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ViewCompat.NestedScrollType {
+ }
+
+ public static interface ViewCompat.OnUnhandledKeyEventListenerCompat {
+ method public boolean onUnhandledKeyEvent(android.view.View!, android.view.KeyEvent!);
+ }
+
+ @IntDef(value={androidx.core.view.ViewCompat.SCROLL_AXIS_NONE, androidx.core.view.ViewCompat.SCROLL_AXIS_HORIZONTAL, androidx.core.view.ViewCompat.SCROLL_AXIS_VERTICAL}, flag=true) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ViewCompat.ScrollAxis {
+ }
+
+ @IntDef(flag=true, value={androidx.core.view.ViewCompat.SCROLL_INDICATOR_TOP, androidx.core.view.ViewCompat.SCROLL_INDICATOR_BOTTOM, androidx.core.view.ViewCompat.SCROLL_INDICATOR_LEFT, androidx.core.view.ViewCompat.SCROLL_INDICATOR_RIGHT, androidx.core.view.ViewCompat.SCROLL_INDICATOR_START, androidx.core.view.ViewCompat.SCROLL_INDICATOR_END}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface ViewCompat.ScrollIndicators {
+ }
+
+ public final class ViewConfigurationCompat {
+ method public static float getScaledHorizontalScrollFactor(android.view.ViewConfiguration, android.content.Context);
+ method public static int getScaledHoverSlop(android.view.ViewConfiguration!);
+ method @Deprecated public static int getScaledPagingTouchSlop(android.view.ViewConfiguration!);
+ method public static float getScaledVerticalScrollFactor(android.view.ViewConfiguration, android.content.Context);
+ method @Deprecated public static boolean hasPermanentMenuKey(android.view.ViewConfiguration!);
+ method public static boolean shouldShowMenuShortcutsWhenKeyboardPresent(android.view.ViewConfiguration!, android.content.Context);
+ }
+
+ public final class ViewGroupCompat {
+ method public static int getLayoutMode(android.view.ViewGroup);
+ method @androidx.core.view.ViewCompat.ScrollAxis public static int getNestedScrollAxes(android.view.ViewGroup);
+ method public static boolean isTransitionGroup(android.view.ViewGroup);
+ method @Deprecated public static boolean onRequestSendAccessibilityEvent(android.view.ViewGroup!, android.view.View!, android.view.accessibility.AccessibilityEvent!);
+ method public static void setLayoutMode(android.view.ViewGroup, int);
+ method @Deprecated public static void setMotionEventSplittingEnabled(android.view.ViewGroup!, boolean);
+ method public static void setTransitionGroup(android.view.ViewGroup, boolean);
+ field public static final int LAYOUT_MODE_CLIP_BOUNDS = 0; // 0x0
+ field public static final int LAYOUT_MODE_OPTICAL_BOUNDS = 1; // 0x1
+ }
+
+ public final class ViewParentCompat {
+ method public static void notifySubtreeAccessibilityStateChanged(android.view.ViewParent!, android.view.View!, android.view.View!, int);
+ method public static boolean onNestedFling(android.view.ViewParent!, android.view.View!, float, float, boolean);
+ method public static boolean onNestedPreFling(android.view.ViewParent!, android.view.View!, float, float);
+ method public static void onNestedPreScroll(android.view.ViewParent!, android.view.View!, int, int, int[]!);
+ method public static void onNestedPreScroll(android.view.ViewParent!, android.view.View!, int, int, int[]!, int);
+ method public static void onNestedScroll(android.view.ViewParent!, android.view.View!, int, int, int, int);
+ method public static void onNestedScroll(android.view.ViewParent!, android.view.View!, int, int, int, int, int);
+ method public static void onNestedScroll(android.view.ViewParent!, android.view.View!, int, int, int, int, int, int[]);
+ method public static void onNestedScrollAccepted(android.view.ViewParent!, android.view.View!, android.view.View!, int);
+ method public static void onNestedScrollAccepted(android.view.ViewParent!, android.view.View!, android.view.View!, int, int);
+ method public static boolean onStartNestedScroll(android.view.ViewParent!, android.view.View!, android.view.View!, int);
+ method public static boolean onStartNestedScroll(android.view.ViewParent!, android.view.View!, android.view.View!, int, int);
+ method public static void onStopNestedScroll(android.view.ViewParent!, android.view.View!);
+ method public static void onStopNestedScroll(android.view.ViewParent!, android.view.View!, int);
+ method @Deprecated public static boolean requestSendAccessibilityEvent(android.view.ViewParent!, android.view.View!, android.view.accessibility.AccessibilityEvent!);
+ }
+
+ public final class ViewPropertyAnimatorCompat {
+ method public androidx.core.view.ViewPropertyAnimatorCompat! alpha(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! alphaBy(float);
+ method public void cancel();
+ method public long getDuration();
+ method public android.view.animation.Interpolator! getInterpolator();
+ method public long getStartDelay();
+ method public androidx.core.view.ViewPropertyAnimatorCompat! rotation(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! rotationBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! rotationX(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! rotationXBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! rotationY(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! rotationYBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! scaleX(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! scaleXBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! scaleY(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! scaleYBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! setDuration(long);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! setInterpolator(android.view.animation.Interpolator!);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! setListener(androidx.core.view.ViewPropertyAnimatorListener!);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! setStartDelay(long);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! setUpdateListener(androidx.core.view.ViewPropertyAnimatorUpdateListener!);
+ method public void start();
+ method public androidx.core.view.ViewPropertyAnimatorCompat! translationX(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! translationXBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! translationY(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! translationYBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! translationZ(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! translationZBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! withEndAction(Runnable!);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! withLayer();
+ method public androidx.core.view.ViewPropertyAnimatorCompat! withStartAction(Runnable!);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! x(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! xBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! y(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! yBy(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! z(float);
+ method public androidx.core.view.ViewPropertyAnimatorCompat! zBy(float);
+ }
+
+ public interface ViewPropertyAnimatorListener {
+ method public void onAnimationCancel(android.view.View!);
+ method public void onAnimationEnd(android.view.View!);
+ method public void onAnimationStart(android.view.View!);
+ }
+
+ public class ViewPropertyAnimatorListenerAdapter implements androidx.core.view.ViewPropertyAnimatorListener {
+ ctor public ViewPropertyAnimatorListenerAdapter();
+ method public void onAnimationCancel(android.view.View!);
+ method public void onAnimationEnd(android.view.View!);
+ method public void onAnimationStart(android.view.View!);
+ }
+
+ public interface ViewPropertyAnimatorUpdateListener {
+ method public void onAnimationUpdate(android.view.View!);
+ }
+
+ public final class WindowCompat {
+ method public static androidx.core.view.WindowInsetsControllerCompat? getInsetsController(android.view.Window, android.view.View);
+ method public static <T extends android.view.View> T requireViewById(android.view.Window, @IdRes int);
+ method public static void setDecorFitsSystemWindows(android.view.Window, boolean);
+ field public static final int FEATURE_ACTION_BAR = 8; // 0x8
+ field public static final int FEATURE_ACTION_BAR_OVERLAY = 9; // 0x9
+ field public static final int FEATURE_ACTION_MODE_OVERLAY = 10; // 0xa
+ }
+
+ public final class WindowInsetsAnimationCompat {
+ ctor public WindowInsetsAnimationCompat(@androidx.core.view.WindowInsetsCompat.Type.InsetsType int, android.view.animation.Interpolator?, long);
+ method @FloatRange(from=0.0f, to=1.0f) public float getAlpha();
+ method public long getDurationMillis();
+ method @FloatRange(from=0.0f, to=1.0f) public float getFraction();
+ method public float getInterpolatedFraction();
+ method public android.view.animation.Interpolator? getInterpolator();
+ method @androidx.core.view.WindowInsetsCompat.Type.InsetsType public int getTypeMask();
+ method public void setAlpha(@FloatRange(from=0.0f, to=1.0f) float);
+ method public void setFraction(@FloatRange(from=0.0f, to=1.0f) float);
+ }
+
+ public static final class WindowInsetsAnimationCompat.BoundsCompat {
+ ctor public WindowInsetsAnimationCompat.BoundsCompat(androidx.core.graphics.Insets, androidx.core.graphics.Insets);
+ method public androidx.core.graphics.Insets getLowerBound();
+ method public androidx.core.graphics.Insets getUpperBound();
+ method public androidx.core.view.WindowInsetsAnimationCompat.BoundsCompat inset(androidx.core.graphics.Insets);
+ method @RequiresApi(30) public android.view.WindowInsetsAnimation.Bounds toBounds();
+ method @RequiresApi(30) public static androidx.core.view.WindowInsetsAnimationCompat.BoundsCompat toBoundsCompat(android.view.WindowInsetsAnimation.Bounds);
+ }
+
+ public abstract static class WindowInsetsAnimationCompat.Callback {
+ ctor public WindowInsetsAnimationCompat.Callback(@androidx.core.view.WindowInsetsAnimationCompat.Callback.DispatchMode int);
+ method @androidx.core.view.WindowInsetsAnimationCompat.Callback.DispatchMode public final int getDispatchMode();
+ method public void onEnd(androidx.core.view.WindowInsetsAnimationCompat);
+ method public void onPrepare(androidx.core.view.WindowInsetsAnimationCompat);
+ method public abstract androidx.core.view.WindowInsetsCompat onProgress(androidx.core.view.WindowInsetsCompat, java.util.List<androidx.core.view.WindowInsetsAnimationCompat!>);
+ method public androidx.core.view.WindowInsetsAnimationCompat.BoundsCompat onStart(androidx.core.view.WindowInsetsAnimationCompat, androidx.core.view.WindowInsetsAnimationCompat.BoundsCompat);
+ field public static final int DISPATCH_MODE_CONTINUE_ON_SUBTREE = 1; // 0x1
+ field public static final int DISPATCH_MODE_STOP = 0; // 0x0
+ }
+
+ @IntDef({androidx.core.view.WindowInsetsAnimationCompat.Callback.DISPATCH_MODE_STOP, androidx.core.view.WindowInsetsAnimationCompat.Callback.DISPATCH_MODE_CONTINUE_ON_SUBTREE}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface WindowInsetsAnimationCompat.Callback.DispatchMode {
+ }
+
+ public interface WindowInsetsAnimationControlListenerCompat {
+ method public void onCancelled(androidx.core.view.WindowInsetsAnimationControllerCompat?);
+ method public void onFinished(androidx.core.view.WindowInsetsAnimationControllerCompat);
+ method public void onReady(androidx.core.view.WindowInsetsAnimationControllerCompat, @androidx.core.view.WindowInsetsCompat.Type.InsetsType int);
+ }
+
+ public final class WindowInsetsAnimationControllerCompat {
+ method public void finish(boolean);
+ method public float getCurrentAlpha();
+ method @FloatRange(from=0.0f, to=1.0f) public float getCurrentFraction();
+ method public androidx.core.graphics.Insets getCurrentInsets();
+ method public androidx.core.graphics.Insets getHiddenStateInsets();
+ method public androidx.core.graphics.Insets getShownStateInsets();
+ method @androidx.core.view.WindowInsetsCompat.Type.InsetsType public int getTypes();
+ method public boolean isCancelled();
+ method public boolean isFinished();
+ method public boolean isReady();
+ method public void setInsetsAndAlpha(androidx.core.graphics.Insets?, @FloatRange(from=0.0f, to=1.0f) float, @FloatRange(from=0.0f, to=1.0f) float);
+ }
+
+ public class WindowInsetsCompat {
+ ctor public WindowInsetsCompat(androidx.core.view.WindowInsetsCompat?);
+ method @Deprecated public androidx.core.view.WindowInsetsCompat consumeDisplayCutout();
+ method @Deprecated public androidx.core.view.WindowInsetsCompat consumeStableInsets();
+ method @Deprecated public androidx.core.view.WindowInsetsCompat consumeSystemWindowInsets();
+ method public androidx.core.view.DisplayCutoutCompat? getDisplayCutout();
+ method public androidx.core.graphics.Insets getInsets(@androidx.core.view.WindowInsetsCompat.Type.InsetsType int);
+ method public androidx.core.graphics.Insets getInsetsIgnoringVisibility(@androidx.core.view.WindowInsetsCompat.Type.InsetsType int);
+ method @Deprecated public androidx.core.graphics.Insets getMandatorySystemGestureInsets();
+ method @Deprecated public int getStableInsetBottom();
+ method @Deprecated public int getStableInsetLeft();
+ method @Deprecated public int getStableInsetRight();
+ method @Deprecated public int getStableInsetTop();
+ method @Deprecated public androidx.core.graphics.Insets getStableInsets();
+ method @Deprecated public androidx.core.graphics.Insets getSystemGestureInsets();
+ method @Deprecated public int getSystemWindowInsetBottom();
+ method @Deprecated public int getSystemWindowInsetLeft();
+ method @Deprecated public int getSystemWindowInsetRight();
+ method @Deprecated public int getSystemWindowInsetTop();
+ method @Deprecated public androidx.core.graphics.Insets getSystemWindowInsets();
+ method @Deprecated public androidx.core.graphics.Insets getTappableElementInsets();
+ method public boolean hasInsets();
+ method @Deprecated public boolean hasStableInsets();
+ method @Deprecated public boolean hasSystemWindowInsets();
+ method public androidx.core.view.WindowInsetsCompat inset(androidx.core.graphics.Insets);
+ method public androidx.core.view.WindowInsetsCompat inset(@IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0) int);
+ method public boolean isConsumed();
+ method public boolean isRound();
+ method public boolean isVisible(@androidx.core.view.WindowInsetsCompat.Type.InsetsType int);
+ method @Deprecated public androidx.core.view.WindowInsetsCompat replaceSystemWindowInsets(int, int, int, int);
+ method @Deprecated public androidx.core.view.WindowInsetsCompat replaceSystemWindowInsets(android.graphics.Rect);
+ method @RequiresApi(20) public android.view.WindowInsets? toWindowInsets();
+ method @RequiresApi(20) public static androidx.core.view.WindowInsetsCompat toWindowInsetsCompat(android.view.WindowInsets);
+ method @RequiresApi(20) public static androidx.core.view.WindowInsetsCompat toWindowInsetsCompat(android.view.WindowInsets, android.view.View?);
+ field public static final androidx.core.view.WindowInsetsCompat CONSUMED;
+ }
+
+ public static final class WindowInsetsCompat.Builder {
+ ctor public WindowInsetsCompat.Builder();
+ ctor public WindowInsetsCompat.Builder(androidx.core.view.WindowInsetsCompat);
+ method public androidx.core.view.WindowInsetsCompat build();
+ method public androidx.core.view.WindowInsetsCompat.Builder setDisplayCutout(androidx.core.view.DisplayCutoutCompat?);
+ method public androidx.core.view.WindowInsetsCompat.Builder setInsets(@androidx.core.view.WindowInsetsCompat.Type.InsetsType int, androidx.core.graphics.Insets);
+ method public androidx.core.view.WindowInsetsCompat.Builder setInsetsIgnoringVisibility(@androidx.core.view.WindowInsetsCompat.Type.InsetsType int, androidx.core.graphics.Insets);
+ method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setMandatorySystemGestureInsets(androidx.core.graphics.Insets);
+ method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setStableInsets(androidx.core.graphics.Insets);
+ method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setSystemGestureInsets(androidx.core.graphics.Insets);
+ method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setSystemWindowInsets(androidx.core.graphics.Insets);
+ method @Deprecated public androidx.core.view.WindowInsetsCompat.Builder setTappableElementInsets(androidx.core.graphics.Insets);
+ method public androidx.core.view.WindowInsetsCompat.Builder setVisible(@androidx.core.view.WindowInsetsCompat.Type.InsetsType int, boolean);
+ }
+
+ public static final class WindowInsetsCompat.Type {
+ method @androidx.core.view.WindowInsetsCompat.Type.InsetsType public static int captionBar();
+ method @androidx.core.view.WindowInsetsCompat.Type.InsetsType public static int displayCutout();
+ method @androidx.core.view.WindowInsetsCompat.Type.InsetsType public static int ime();
+ method @androidx.core.view.WindowInsetsCompat.Type.InsetsType public static int mandatorySystemGestures();
+ method @androidx.core.view.WindowInsetsCompat.Type.InsetsType public static int navigationBars();
+ method @androidx.core.view.WindowInsetsCompat.Type.InsetsType public static int statusBars();
+ method @androidx.core.view.WindowInsetsCompat.Type.InsetsType public static int systemBars();
+ method @androidx.core.view.WindowInsetsCompat.Type.InsetsType public static int systemGestures();
+ method @androidx.core.view.WindowInsetsCompat.Type.InsetsType public static int tappableElement();
+ }
+
+ @IntDef(flag=true, value={androidx.core.view.WindowInsetsCompat.Type.STATUS_BARS, androidx.core.view.WindowInsetsCompat.Type.NAVIGATION_BARS, androidx.core.view.WindowInsetsCompat.Type.CAPTION_BAR, androidx.core.view.WindowInsetsCompat.Type.IME, androidx.core.view.WindowInsetsCompat.Type.WINDOW_DECOR, androidx.core.view.WindowInsetsCompat.Type.SYSTEM_GESTURES, androidx.core.view.WindowInsetsCompat.Type.MANDATORY_SYSTEM_GESTURES, androidx.core.view.WindowInsetsCompat.Type.TAPPABLE_ELEMENT, androidx.core.view.WindowInsetsCompat.Type.DISPLAY_CUTOUT}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface WindowInsetsCompat.Type.InsetsType {
+ }
+
+ public final class WindowInsetsControllerCompat {
+ ctor public WindowInsetsControllerCompat(android.view.Window, android.view.View);
+ method public void addOnControllableInsetsChangedListener(androidx.core.view.WindowInsetsControllerCompat.OnControllableInsetsChangedListener);
+ method public void controlWindowInsetsAnimation(@androidx.core.view.WindowInsetsCompat.Type.InsetsType int, long, android.view.animation.Interpolator?, android.os.CancellationSignal?, androidx.core.view.WindowInsetsAnimationControlListenerCompat);
+ method public int getSystemBarsBehavior();
+ method public void hide(@androidx.core.view.WindowInsetsCompat.Type.InsetsType int);
+ method public boolean isAppearanceLightNavigationBars();
+ method public boolean isAppearanceLightStatusBars();
+ method public void removeOnControllableInsetsChangedListener(androidx.core.view.WindowInsetsControllerCompat.OnControllableInsetsChangedListener);
+ method public void setAppearanceLightNavigationBars(boolean);
+ method public void setAppearanceLightStatusBars(boolean);
+ method public void setSystemBarsBehavior(int);
+ method public void show(@androidx.core.view.WindowInsetsCompat.Type.InsetsType int);
+ method @RequiresApi(30) public static androidx.core.view.WindowInsetsControllerCompat toWindowInsetsControllerCompat(android.view.WindowInsetsController);
+ field public static final int BEHAVIOR_SHOW_BARS_BY_SWIPE = 1; // 0x1
+ field public static final int BEHAVIOR_SHOW_BARS_BY_TOUCH = 0; // 0x0
+ field public static final int BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE = 2; // 0x2
+ }
+
+ public static interface WindowInsetsControllerCompat.OnControllableInsetsChangedListener {
+ method public void onControllableInsetsChanged(androidx.core.view.WindowInsetsControllerCompat, @androidx.core.view.WindowInsetsCompat.Type.InsetsType int);
+ }
+
+}
+
+package androidx.core.view.accessibility {
+
+ public final class AccessibilityClickableSpanCompat extends android.text.style.ClickableSpan {
+ ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public AccessibilityClickableSpanCompat(int, androidx.core.view.accessibility.AccessibilityNodeInfoCompat!, int);
+ method public void onClick(android.view.View);
+ field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final String SPAN_ID = "ACCESSIBILITY_CLICKABLE_SPAN_ID";
+ }
+
+ public final class AccessibilityEventCompat {
+ method @Deprecated public static void appendRecord(android.view.accessibility.AccessibilityEvent!, androidx.core.view.accessibility.AccessibilityRecordCompat!);
+ method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! asRecord(android.view.accessibility.AccessibilityEvent!);
+ method public static int getAction(android.view.accessibility.AccessibilityEvent!);
+ method @androidx.core.view.accessibility.AccessibilityEventCompat.ContentChangeType public static int getContentChangeTypes(android.view.accessibility.AccessibilityEvent!);
+ method public static int getMovementGranularity(android.view.accessibility.AccessibilityEvent!);
+ method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! getRecord(android.view.accessibility.AccessibilityEvent!, int);
+ method @Deprecated public static int getRecordCount(android.view.accessibility.AccessibilityEvent!);
+ method public static void setAction(android.view.accessibility.AccessibilityEvent!, int);
+ method public static void setContentChangeTypes(android.view.accessibility.AccessibilityEvent!, @androidx.core.view.accessibility.AccessibilityEventCompat.ContentChangeType int);
+ method public static void setMovementGranularity(android.view.accessibility.AccessibilityEvent!, int);
+ field public static final int CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION = 4; // 0x4
+ field public static final int CONTENT_CHANGE_TYPE_PANE_APPEARED = 16; // 0x10
+ field public static final int CONTENT_CHANGE_TYPE_PANE_DISAPPEARED = 32; // 0x20
+ field public static final int CONTENT_CHANGE_TYPE_PANE_TITLE = 8; // 0x8
+ field public static final int CONTENT_CHANGE_TYPE_STATE_DESCRIPTION = 64; // 0x40
+ field public static final int CONTENT_CHANGE_TYPE_SUBTREE = 1; // 0x1
+ field public static final int CONTENT_CHANGE_TYPE_TEXT = 2; // 0x2
+ field public static final int CONTENT_CHANGE_TYPE_UNDEFINED = 0; // 0x0
+ field public static final int TYPES_ALL_MASK = -1; // 0xffffffff
+ field public static final int TYPE_ANNOUNCEMENT = 16384; // 0x4000
+ field public static final int TYPE_ASSIST_READING_CONTEXT = 16777216; // 0x1000000
+ field public static final int TYPE_GESTURE_DETECTION_END = 524288; // 0x80000
+ field public static final int TYPE_GESTURE_DETECTION_START = 262144; // 0x40000
+ field @Deprecated public static final int TYPE_TOUCH_EXPLORATION_GESTURE_END = 1024; // 0x400
+ field @Deprecated public static final int TYPE_TOUCH_EXPLORATION_GESTURE_START = 512; // 0x200
+ field public static final int TYPE_TOUCH_INTERACTION_END = 2097152; // 0x200000
+ field public static final int TYPE_TOUCH_INTERACTION_START = 1048576; // 0x100000
+ field public static final int TYPE_VIEW_ACCESSIBILITY_FOCUSED = 32768; // 0x8000
+ field public static final int TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED = 65536; // 0x10000
+ field public static final int TYPE_VIEW_CONTEXT_CLICKED = 8388608; // 0x800000
+ field @Deprecated public static final int TYPE_VIEW_HOVER_ENTER = 128; // 0x80
+ field @Deprecated public static final int TYPE_VIEW_HOVER_EXIT = 256; // 0x100
+ field @Deprecated public static final int TYPE_VIEW_SCROLLED = 4096; // 0x1000
+ field @Deprecated public static final int TYPE_VIEW_TEXT_SELECTION_CHANGED = 8192; // 0x2000
+ field public static final int TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY = 131072; // 0x20000
+ field public static final int TYPE_WINDOWS_CHANGED = 4194304; // 0x400000
+ field @Deprecated public static final int TYPE_WINDOW_CONTENT_CHANGED = 2048; // 0x800
+ }
+
+ @IntDef(flag=true, value={androidx.core.view.accessibility.AccessibilityEventCompat.CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION, androidx.core.view.accessibility.AccessibilityEventCompat.CONTENT_CHANGE_TYPE_STATE_DESCRIPTION, androidx.core.view.accessibility.AccessibilityEventCompat.CONTENT_CHANGE_TYPE_SUBTREE, androidx.core.view.accessibility.AccessibilityEventCompat.CONTENT_CHANGE_TYPE_TEXT, androidx.core.view.accessibility.AccessibilityEventCompat.CONTENT_CHANGE_TYPE_UNDEFINED}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface AccessibilityEventCompat.ContentChangeType {
+ }
+
+ public final class AccessibilityManagerCompat {
+ method @Deprecated public static boolean addAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListener!);
+ method public static boolean addTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.TouchExplorationStateChangeListener!);
+ method @Deprecated public static java.util.List<android.accessibilityservice.AccessibilityServiceInfo!>! getEnabledAccessibilityServiceList(android.view.accessibility.AccessibilityManager!, int);
+ method @Deprecated public static java.util.List<android.accessibilityservice.AccessibilityServiceInfo!>! getInstalledAccessibilityServiceList(android.view.accessibility.AccessibilityManager!);
+ method @Deprecated public static boolean isTouchExplorationEnabled(android.view.accessibility.AccessibilityManager!);
+ method @Deprecated public static boolean removeAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListener!);
+ method public static boolean removeTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager!, androidx.core.view.accessibility.AccessibilityManagerCompat.TouchExplorationStateChangeListener!);
+ }
+
+ @Deprecated public static interface AccessibilityManagerCompat.AccessibilityStateChangeListener {
+ method @Deprecated public void onAccessibilityStateChanged(boolean);
+ }
+
+ @Deprecated public abstract static class AccessibilityManagerCompat.AccessibilityStateChangeListenerCompat implements androidx.core.view.accessibility.AccessibilityManagerCompat.AccessibilityStateChangeListener {
+ ctor @Deprecated public AccessibilityManagerCompat.AccessibilityStateChangeListenerCompat();
+ }
+
+ public static interface AccessibilityManagerCompat.TouchExplorationStateChangeListener {
+ method public void onTouchExplorationStateChanged(boolean);
+ }
+
+ public class AccessibilityNodeInfoCompat {
+ ctor @Deprecated public AccessibilityNodeInfoCompat(Object!);
+ method public void addAction(int);
+ method public void addAction(androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat!);
+ method public void addChild(android.view.View!);
+ method public void addChild(android.view.View!, int);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void addSpansToExtras(CharSequence!, android.view.View!);
+ method public boolean canOpenPopup();
+ method public java.util.List<androidx.core.view.accessibility.AccessibilityNodeInfoCompat!>! findAccessibilityNodeInfosByText(String!);
+ method public java.util.List<androidx.core.view.accessibility.AccessibilityNodeInfoCompat!>! findAccessibilityNodeInfosByViewId(String!);
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! findFocus(int);
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! focusSearch(int);
+ method public java.util.List<androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat!>! getActionList();
+ method public int getActions();
+ method @Deprecated public void getBoundsInParent(android.graphics.Rect!);
+ method public void getBoundsInScreen(android.graphics.Rect!);
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getChild(int);
+ method public int getChildCount();
+ method public CharSequence! getClassName();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static android.text.style.ClickableSpan![]! getClickableSpans(CharSequence!);
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionInfoCompat! getCollectionInfo();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionItemInfoCompat! getCollectionItemInfo();
+ method public CharSequence! getContentDescription();
+ method public int getDrawingOrder();
+ method public CharSequence! getError();
+ method public android.os.Bundle! getExtras();
+ method public CharSequence? getHintText();
+ method @Deprecated public Object! getInfo();
+ method public int getInputType();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getLabelFor();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getLabeledBy();
+ method public int getLiveRegion();
+ method public int getMaxTextLength();
+ method public int getMovementGranularities();
+ method public CharSequence! getPackageName();
+ method public CharSequence? getPaneTitle();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getParent();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat! getRangeInfo();
+ method public CharSequence? getRoleDescription();
+ method public CharSequence? getStateDescription();
+ method public CharSequence! getText();
+ method public int getTextSelectionEnd();
+ method public int getTextSelectionStart();
+ method public CharSequence? getTooltipText();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.TouchDelegateInfoCompat? getTouchDelegateInfo();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getTraversalAfter();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getTraversalBefore();
+ method public String! getViewIdResourceName();
+ method public androidx.core.view.accessibility.AccessibilityWindowInfoCompat! getWindow();
+ method public int getWindowId();
+ method public boolean isAccessibilityFocused();
+ method public boolean isCheckable();
+ method public boolean isChecked();
+ method public boolean isClickable();
+ method public boolean isContentInvalid();
+ method public boolean isContextClickable();
+ method public boolean isDismissable();
+ method public boolean isEditable();
+ method public boolean isEnabled();
+ method public boolean isFocusable();
+ method public boolean isFocused();
+ method public boolean isHeading();
+ method public boolean isImportantForAccessibility();
+ method public boolean isLongClickable();
+ method public boolean isMultiLine();
+ method public boolean isPassword();
+ method public boolean isScreenReaderFocusable();
+ method public boolean isScrollable();
+ method public boolean isSelected();
+ method public boolean isShowingHintText();
+ method public boolean isTextEntryKey();
+ method public boolean isVisibleToUser();
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! obtain(android.view.View!);
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! obtain(android.view.View!, int);
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! obtain();
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! obtain(androidx.core.view.accessibility.AccessibilityNodeInfoCompat!);
+ method public boolean performAction(int);
+ method public boolean performAction(int, android.os.Bundle!);
+ method public void recycle();
+ method public boolean refresh();
+ method public boolean removeAction(androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat!);
+ method public boolean removeChild(android.view.View!);
+ method public boolean removeChild(android.view.View!, int);
+ method public void setAccessibilityFocused(boolean);
+ method @Deprecated public void setBoundsInParent(android.graphics.Rect!);
+ method public void setBoundsInScreen(android.graphics.Rect!);
+ method public void setCanOpenPopup(boolean);
+ method public void setCheckable(boolean);
+ method public void setChecked(boolean);
+ method public void setClassName(CharSequence!);
+ method public void setClickable(boolean);
+ method public void setCollectionInfo(Object!);
+ method public void setCollectionItemInfo(Object!);
+ method public void setContentDescription(CharSequence!);
+ method public void setContentInvalid(boolean);
+ method public void setContextClickable(boolean);
+ method public void setDismissable(boolean);
+ method public void setDrawingOrder(int);
+ method public void setEditable(boolean);
+ method public void setEnabled(boolean);
+ method public void setError(CharSequence!);
+ method public void setFocusable(boolean);
+ method public void setFocused(boolean);
+ method public void setHeading(boolean);
+ method public void setHintText(CharSequence?);
+ method public void setImportantForAccessibility(boolean);
+ method public void setInputType(int);
+ method public void setLabelFor(android.view.View!);
+ method public void setLabelFor(android.view.View!, int);
+ method public void setLabeledBy(android.view.View!);
+ method public void setLabeledBy(android.view.View!, int);
+ method public void setLiveRegion(int);
+ method public void setLongClickable(boolean);
+ method public void setMaxTextLength(int);
+ method public void setMovementGranularities(int);
+ method public void setMultiLine(boolean);
+ method public void setPackageName(CharSequence!);
+ method public void setPaneTitle(CharSequence?);
+ method public void setParent(android.view.View!);
+ method public void setParent(android.view.View!, int);
+ method public void setPassword(boolean);
+ method public void setRangeInfo(androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat!);
+ method public void setRoleDescription(CharSequence?);
+ method public void setScreenReaderFocusable(boolean);
+ method public void setScrollable(boolean);
+ method public void setSelected(boolean);
+ method public void setShowingHintText(boolean);
+ method public void setSource(android.view.View!);
+ method public void setSource(android.view.View!, int);
+ method public void setStateDescription(CharSequence?);
+ method public void setText(CharSequence!);
+ method public void setTextEntryKey(boolean);
+ method public void setTextSelection(int, int);
+ method public void setTooltipText(CharSequence?);
+ method public void setTouchDelegateInfo(androidx.core.view.accessibility.AccessibilityNodeInfoCompat.TouchDelegateInfoCompat);
+ method public void setTraversalAfter(android.view.View!);
+ method public void setTraversalAfter(android.view.View!, int);
+ method public void setTraversalBefore(android.view.View!);
+ method public void setTraversalBefore(android.view.View!, int);
+ method public void setViewIdResourceName(String!);
+ method public void setVisibleToUser(boolean);
+ method public android.view.accessibility.AccessibilityNodeInfo! unwrap();
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat! wrap(android.view.accessibility.AccessibilityNodeInfo);
+ field public static final int ACTION_ACCESSIBILITY_FOCUS = 64; // 0x40
+ field public static final String ACTION_ARGUMENT_COLUMN_INT = "android.view.accessibility.action.ARGUMENT_COLUMN_INT";
+ field public static final String ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN = "ACTION_ARGUMENT_EXTEND_SELECTION_BOOLEAN";
+ field public static final String ACTION_ARGUMENT_HTML_ELEMENT_STRING = "ACTION_ARGUMENT_HTML_ELEMENT_STRING";
+ field public static final String ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT = "ACTION_ARGUMENT_MOVEMENT_GRANULARITY_INT";
+ field public static final String ACTION_ARGUMENT_MOVE_WINDOW_X = "ACTION_ARGUMENT_MOVE_WINDOW_X";
+ field public static final String ACTION_ARGUMENT_MOVE_WINDOW_Y = "ACTION_ARGUMENT_MOVE_WINDOW_Y";
+ field public static final String ACTION_ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT = "android.view.accessibility.action.ARGUMENT_PRESS_AND_HOLD_DURATION_MILLIS_INT";
+ field public static final String ACTION_ARGUMENT_PROGRESS_VALUE = "android.view.accessibility.action.ARGUMENT_PROGRESS_VALUE";
+ field public static final String ACTION_ARGUMENT_ROW_INT = "android.view.accessibility.action.ARGUMENT_ROW_INT";
+ field public static final String ACTION_ARGUMENT_SELECTION_END_INT = "ACTION_ARGUMENT_SELECTION_END_INT";
+ field public static final String ACTION_ARGUMENT_SELECTION_START_INT = "ACTION_ARGUMENT_SELECTION_START_INT";
+ field public static final String ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE = "ACTION_ARGUMENT_SET_TEXT_CHARSEQUENCE";
+ field public static final int ACTION_CLEAR_ACCESSIBILITY_FOCUS = 128; // 0x80
+ field public static final int ACTION_CLEAR_FOCUS = 2; // 0x2
+ field public static final int ACTION_CLEAR_SELECTION = 8; // 0x8
+ field public static final int ACTION_CLICK = 16; // 0x10
+ field public static final int ACTION_COLLAPSE = 524288; // 0x80000
+ field public static final int ACTION_COPY = 16384; // 0x4000
+ field public static final int ACTION_CUT = 65536; // 0x10000
+ field public static final int ACTION_DISMISS = 1048576; // 0x100000
+ field public static final int ACTION_EXPAND = 262144; // 0x40000
+ field public static final int ACTION_FOCUS = 1; // 0x1
+ field public static final int ACTION_LONG_CLICK = 32; // 0x20
+ field public static final int ACTION_NEXT_AT_MOVEMENT_GRANULARITY = 256; // 0x100
+ field public static final int ACTION_NEXT_HTML_ELEMENT = 1024; // 0x400
+ field public static final int ACTION_PASTE = 32768; // 0x8000
+ field public static final int ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY = 512; // 0x200
+ field public static final int ACTION_PREVIOUS_HTML_ELEMENT = 2048; // 0x800
+ field public static final int ACTION_SCROLL_BACKWARD = 8192; // 0x2000
+ field public static final int ACTION_SCROLL_FORWARD = 4096; // 0x1000
+ field public static final int ACTION_SELECT = 4; // 0x4
+ field public static final int ACTION_SET_SELECTION = 131072; // 0x20000
+ field public static final int ACTION_SET_TEXT = 2097152; // 0x200000
+ field public static final int FOCUS_ACCESSIBILITY = 2; // 0x2
+ field public static final int FOCUS_INPUT = 1; // 0x1
+ field public static final int MOVEMENT_GRANULARITY_CHARACTER = 1; // 0x1
+ field public static final int MOVEMENT_GRANULARITY_LINE = 4; // 0x4
+ field public static final int MOVEMENT_GRANULARITY_PAGE = 16; // 0x10
+ field public static final int MOVEMENT_GRANULARITY_PARAGRAPH = 8; // 0x8
+ field public static final int MOVEMENT_GRANULARITY_WORD = 2; // 0x2
+ field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int mParentVirtualDescendantId;
+ }
+
+ public static class AccessibilityNodeInfoCompat.AccessibilityActionCompat {
+ ctor public AccessibilityNodeInfoCompat.AccessibilityActionCompat(int, CharSequence!);
+ ctor @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public AccessibilityNodeInfoCompat.AccessibilityActionCompat(int, CharSequence!, androidx.core.view.accessibility.AccessibilityViewCommand!);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! createReplacementAction(CharSequence!, androidx.core.view.accessibility.AccessibilityViewCommand!);
+ method public int getId();
+ method public CharSequence! getLabel();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public boolean perform(android.view.View!, android.os.Bundle!);
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_ACCESSIBILITY_FOCUS;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CLEAR_ACCESSIBILITY_FOCUS;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CLEAR_FOCUS;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CLEAR_SELECTION;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CLICK;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_COLLAPSE;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CONTEXT_CLICK;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_COPY;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_CUT;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_DISMISS;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_EXPAND;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_FOCUS;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_HIDE_TOOLTIP;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_IME_ENTER;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_LONG_CLICK;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_MOVE_WINDOW;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_NEXT_AT_MOVEMENT_GRANULARITY;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_NEXT_HTML_ELEMENT;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_DOWN;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_LEFT;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_RIGHT;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PAGE_UP;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PASTE;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat ACTION_PRESS_AND_HOLD;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_PREVIOUS_HTML_ELEMENT;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_BACKWARD;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_DOWN;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_FORWARD;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_LEFT;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_RIGHT;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_TO_POSITION;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SCROLL_UP;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SELECT;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SET_PROGRESS;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SET_SELECTION;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SET_TEXT;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SHOW_ON_SCREEN;
+ field public static final androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat! ACTION_SHOW_TOOLTIP;
+ field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) protected final androidx.core.view.accessibility.AccessibilityViewCommand! mCommand;
+ }
+
+ public static class AccessibilityNodeInfoCompat.CollectionInfoCompat {
+ method public int getColumnCount();
+ method public int getRowCount();
+ method public int getSelectionMode();
+ method public boolean isHierarchical();
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionInfoCompat! obtain(int, int, boolean, int);
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionInfoCompat! obtain(int, int, boolean);
+ field public static final int SELECTION_MODE_MULTIPLE = 2; // 0x2
+ field public static final int SELECTION_MODE_NONE = 0; // 0x0
+ field public static final int SELECTION_MODE_SINGLE = 1; // 0x1
+ }
+
+ public static class AccessibilityNodeInfoCompat.CollectionItemInfoCompat {
+ method public int getColumnIndex();
+ method public int getColumnSpan();
+ method public int getRowIndex();
+ method public int getRowSpan();
+ method @Deprecated public boolean isHeading();
+ method public boolean isSelected();
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionItemInfoCompat! obtain(int, int, int, int, boolean, boolean);
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.CollectionItemInfoCompat! obtain(int, int, int, int, boolean);
+ }
+
+ public static class AccessibilityNodeInfoCompat.RangeInfoCompat {
+ method public float getCurrent();
+ method public float getMax();
+ method public float getMin();
+ method public int getType();
+ method public static androidx.core.view.accessibility.AccessibilityNodeInfoCompat.RangeInfoCompat! obtain(int, float, float, float);
+ field public static final int RANGE_TYPE_FLOAT = 1; // 0x1
+ field public static final int RANGE_TYPE_INT = 0; // 0x0
+ field public static final int RANGE_TYPE_PERCENT = 2; // 0x2
+ }
+
+ public static final class AccessibilityNodeInfoCompat.TouchDelegateInfoCompat {
+ ctor public AccessibilityNodeInfoCompat.TouchDelegateInfoCompat(java.util.Map<android.graphics.Region!,android.view.View!>);
+ method public android.graphics.Region? getRegionAt(@IntRange(from=0) int);
+ method @IntRange(from=0) public int getRegionCount();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat? getTargetForRegion(android.graphics.Region);
+ }
+
+ public class AccessibilityNodeProviderCompat {
+ ctor public AccessibilityNodeProviderCompat();
+ ctor public AccessibilityNodeProviderCompat(Object!);
+ method public void addExtraDataToAccessibilityNodeInfo(int, androidx.core.view.accessibility.AccessibilityNodeInfoCompat, String, android.os.Bundle?);
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat? createAccessibilityNodeInfo(int);
+ method public java.util.List<androidx.core.view.accessibility.AccessibilityNodeInfoCompat!>? findAccessibilityNodeInfosByText(String!, int);
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat? findFocus(int);
+ method public Object! getProvider();
+ method public boolean performAction(int, int, android.os.Bundle!);
+ field public static final int HOST_VIEW_ID = -1; // 0xffffffff
+ }
+
+ public class AccessibilityRecordCompat {
+ ctor @Deprecated public AccessibilityRecordCompat(Object!);
+ method @Deprecated public boolean equals(Object?);
+ method @Deprecated public int getAddedCount();
+ method @Deprecated public CharSequence! getBeforeText();
+ method @Deprecated public CharSequence! getClassName();
+ method @Deprecated public CharSequence! getContentDescription();
+ method @Deprecated public int getCurrentItemIndex();
+ method @Deprecated public int getFromIndex();
+ method @Deprecated public Object! getImpl();
+ method @Deprecated public int getItemCount();
+ method @Deprecated public int getMaxScrollX();
+ method public static int getMaxScrollX(android.view.accessibility.AccessibilityRecord!);
+ method @Deprecated public int getMaxScrollY();
+ method public static int getMaxScrollY(android.view.accessibility.AccessibilityRecord!);
+ method @Deprecated public android.os.Parcelable! getParcelableData();
+ method @Deprecated public int getRemovedCount();
+ method @Deprecated public int getScrollX();
+ method @Deprecated public int getScrollY();
+ method @Deprecated public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getSource();
+ method @Deprecated public java.util.List<java.lang.CharSequence!>! getText();
+ method @Deprecated public int getToIndex();
+ method @Deprecated public int getWindowId();
+ method @Deprecated public int hashCode();
+ method @Deprecated public boolean isChecked();
+ method @Deprecated public boolean isEnabled();
+ method @Deprecated public boolean isFullScreen();
+ method @Deprecated public boolean isPassword();
+ method @Deprecated public boolean isScrollable();
+ method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! obtain(androidx.core.view.accessibility.AccessibilityRecordCompat!);
+ method @Deprecated public static androidx.core.view.accessibility.AccessibilityRecordCompat! obtain();
+ method @Deprecated public void recycle();
+ method @Deprecated public void setAddedCount(int);
+ method @Deprecated public void setBeforeText(CharSequence!);
+ method @Deprecated public void setChecked(boolean);
+ method @Deprecated public void setClassName(CharSequence!);
+ method @Deprecated public void setContentDescription(CharSequence!);
+ method @Deprecated public void setCurrentItemIndex(int);
+ method @Deprecated public void setEnabled(boolean);
+ method @Deprecated public void setFromIndex(int);
+ method @Deprecated public void setFullScreen(boolean);
+ method @Deprecated public void setItemCount(int);
+ method @Deprecated public void setMaxScrollX(int);
+ method public static void setMaxScrollX(android.view.accessibility.AccessibilityRecord!, int);
+ method @Deprecated public void setMaxScrollY(int);
+ method public static void setMaxScrollY(android.view.accessibility.AccessibilityRecord!, int);
+ method @Deprecated public void setParcelableData(android.os.Parcelable!);
+ method @Deprecated public void setPassword(boolean);
+ method @Deprecated public void setRemovedCount(int);
+ method @Deprecated public void setScrollX(int);
+ method @Deprecated public void setScrollY(int);
+ method @Deprecated public void setScrollable(boolean);
+ method @Deprecated public void setSource(android.view.View!);
+ method @Deprecated public void setSource(android.view.View!, int);
+ method public static void setSource(android.view.accessibility.AccessibilityRecord, android.view.View!, int);
+ method @Deprecated public void setToIndex(int);
+ }
+
+ public interface AccessibilityViewCommand {
+ method public boolean perform(android.view.View, androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments?);
+ }
+
+ public abstract static class AccessibilityViewCommand.CommandArguments {
+ ctor public AccessibilityViewCommand.CommandArguments();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public void setBundle(android.os.Bundle!);
+ }
+
+ public static final class AccessibilityViewCommand.MoveAtGranularityArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
+ ctor public AccessibilityViewCommand.MoveAtGranularityArguments();
+ method public boolean getExtendSelection();
+ method public int getGranularity();
+ }
+
+ public static final class AccessibilityViewCommand.MoveHtmlArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
+ ctor public AccessibilityViewCommand.MoveHtmlArguments();
+ method public String! getHTMLElement();
+ }
+
+ public static final class AccessibilityViewCommand.MoveWindowArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
+ ctor public AccessibilityViewCommand.MoveWindowArguments();
+ method public int getX();
+ method public int getY();
+ }
+
+ public static final class AccessibilityViewCommand.ScrollToPositionArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
+ ctor public AccessibilityViewCommand.ScrollToPositionArguments();
+ method public int getColumn();
+ method public int getRow();
+ }
+
+ public static final class AccessibilityViewCommand.SetProgressArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
+ ctor public AccessibilityViewCommand.SetProgressArguments();
+ method public float getProgress();
+ }
+
+ public static final class AccessibilityViewCommand.SetSelectionArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
+ ctor public AccessibilityViewCommand.SetSelectionArguments();
+ method public int getEnd();
+ method public int getStart();
+ }
+
+ public static final class AccessibilityViewCommand.SetTextArguments extends androidx.core.view.accessibility.AccessibilityViewCommand.CommandArguments {
+ ctor public AccessibilityViewCommand.SetTextArguments();
+ method public CharSequence! getText();
+ }
+
+ public class AccessibilityWindowInfoCompat {
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getAnchor();
+ method public void getBoundsInScreen(android.graphics.Rect!);
+ method public androidx.core.view.accessibility.AccessibilityWindowInfoCompat! getChild(int);
+ method public int getChildCount();
+ method public int getId();
+ method public int getLayer();
+ method public androidx.core.view.accessibility.AccessibilityWindowInfoCompat! getParent();
+ method public androidx.core.view.accessibility.AccessibilityNodeInfoCompat! getRoot();
+ method public CharSequence! getTitle();
+ method public int getType();
+ method public boolean isAccessibilityFocused();
+ method public boolean isActive();
+ method public boolean isFocused();
+ method public static androidx.core.view.accessibility.AccessibilityWindowInfoCompat! obtain();
+ method public static androidx.core.view.accessibility.AccessibilityWindowInfoCompat! obtain(androidx.core.view.accessibility.AccessibilityWindowInfoCompat!);
+ method public void recycle();
+ field public static final int TYPE_ACCESSIBILITY_OVERLAY = 4; // 0x4
+ field public static final int TYPE_APPLICATION = 1; // 0x1
+ field public static final int TYPE_INPUT_METHOD = 2; // 0x2
+ field public static final int TYPE_SPLIT_SCREEN_DIVIDER = 5; // 0x5
+ field public static final int TYPE_SYSTEM = 3; // 0x3
+ }
+
+}
+
+package androidx.core.view.animation {
+
+ public final class PathInterpolatorCompat {
+ method public static android.view.animation.Interpolator! create(android.graphics.Path!);
+ method public static android.view.animation.Interpolator! create(float, float);
+ method public static android.view.animation.Interpolator! create(float, float, float, float);
+ }
+
+}
+
+package androidx.core.view.inputmethod {
+
+ public final class EditorInfoCompat {
+ ctor @Deprecated public EditorInfoCompat();
+ method public static String![] getContentMimeTypes(android.view.inputmethod.EditorInfo!);
+ method public static CharSequence? getInitialSelectedText(android.view.inputmethod.EditorInfo, int);
+ method public static CharSequence? getInitialTextAfterCursor(android.view.inputmethod.EditorInfo, int, int);
+ method public static CharSequence? getInitialTextBeforeCursor(android.view.inputmethod.EditorInfo, int, int);
+ method public static void setContentMimeTypes(android.view.inputmethod.EditorInfo, String![]?);
+ method public static void setInitialSurroundingSubText(android.view.inputmethod.EditorInfo, CharSequence, int);
+ method public static void setInitialSurroundingText(android.view.inputmethod.EditorInfo, CharSequence);
+ field public static final int IME_FLAG_FORCE_ASCII = -2147483648; // 0x80000000
+ field public static final int IME_FLAG_NO_PERSONALIZED_LEARNING = 16777216; // 0x1000000
+ }
+
+ public final class InputConnectionCompat {
+ ctor @Deprecated public InputConnectionCompat();
+ method public static boolean commitContent(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo, androidx.core.view.inputmethod.InputContentInfoCompat, int, android.os.Bundle?);
+ method public static android.view.inputmethod.InputConnection createWrapper(android.view.inputmethod.InputConnection, android.view.inputmethod.EditorInfo, androidx.core.view.inputmethod.InputConnectionCompat.OnCommitContentListener);
+ field public static final int INPUT_CONTENT_GRANT_READ_URI_PERMISSION = 1; // 0x1
+ }
+
+ public static interface InputConnectionCompat.OnCommitContentListener {
+ method public boolean onCommitContent(androidx.core.view.inputmethod.InputContentInfoCompat!, int, android.os.Bundle!);
+ }
+
+ public final class InputContentInfoCompat {
+ ctor public InputContentInfoCompat(android.net.Uri, android.content.ClipDescription, android.net.Uri?);
+ method public android.net.Uri getContentUri();
+ method public android.content.ClipDescription getDescription();
+ method public android.net.Uri? getLinkUri();
+ method public void releasePermission();
+ method public void requestPermission();
+ method public Object? unwrap();
+ method public static androidx.core.view.inputmethod.InputContentInfoCompat? wrap(Object?);
+ }
+
+}
+
+package androidx.core.widget {
+
+ public abstract class AutoScrollHelper implements android.view.View.OnTouchListener {
+ ctor public AutoScrollHelper(android.view.View);
+ method public abstract boolean canTargetScrollHorizontally(int);
+ method public abstract boolean canTargetScrollVertically(int);
+ method public boolean isEnabled();
+ method public boolean isExclusive();
+ method public boolean onTouch(android.view.View!, android.view.MotionEvent!);
+ method public abstract void scrollTargetBy(int, int);
+ method public androidx.core.widget.AutoScrollHelper setActivationDelay(int);
+ method public androidx.core.widget.AutoScrollHelper setEdgeType(int);
+ method public androidx.core.widget.AutoScrollHelper! setEnabled(boolean);
+ method public androidx.core.widget.AutoScrollHelper! setExclusive(boolean);
+ method public androidx.core.widget.AutoScrollHelper setMaximumEdges(float, float);
+ method public androidx.core.widget.AutoScrollHelper setMaximumVelocity(float, float);
+ method public androidx.core.widget.AutoScrollHelper setMinimumVelocity(float, float);
+ method public androidx.core.widget.AutoScrollHelper setRampDownDuration(int);
+ method public androidx.core.widget.AutoScrollHelper setRampUpDuration(int);
+ method public androidx.core.widget.AutoScrollHelper setRelativeEdges(float, float);
+ method public androidx.core.widget.AutoScrollHelper setRelativeVelocity(float, float);
+ field public static final int EDGE_TYPE_INSIDE = 0; // 0x0
+ field public static final int EDGE_TYPE_INSIDE_EXTEND = 1; // 0x1
+ field public static final int EDGE_TYPE_OUTSIDE = 2; // 0x2
+ field public static final float NO_MAX = 3.4028235E38f;
+ field public static final float NO_MIN = 0.0f;
+ field public static final float RELATIVE_UNSPECIFIED = 0.0f;
+ }
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface AutoSizeableTextView {
+ method public int getAutoSizeMaxTextSize();
+ method public int getAutoSizeMinTextSize();
+ method public int getAutoSizeStepGranularity();
+ method public int[]! getAutoSizeTextAvailableSizes();
+ method @androidx.core.widget.TextViewCompat.AutoSizeTextType public int getAutoSizeTextType();
+ method public void setAutoSizeTextTypeUniformWithConfiguration(int, int, int, int) throws java.lang.IllegalArgumentException;
+ method public void setAutoSizeTextTypeUniformWithPresetSizes(int[], int) throws java.lang.IllegalArgumentException;
+ method public void setAutoSizeTextTypeWithDefaults(@androidx.core.widget.TextViewCompat.AutoSizeTextType int);
+ field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final boolean PLATFORM_SUPPORTS_AUTOSIZE;
+ }
+
+ public final class CompoundButtonCompat {
+ method public static android.graphics.drawable.Drawable? getButtonDrawable(android.widget.CompoundButton);
+ method public static android.content.res.ColorStateList? getButtonTintList(android.widget.CompoundButton);
+ method public static android.graphics.PorterDuff.Mode? getButtonTintMode(android.widget.CompoundButton);
+ method public static void setButtonTintList(android.widget.CompoundButton, android.content.res.ColorStateList?);
+ method public static void setButtonTintMode(android.widget.CompoundButton, android.graphics.PorterDuff.Mode?);
+ }
+
+ public class ContentLoadingProgressBar extends android.widget.ProgressBar {
+ ctor public ContentLoadingProgressBar(android.content.Context);
+ ctor public ContentLoadingProgressBar(android.content.Context, android.util.AttributeSet?);
+ method public void hide();
+ method public void onAttachedToWindow();
+ method public void onDetachedFromWindow();
+ method public void show();
+ }
+
+ public final class EdgeEffectCompat {
+ ctor @Deprecated public EdgeEffectCompat(android.content.Context!);
+ method @Deprecated public boolean draw(android.graphics.Canvas!);
+ method @Deprecated public void finish();
+ method @Deprecated public boolean isFinished();
+ method @Deprecated public boolean onAbsorb(int);
+ method @Deprecated public boolean onPull(float);
+ method @Deprecated public boolean onPull(float, float);
+ method public static void onPull(android.widget.EdgeEffect, float, float);
+ method @Deprecated public boolean onRelease();
+ method @Deprecated public void setSize(int, int);
+ }
+
+ public class ImageViewCompat {
+ method public static android.content.res.ColorStateList? getImageTintList(android.widget.ImageView);
+ method public static android.graphics.PorterDuff.Mode? getImageTintMode(android.widget.ImageView);
+ method public static void setImageTintList(android.widget.ImageView, android.content.res.ColorStateList?);
+ method public static void setImageTintMode(android.widget.ImageView, android.graphics.PorterDuff.Mode?);
+ }
+
+ public final class ListPopupWindowCompat {
+ method @Deprecated public static android.view.View.OnTouchListener! createDragToOpenListener(Object!, android.view.View!);
+ method public static android.view.View.OnTouchListener? createDragToOpenListener(android.widget.ListPopupWindow, android.view.View);
+ }
+
+ public class ListViewAutoScrollHelper extends androidx.core.widget.AutoScrollHelper {
+ ctor public ListViewAutoScrollHelper(android.widget.ListView);
+ method public boolean canTargetScrollHorizontally(int);
+ method public boolean canTargetScrollVertically(int);
+ method public void scrollTargetBy(int, int);
+ }
+
+ public final class ListViewCompat {
+ method public static boolean canScrollList(android.widget.ListView, int);
+ method public static void scrollListBy(android.widget.ListView, int);
+ }
+
+ public class NestedScrollView extends android.widget.FrameLayout implements androidx.core.view.NestedScrollingChild3 androidx.core.view.NestedScrollingParent3 androidx.core.view.ScrollingView {
+ ctor public NestedScrollView(android.content.Context);
+ ctor public NestedScrollView(android.content.Context, android.util.AttributeSet?);
+ ctor public NestedScrollView(android.content.Context, android.util.AttributeSet?, int);
+ method public boolean arrowScroll(int);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeHorizontalScrollExtent();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeHorizontalScrollOffset();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeHorizontalScrollRange();
+ method protected int computeScrollDeltaToGetChildRectOnScreen(android.graphics.Rect!);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeVerticalScrollExtent();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeVerticalScrollOffset();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public int computeVerticalScrollRange();
+ method public boolean dispatchNestedPreScroll(int, int, int[]!, int[]!, int);
+ method public void dispatchNestedScroll(int, int, int, int, int[]?, int, int[]);
+ method public boolean dispatchNestedScroll(int, int, int, int, int[]!, int);
+ method public boolean executeKeyEvent(android.view.KeyEvent);
+ method public void fling(int);
+ method public boolean fullScroll(int);
+ method public int getMaxScrollAmount();
+ method public boolean hasNestedScrollingParent(int);
+ method public boolean isFillViewport();
+ method public boolean isSmoothScrollingEnabled();
+ method public void onAttachedToWindow();
+ method public void onNestedPreScroll(android.view.View, int, int, int[], int);
+ method public void onNestedScroll(android.view.View, int, int, int, int, int, int[]);
+ method public void onNestedScroll(android.view.View, int, int, int, int, int);
+ method public void onNestedScrollAccepted(android.view.View, android.view.View, int, int);
+ method public boolean onStartNestedScroll(android.view.View, android.view.View, int, int);
+ method public void onStopNestedScroll(android.view.View, int);
+ method public boolean pageScroll(int);
+ method public void setFillViewport(boolean);
+ method public void setOnScrollChangeListener(androidx.core.widget.NestedScrollView.OnScrollChangeListener?);
+ method public void setSmoothScrollingEnabled(boolean);
+ method public final void smoothScrollBy(int, int);
+ method public final void smoothScrollBy(int, int, int);
+ method public final void smoothScrollTo(int, int);
+ method public final void smoothScrollTo(int, int, int);
+ method public boolean startNestedScroll(int, int);
+ method public void stopNestedScroll(int);
+ }
+
+ public static interface NestedScrollView.OnScrollChangeListener {
+ method public void onScrollChange(androidx.core.widget.NestedScrollView!, int, int, int, int);
+ }
+
+ public final class PopupMenuCompat {
+ method public static android.view.View.OnTouchListener? getDragToOpenListener(Object);
+ }
+
+ public final class PopupWindowCompat {
+ method public static boolean getOverlapAnchor(android.widget.PopupWindow);
+ method public static int getWindowLayoutType(android.widget.PopupWindow);
+ method public static void setOverlapAnchor(android.widget.PopupWindow, boolean);
+ method public static void setWindowLayoutType(android.widget.PopupWindow, int);
+ method public static void showAsDropDown(android.widget.PopupWindow, android.view.View, int, int, int);
+ }
+
+ @Deprecated public final class ScrollerCompat {
+ method @Deprecated public void abortAnimation();
+ method @Deprecated public boolean computeScrollOffset();
+ method @Deprecated public static androidx.core.widget.ScrollerCompat! create(android.content.Context!);
+ method @Deprecated public static androidx.core.widget.ScrollerCompat! create(android.content.Context!, android.view.animation.Interpolator!);
+ method @Deprecated public void fling(int, int, int, int, int, int, int, int);
+ method @Deprecated public void fling(int, int, int, int, int, int, int, int, int, int);
+ method @Deprecated public float getCurrVelocity();
+ method @Deprecated public int getCurrX();
+ method @Deprecated public int getCurrY();
+ method @Deprecated public int getFinalX();
+ method @Deprecated public int getFinalY();
+ method @Deprecated public boolean isFinished();
+ method @Deprecated public boolean isOverScrolled();
+ method @Deprecated public void notifyHorizontalEdgeReached(int, int, int);
+ method @Deprecated public void notifyVerticalEdgeReached(int, int, int);
+ method @Deprecated public boolean springBack(int, int, int, int, int, int);
+ method @Deprecated public void startScroll(int, int, int, int);
+ method @Deprecated public void startScroll(int, int, int, int, int);
+ }
+
+ public final class TextViewCompat {
+ method public static int getAutoSizeMaxTextSize(android.widget.TextView);
+ method public static int getAutoSizeMinTextSize(android.widget.TextView);
+ method public static int getAutoSizeStepGranularity(android.widget.TextView);
+ method public static int[] getAutoSizeTextAvailableSizes(android.widget.TextView);
+ method public static int getAutoSizeTextType(android.widget.TextView);
+ method public static android.content.res.ColorStateList? getCompoundDrawableTintList(android.widget.TextView);
+ method public static android.graphics.PorterDuff.Mode? getCompoundDrawableTintMode(android.widget.TextView);
+ method public static android.graphics.drawable.Drawable![] getCompoundDrawablesRelative(android.widget.TextView);
+ method public static int getFirstBaselineToTopHeight(android.widget.TextView);
+ method public static int getLastBaselineToBottomHeight(android.widget.TextView);
+ method public static int getMaxLines(android.widget.TextView);
+ method public static int getMinLines(android.widget.TextView);
+ method public static androidx.core.text.PrecomputedTextCompat.Params getTextMetricsParams(android.widget.TextView);
+ method public static void setAutoSizeTextTypeUniformWithConfiguration(android.widget.TextView, int, int, int, int) throws java.lang.IllegalArgumentException;
+ method public static void setAutoSizeTextTypeUniformWithPresetSizes(android.widget.TextView, int[], int) throws java.lang.IllegalArgumentException;
+ method public static void setAutoSizeTextTypeWithDefaults(android.widget.TextView, int);
+ method public static void setCompoundDrawableTintList(android.widget.TextView, android.content.res.ColorStateList?);
+ method public static void setCompoundDrawableTintMode(android.widget.TextView, android.graphics.PorterDuff.Mode?);
+ method public static void setCompoundDrawablesRelative(android.widget.TextView, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?);
+ method public static void setCompoundDrawablesRelativeWithIntrinsicBounds(android.widget.TextView, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?, android.graphics.drawable.Drawable?);
+ method public static void setCompoundDrawablesRelativeWithIntrinsicBounds(android.widget.TextView, @DrawableRes int, @DrawableRes int, @DrawableRes int, @DrawableRes int);
+ method public static void setCustomSelectionActionModeCallback(android.widget.TextView, android.view.ActionMode.Callback);
+ method public static void setFirstBaselineToTopHeight(android.widget.TextView, @IntRange(from=0) @Px int);
+ method public static void setLastBaselineToBottomHeight(android.widget.TextView, @IntRange(from=0) @Px int);
+ method public static void setLineHeight(android.widget.TextView, @IntRange(from=0) @Px int);
+ method public static void setPrecomputedText(android.widget.TextView, androidx.core.text.PrecomputedTextCompat);
+ method public static void setTextAppearance(android.widget.TextView, @StyleRes int);
+ method public static void setTextMetricsParams(android.widget.TextView, androidx.core.text.PrecomputedTextCompat.Params);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static android.view.ActionMode.Callback wrapCustomSelectionActionModeCallback(android.widget.TextView, android.view.ActionMode.Callback);
+ field public static final int AUTO_SIZE_TEXT_TYPE_NONE = 0; // 0x0
+ field public static final int AUTO_SIZE_TEXT_TYPE_UNIFORM = 1; // 0x1
+ }
+
+ @IntDef({androidx.core.widget.TextViewCompat.AUTO_SIZE_TEXT_TYPE_NONE, androidx.core.widget.TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM}) @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface TextViewCompat.AutoSizeTextType {
+ }
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public final class TextViewOnReceiveContentListener implements androidx.core.view.OnReceiveContentListener {
+ ctor public TextViewOnReceiveContentListener();
+ method public androidx.core.view.ContentInfoCompat? onReceiveContent(android.view.View, androidx.core.view.ContentInfoCompat);
+ }
+
+ public interface TintableCompoundButton {
+ method public android.content.res.ColorStateList? getSupportButtonTintList();
+ method public android.graphics.PorterDuff.Mode? getSupportButtonTintMode();
+ method public void setSupportButtonTintList(android.content.res.ColorStateList?);
+ method public void setSupportButtonTintMode(android.graphics.PorterDuff.Mode?);
+ }
+
+ public interface TintableCompoundDrawablesView {
+ method public android.content.res.ColorStateList? getSupportCompoundDrawablesTintList();
+ method public android.graphics.PorterDuff.Mode? getSupportCompoundDrawablesTintMode();
+ method public void setSupportCompoundDrawablesTintList(android.content.res.ColorStateList?);
+ method public void setSupportCompoundDrawablesTintMode(android.graphics.PorterDuff.Mode?);
+ }
+
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface TintableImageSourceView {
+ method public android.content.res.ColorStateList? getSupportImageTintList();
+ method public android.graphics.PorterDuff.Mode? getSupportImageTintMode();
+ method public void setSupportImageTintList(android.content.res.ColorStateList?);
+ method public void setSupportImageTintMode(android.graphics.PorterDuff.Mode?);
+ }
+
+}
+
diff --git a/core/core/api/restricted_current.txt b/core/core/api/restricted_current.txt
index bc3c425..1bb8297 100644
--- a/core/core/api/restricted_current.txt
+++ b/core/core/api/restricted_current.txt
@@ -2330,14 +2330,13 @@
}
public final class DisplayCompat {
- method public static androidx.core.view.DisplayCompat.ModeCompat getMode(android.content.Context, android.view.Display);
method public static androidx.core.view.DisplayCompat.ModeCompat![] getSupportedModes(android.content.Context, android.view.Display);
}
public static final class DisplayCompat.ModeCompat {
method public int getPhysicalHeight();
method public int getPhysicalWidth();
- method @Deprecated public boolean isNative();
+ method public boolean isNative();
method @RequiresApi(android.os.Build.VERSION_CODES.M) public android.view.Display.Mode? toMode();
}
diff --git a/core/core/src/androidTest/java/androidx/core/provider/FontsContractCompatTest.java b/core/core/src/androidTest/java/androidx/core/provider/FontsContractCompatTest.java
index 20ccedd..976407c 100644
--- a/core/core/src/androidTest/java/androidx/core/provider/FontsContractCompatTest.java
+++ b/core/core/src/androidTest/java/androidx/core/provider/FontsContractCompatTest.java
@@ -140,7 +140,7 @@
public void testGetFontFromProvider_resultOK() {
FontRequest request = new FontRequest(
AUTHORITY, PACKAGE, MockFontProvider.SINGLE_FONT_FAMILY2_QUERY, SIGNATURE);
- FontInfo[] fonts = FontsContractCompat.getFontFromProvider(
+ FontInfo[] fonts = FontProvider.query(
mContext, request, AUTHORITY, null);
assertNotNull(fonts);
assertEquals(1, fonts.length);
@@ -156,7 +156,7 @@
public void testGetFontFromProvider_providerDoesntReturnAllFields() {
FontRequest request = new FontRequest(
AUTHORITY, PACKAGE, MockFontProvider.MANDATORY_FIELDS_ONLY_QUERY, SIGNATURE);
- FontInfo[] fonts = FontsContractCompat.getFontFromProvider(
+ FontInfo[] fonts = FontProvider.query(
mContext, request, AUTHORITY, null);
assertNotNull(fonts);
assertEquals(1, fonts.length);
@@ -169,7 +169,7 @@
public void testGetFontFromProvider_resultFontNotFound() {
FontRequest request = new FontRequest(
AUTHORITY, PACKAGE, MockFontProvider.NOT_FOUND_QUERY, SIGNATURE);
- FontInfo[] fonts = FontsContractCompat.getFontFromProvider(
+ FontInfo[] fonts = FontProvider.query(
mContext, request, AUTHORITY, null);
assertNotNull(fonts);
assertEquals(1, fonts.length);
@@ -181,7 +181,7 @@
public void testGetFontFromProvider_resultFontUnavailable() {
FontRequest request = new FontRequest(
AUTHORITY, PACKAGE, MockFontProvider.UNAVAILABLE_QUERY, SIGNATURE);
- FontInfo[] fonts = FontsContractCompat.getFontFromProvider(
+ FontInfo[] fonts = FontProvider.query(
mContext, request, AUTHORITY, null);
assertNotNull(fonts);
@@ -194,7 +194,7 @@
public void testGetFontFromProvider_resultMalformedQuery() {
FontRequest request = new FontRequest(
AUTHORITY, PACKAGE, MockFontProvider.MALFORMED_QUERY, SIGNATURE);
- FontInfo[] fonts = FontsContractCompat.getFontFromProvider(
+ FontInfo[] fonts = FontProvider.query(
mContext, request, AUTHORITY, null);
assertNotNull(fonts);
@@ -207,7 +207,7 @@
public void testGetFontFromProvider_resultFontNotFoundSecondRow() {
FontRequest request = new FontRequest(
AUTHORITY, PACKAGE, MockFontProvider.NOT_FOUND_SECOND_QUERY, SIGNATURE);
- FontInfo[] fonts = FontsContractCompat.getFontFromProvider(
+ FontInfo[] fonts = FontProvider.query(
mContext, request, AUTHORITY, null);
assertNotNull(fonts);
@@ -224,7 +224,7 @@
public void testGetFontFromProvider_resultFontNotFoundOtherRow() {
FontRequest request = new FontRequest(
AUTHORITY, PACKAGE, MockFontProvider.NOT_FOUND_THIRD_QUERY, SIGNATURE);
- FontInfo[] fonts = FontsContractCompat.getFontFromProvider(
+ FontInfo[] fonts = FontProvider.query(
mContext, request, AUTHORITY, null);
assertNotNull(fonts);
@@ -243,7 +243,7 @@
public void testGetFontFromProvider_resultCodeIsNegativeNumber() {
FontRequest request = new FontRequest(
AUTHORITY, PACKAGE, MockFontProvider.NEGATIVE_ERROR_CODE_QUERY, SIGNATURE);
- FontInfo[] fonts = FontsContractCompat.getFontFromProvider(
+ FontInfo[] fonts = FontProvider.query(
mContext, request, AUTHORITY, null);
@@ -260,7 +260,7 @@
FontRequest request = new FontRequest(AUTHORITY, PACKAGE, "query", SIGNATURE);
try {
- FontsContractCompat.getProvider(packageManager, request, null);
+ FontProvider.getProvider(packageManager, request, null);
fail();
} catch (NameNotFoundException e) {
// pass
@@ -275,7 +275,7 @@
List<List<byte[]>> emptyList = Collections.emptyList();
FontRequest request = new FontRequest(AUTHORITY, PACKAGE, "query", emptyList);
- assertNull(FontsContractCompat.getProvider(packageManager, request, null));
+ assertNull(FontProvider.getProvider(packageManager, request, null));
}
@Test
@@ -289,7 +289,7 @@
FontRequest requestWrongCerts = new FontRequest(
AUTHORITY, PACKAGE, "query", Arrays.asList(certList));
- assertNull(FontsContractCompat.getProvider(packageManager, requestWrongCerts, null));
+ assertNull(FontProvider.getProvider(packageManager, requestWrongCerts, null));
}
@Test
@@ -302,7 +302,7 @@
FontRequest requestRightCerts = new FontRequest(
AUTHORITY, PACKAGE, "query", Arrays.asList(certList));
ProviderInfo result =
- FontsContractCompat.getProvider(packageManager, requestRightCerts, null);
+ FontProvider.getProvider(packageManager, requestRightCerts, null);
assertEquals(info, result);
}
@@ -317,7 +317,7 @@
List<byte[]> certList = Arrays.asList(wrongCert, BYTE_ARRAY);
FontRequest requestRightCerts = new FontRequest(
AUTHORITY, PACKAGE, "query", Arrays.asList(certList));
- assertNull(FontsContractCompat.getProvider(packageManager, requestRightCerts, null));
+ assertNull(FontProvider.getProvider(packageManager, requestRightCerts, null));
}
@Test
@@ -339,7 +339,7 @@
List<byte[]> certList = Arrays.asList(BYTE_ARRAY_2, BYTE_ARRAY_COPY);
FontRequest requestRightCerts = new FontRequest(
AUTHORITY, PACKAGE, "query", Arrays.asList(certList));
- assertNull(FontsContractCompat.getProvider(packageManager, requestRightCerts, null));
+ assertNull(FontProvider.getProvider(packageManager, requestRightCerts, null));
}
@Test
@@ -354,7 +354,7 @@
certList.add(Arrays.asList(BYTE_ARRAY));
FontRequest requestRightCerts = new FontRequest(AUTHORITY, PACKAGE, "query", certList);
ProviderInfo result =
- FontsContractCompat.getProvider(packageManager, requestRightCerts, null);
+ FontProvider.getProvider(packageManager, requestRightCerts, null);
assertEquals(info, result);
}
@@ -369,7 +369,7 @@
FontRequest requestRightCerts = new FontRequest(
AUTHORITY, "com.wrong.package.name", "query", certList);
try {
- FontsContractCompat.getProvider(packageManager, requestRightCerts, null);
+ FontProvider.getProvider(packageManager, requestRightCerts, null);
fail();
} catch (NameNotFoundException e) {
// pass
diff --git a/core/core/src/main/java/androidx/core/graphics/TypefaceCompatApi26Impl.java b/core/core/src/main/java/androidx/core/graphics/TypefaceCompatApi26Impl.java
index 7614cf2..3b44ff3 100644
--- a/core/core/src/main/java/androidx/core/graphics/TypefaceCompatApi26Impl.java
+++ b/core/core/src/main/java/androidx/core/graphics/TypefaceCompatApi26Impl.java
@@ -247,7 +247,7 @@
return null;
}
}
- Map<Uri, ByteBuffer> uriBuffer = FontsContractCompat.prepareFontData(
+ Map<Uri, ByteBuffer> uriBuffer = TypefaceCompatUtil.readFontInfoIntoByteBuffer(
context, fonts, cancellationSignal);
final Object fontFamily = newFamily();
if (fontFamily == null) {
diff --git a/core/core/src/main/java/androidx/core/graphics/TypefaceCompatUtil.java b/core/core/src/main/java/androidx/core/graphics/TypefaceCompatUtil.java
index 8bf3e30..1f02d66 100644
--- a/core/core/src/main/java/androidx/core/graphics/TypefaceCompatUtil.java
+++ b/core/core/src/main/java/androidx/core/graphics/TypefaceCompatUtil.java
@@ -16,6 +16,7 @@
package androidx.core.graphics;
+import static androidx.annotation.RestrictTo.Scope.LIBRARY;
import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX;
import android.content.ContentResolver;
@@ -28,9 +29,11 @@
import android.os.StrictMode;
import android.util.Log;
+import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.annotation.RestrictTo;
+import androidx.core.provider.FontsContractCompat;
import java.io.Closeable;
import java.io.File;
@@ -40,6 +43,9 @@
import java.io.InputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
/**
* Utility methods for TypefaceCompat.
@@ -179,4 +185,41 @@
}
}
}
+
+ /**
+ * A helper function to create a mapping from {@link Uri} to {@link ByteBuffer}.
+ *
+ * Skip if the file contents is not ready to be read.
+ *
+ * @param context A {@link Context} to be used for resolving content URI in
+ * {@link FontsContractCompat.FontInfo}.
+ * @param fonts An array of {@link FontsContractCompat.FontInfo}.
+ * @return A map from {@link Uri} to {@link ByteBuffer}.
+ * @hide
+ */
+ @RestrictTo(LIBRARY)
+ @NonNull
+ @RequiresApi(19)
+ public static Map<Uri, ByteBuffer> readFontInfoIntoByteBuffer(
+ @NonNull Context context,
+ @NonNull FontsContractCompat.FontInfo[] fonts,
+ @Nullable CancellationSignal cancellationSignal
+ ) {
+ final HashMap<Uri, ByteBuffer> out = new HashMap<>();
+
+ for (FontsContractCompat.FontInfo font : fonts) {
+ if (font.getResultCode() != FontsContractCompat.Columns.RESULT_CODE_OK) {
+ continue;
+ }
+
+ final Uri uri = font.getUri();
+ if (out.containsKey(uri)) {
+ continue;
+ }
+
+ ByteBuffer buffer = TypefaceCompatUtil.mmap(context, cancellationSignal, uri);
+ out.put(uri, buffer);
+ }
+ return Collections.unmodifiableMap(out);
+ }
}
diff --git a/core/core/src/main/java/androidx/core/provider/FontProvider.java b/core/core/src/main/java/androidx/core/provider/FontProvider.java
new file mode 100644
index 0000000..c9729e1
--- /dev/null
+++ b/core/core/src/main/java/androidx/core/provider/FontProvider.java
@@ -0,0 +1,233 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.core.provider;
+
+import android.annotation.SuppressLint;
+import android.content.ContentResolver;
+import android.content.ContentUris;
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ProviderInfo;
+import android.content.pm.Signature;
+import android.content.res.Resources;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Build;
+import android.os.CancellationSignal;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+import androidx.core.content.res.FontResourcesParserCompat;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+/* package */ class FontProvider {
+ private FontProvider() {}
+
+ @NonNull
+ static FontsContractCompat.FontFamilyResult getFontFamilyResult(@NonNull Context context,
+ @NonNull FontRequest request, @Nullable CancellationSignal cancellationSignal)
+ throws PackageManager.NameNotFoundException {
+ ProviderInfo providerInfo = getProvider(
+ context.getPackageManager(), request, context.getResources());
+ if (providerInfo == null) {
+ return new FontsContractCompat.FontFamilyResult(
+ FontsContractCompat.FontFamilyResult.STATUS_WRONG_CERTIFICATES, null);
+
+ }
+ FontsContractCompat.FontInfo[] fonts = query(
+ context, request, providerInfo.authority, cancellationSignal);
+ return new FontsContractCompat.FontFamilyResult(
+ FontsContractCompat.FontFamilyResult.STATUS_OK, fonts);
+ }
+
+ /**
+ * Do not access directly, visible for testing only.
+ * @return
+ */
+ @VisibleForTesting
+ @Nullable
+ static ProviderInfo getProvider(
+ @NonNull PackageManager packageManager,
+ @NonNull FontRequest request,
+ @Nullable Resources resources
+ )
+ throws PackageManager.NameNotFoundException {
+ String providerAuthority = request.getProviderAuthority();
+ ProviderInfo info = packageManager.resolveContentProvider(providerAuthority, 0);
+ if (info == null) {
+ throw new PackageManager.NameNotFoundException("No package found for authority: "
+ + providerAuthority);
+ }
+
+ if (!info.packageName.equals(request.getProviderPackage())) {
+ throw new PackageManager.NameNotFoundException("Found content provider "
+ + providerAuthority
+ + ", but package was not " + request.getProviderPackage());
+ }
+
+ List<byte[]> signatures;
+ // We correctly check all signatures returned, as advised in the lint error.
+ @SuppressLint("PackageManagerGetSignatures")
+ PackageInfo packageInfo = packageManager.getPackageInfo(info.packageName,
+ PackageManager.GET_SIGNATURES);
+ signatures = convertToByteArrayList(packageInfo.signatures);
+ Collections.sort(signatures, sByteArrayComparator);
+ List<List<byte[]>> requestCertificatesList = getCertificates(request, resources);
+ for (int i = 0; i < requestCertificatesList.size(); ++i) {
+ // Make a copy so we can sort it without modifying the incoming data.
+ List<byte[]> requestSignatures = new ArrayList<>(requestCertificatesList.get(i));
+ Collections.sort(requestSignatures, sByteArrayComparator);
+ if (equalsByteArrayList(signatures, requestSignatures)) {
+ return info;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Do not access directly, visible for testing only.
+ * @return
+ */
+ @SuppressWarnings("UnsafeNewApiCall")
+ @VisibleForTesting
+ @NonNull
+ static FontsContractCompat.FontInfo[] query(
+ Context context,
+ FontRequest request,
+ String authority,
+ CancellationSignal cancellationSignal
+ ) {
+ ArrayList<FontsContractCompat.FontInfo> result = new ArrayList<>();
+ final Uri uri = new Uri.Builder().scheme(ContentResolver.SCHEME_CONTENT)
+ .authority(authority)
+ .build();
+ final Uri fileBaseUri = new Uri.Builder().scheme(ContentResolver.SCHEME_CONTENT)
+ .authority(authority)
+ .appendPath("file")
+ .build();
+ Cursor cursor = null;
+ try {
+ String[] projection = {
+ FontsContractCompat.Columns._ID, FontsContractCompat.Columns.FILE_ID,
+ FontsContractCompat.Columns.TTC_INDEX,
+ FontsContractCompat.Columns.VARIATION_SETTINGS,
+ FontsContractCompat.Columns.WEIGHT, FontsContractCompat.Columns.ITALIC,
+ FontsContractCompat.Columns.RESULT_CODE};
+
+ if (Build.VERSION.SDK_INT > 16) {
+ cursor = context.getContentResolver().query(uri, projection, "query = ?",
+ new String[]{request.getQuery()}, null, cancellationSignal);
+ } else {
+ // No cancellation signal.
+ cursor = context.getContentResolver().query(uri, projection, "query = ?",
+ new String[]{request.getQuery()}, null);
+ }
+
+ if (cursor != null && cursor.getCount() > 0) {
+ final int resultCodeColumnIndex = cursor.getColumnIndex(
+ FontsContractCompat.Columns.RESULT_CODE);
+ result = new ArrayList<>();
+ final int idColumnIndex = cursor.getColumnIndex(FontsContractCompat.Columns._ID);
+ final int fileIdColumnIndex = cursor.getColumnIndex(
+ FontsContractCompat.Columns.FILE_ID);
+ final int ttcIndexColumnIndex = cursor.getColumnIndex(
+ FontsContractCompat.Columns.TTC_INDEX);
+ final int weightColumnIndex = cursor.getColumnIndex(
+ FontsContractCompat.Columns.WEIGHT);
+ final int italicColumnIndex = cursor.getColumnIndex(
+ FontsContractCompat.Columns.ITALIC);
+ while (cursor.moveToNext()) {
+ int resultCode = resultCodeColumnIndex != -1
+ ? cursor.getInt(resultCodeColumnIndex)
+ : FontsContractCompat.Columns.RESULT_CODE_OK;
+ final int ttcIndex = ttcIndexColumnIndex != -1
+ ? cursor.getInt(ttcIndexColumnIndex) : 0;
+ Uri fileUri;
+ if (fileIdColumnIndex == -1) {
+ long id = cursor.getLong(idColumnIndex);
+ fileUri = ContentUris.withAppendedId(uri, id);
+ } else {
+ long id = cursor.getLong(fileIdColumnIndex);
+ fileUri = ContentUris.withAppendedId(fileBaseUri, id);
+ }
+
+ int weight = weightColumnIndex != -1 ? cursor.getInt(weightColumnIndex) : 400;
+ boolean italic = italicColumnIndex != -1 && cursor.getInt(italicColumnIndex)
+ == 1;
+ result.add(new FontsContractCompat.FontInfo(fileUri, ttcIndex, weight, italic,
+ resultCode));
+ }
+ }
+ } finally {
+ if (cursor != null) {
+ cursor.close();
+ }
+ }
+ return result.toArray(new FontsContractCompat.FontInfo[0]);
+ }
+
+ private static List<List<byte[]>> getCertificates(FontRequest request, Resources resources) {
+ if (request.getCertificates() != null) {
+ return request.getCertificates();
+ }
+ int resourceId = request.getCertificatesArrayResId();
+ return FontResourcesParserCompat.readCerts(resources, resourceId);
+ }
+
+ private static final Comparator<byte[]> sByteArrayComparator = new Comparator<byte[]>() {
+ @Override
+ public int compare(byte[] l, byte[] r) {
+ if (l.length != r.length) {
+ return l.length - r.length;
+ }
+ for (int i = 0; i < l.length; ++i) {
+ if (l[i] != r[i]) {
+ return l[i] - r[i];
+ }
+ }
+ return 0;
+ }
+ };
+
+ private static boolean equalsByteArrayList(List<byte[]> signatures,
+ List<byte[]> requestSignatures) {
+ if (signatures.size() != requestSignatures.size()) {
+ return false;
+ }
+ for (int i = 0; i < signatures.size(); ++i) {
+ if (!Arrays.equals(signatures.get(i), requestSignatures.get(i))) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private static List<byte[]> convertToByteArrayList(Signature[] signatures) {
+ List<byte[]> shaList = new ArrayList<>();
+ for (int i = 0; i < signatures.length; ++i) {
+ shaList.add(signatures[i].toByteArray());
+ }
+ return shaList;
+ }
+}
diff --git a/core/core/src/main/java/androidx/core/provider/FontRequestWorker.java b/core/core/src/main/java/androidx/core/provider/FontRequestWorker.java
new file mode 100644
index 0000000..a140c33
--- /dev/null
+++ b/core/core/src/main/java/androidx/core/provider/FontRequestWorker.java
@@ -0,0 +1,305 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.core.provider;
+
+import static androidx.core.provider.FontsContractCompat.FontFamilyResult.STATUS_UNEXPECTED_DATA_PROVIDED;
+import static androidx.core.provider.FontsContractCompat.FontFamilyResult.STATUS_WRONG_CERTIFICATES;
+import static androidx.core.provider.FontsContractCompat.FontRequestCallback.FAIL_REASON_FONT_LOAD_ERROR;
+import static androidx.core.provider.FontsContractCompat.FontRequestCallback.FAIL_REASON_FONT_NOT_FOUND;
+import static androidx.core.provider.FontsContractCompat.FontRequestCallback.FAIL_REASON_PROVIDER_NOT_FOUND;
+import static androidx.core.provider.FontsContractCompat.FontRequestCallback.FAIL_REASON_WRONG_CERTIFICATES;
+
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.graphics.Typeface;
+import android.os.Handler;
+import android.os.Process;
+
+import androidx.annotation.GuardedBy;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.collection.LruCache;
+import androidx.collection.SimpleArrayMap;
+import androidx.core.content.res.FontResourcesParserCompat;
+import androidx.core.content.res.ResourcesCompat;
+import androidx.core.graphics.TypefaceCompat;
+import androidx.core.provider.SelfDestructiveThread.ReplyCallback;
+
+import java.util.ArrayList;
+import java.util.concurrent.Callable;
+
+class FontRequestWorker {
+
+ private FontRequestWorker() {}
+
+ static final LruCache<String, Typeface> sTypefaceCache = new LruCache<>(16);
+
+ private static final int BACKGROUND_THREAD_KEEP_ALIVE_DURATION_MS = 10000;
+ private static final SelfDestructiveThread BACKGROUND_THREAD =
+ new SelfDestructiveThread("fonts-androidx", Process.THREAD_PRIORITY_BACKGROUND,
+ BACKGROUND_THREAD_KEEP_ALIVE_DURATION_MS);
+
+ /** Package protected to prevent synthetic accessor */
+ static final Object LOCK = new Object();
+
+ /** Package protected to prevent synthetic accessor */
+ @GuardedBy("LOCK")
+ static final SimpleArrayMap<String, ArrayList<ReplyCallback<TypefaceResult>>> PENDING_REPLIES =
+ new SimpleArrayMap<>();
+
+ static void resetTypefaceCache() {
+ sTypefaceCache.evictAll();
+ }
+
+ /**
+ * Internal method of requestFont for avoiding holding strong refernece of Context.
+ */
+ @SuppressWarnings("deprecation")
+ static void requestFontInternal(
+ final @NonNull Context appContext,
+ final @NonNull FontRequest request,
+ final @NonNull FontsContractCompat.FontRequestCallback callback,
+ final @NonNull Handler handler
+ ) {
+ final Handler callerHandler = new Handler();
+ handler.post(new Runnable() {
+ @Override
+ public void run() {
+ // TODO: Cache the result.
+ FontsContractCompat.FontFamilyResult result;
+ try {
+ result = FontProvider.getFontFamilyResult(appContext, request, null);
+ } catch (PackageManager.NameNotFoundException e) {
+ notifyFailed(callerHandler, callback, FAIL_REASON_PROVIDER_NOT_FOUND);
+ return;
+ }
+
+ if (result.getStatusCode() != FontsContractCompat.FontFamilyResult.STATUS_OK) {
+ switch (result.getStatusCode()) {
+ case STATUS_WRONG_CERTIFICATES:
+ notifyFailed(callerHandler, callback, FAIL_REASON_WRONG_CERTIFICATES);
+ return;
+ case STATUS_UNEXPECTED_DATA_PROVIDED:
+ notifyFailed(callerHandler, callback, FAIL_REASON_FONT_LOAD_ERROR);
+ return;
+ default:
+ // fetchFont returns unexpected status type. Fallback to load error.
+ notifyFailed(callerHandler, callback, FAIL_REASON_FONT_LOAD_ERROR);
+ return;
+ }
+ }
+
+ final FontsContractCompat.FontInfo[] fonts = result.getFonts();
+ if (fonts == null || fonts.length == 0) {
+ notifyFailed(callerHandler, callback, FAIL_REASON_FONT_NOT_FOUND);
+ return;
+ }
+ for (final FontsContractCompat.FontInfo font : fonts) {
+ if (font.getResultCode() != FontsContractCompat.Columns.RESULT_CODE_OK) {
+ // We proceed if all font entry is ready to use. Otherwise report the first
+ // error.
+ final int resultCode = font.getResultCode();
+ if (resultCode < 0) {
+ // Negative values are reserved for internal errors. Fallback to load
+ // error.
+ notifyFailed(callerHandler, callback, FAIL_REASON_FONT_LOAD_ERROR);
+ } else {
+ notifyFailed(callerHandler, callback, resultCode);
+ }
+ return;
+ }
+ }
+
+ final Typeface typeface = TypefaceCompat.createFromFontInfo(appContext,
+ null /* cancellationSignal */,
+ fonts,
+ Typeface.NORMAL
+ );
+
+ if (typeface == null) {
+ // Something went wrong during reading font files. This happens if the given
+ // font file is an unsupported font type.
+ notifyFailed(callerHandler, callback, FAIL_REASON_FONT_LOAD_ERROR);
+ return;
+ }
+
+ notifyRetrieved(callerHandler, callback, typeface);
+ }
+ });
+ }
+
+ static void notifyFailed(
+ @NonNull final Handler callerThreadHandler,
+ @NonNull final FontsContractCompat.FontRequestCallback callback,
+ final int code
+ ) {
+ callerThreadHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ callback.onTypefaceRequestFailed(code);
+ }
+ });
+ }
+
+ static void notifyRetrieved(
+ @NonNull final Handler callerThreadHandler,
+ @NonNull final FontsContractCompat.FontRequestCallback callback,
+ @NonNull final Typeface typeface
+ ) {
+ callerThreadHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ callback.onTypefaceRetrieved(typeface);
+ }
+ });
+ }
+
+ static Typeface getTypeface(
+ @NonNull final Context context,
+ @NonNull final FontRequest request,
+ @Nullable final ResourcesCompat.FontCallback fontCallback,
+ @Nullable final Handler handler, boolean isBlockingFetch, int timeout,
+ final int style) {
+ final String id = request.getIdentifier() + "-" + style;
+ Typeface cached = sTypefaceCache.get(id);
+ if (cached != null) {
+ if (fontCallback != null) {
+ fontCallback.onFontRetrieved(cached);
+ }
+ return cached;
+ }
+
+ if (isBlockingFetch && timeout == FontResourcesParserCompat.INFINITE_TIMEOUT_VALUE) {
+ // Wait forever. No need to post to the thread.
+ TypefaceResult typefaceResult = getFontInternal(context, request, style);
+ if (fontCallback != null) {
+ if (typefaceResult.mResult == FontsContractCompat.FontFamilyResult.STATUS_OK) {
+ fontCallback.callbackSuccessAsync(typefaceResult.mTypeface, handler);
+ } else {
+ fontCallback.callbackFailAsync(typefaceResult.mResult, handler);
+ }
+ }
+ return typefaceResult.mTypeface;
+ }
+
+ final Callable<TypefaceResult> fetcher = new Callable<TypefaceResult>() {
+ @Override
+ public TypefaceResult call() throws Exception {
+ TypefaceResult typeface = getFontInternal(context, request, style);
+ if (typeface.mTypeface != null) {
+ sTypefaceCache.put(id, typeface.mTypeface);
+ }
+ return typeface;
+ }
+ };
+
+ if (isBlockingFetch) {
+ try {
+ return BACKGROUND_THREAD.postAndWait(fetcher, timeout).mTypeface;
+ } catch (InterruptedException e) {
+ return null;
+ }
+ } else {
+ final ReplyCallback<TypefaceResult> reply = fontCallback == null ? null
+ : new ReplyCallback<TypefaceResult>() {
+ @Override
+ public void onReply(final TypefaceResult typeface) {
+ if (typeface == null) {
+ fontCallback.callbackFailAsync(
+ FAIL_REASON_FONT_NOT_FOUND, handler);
+ } else if (typeface.mResult
+ == FontsContractCompat.FontFamilyResult.STATUS_OK) {
+ fontCallback.callbackSuccessAsync(typeface.mTypeface, handler);
+ } else {
+ fontCallback.callbackFailAsync(typeface.mResult, handler);
+ }
+ }
+ };
+
+ synchronized (LOCK) {
+ ArrayList<ReplyCallback<TypefaceResult>> pendingReplies = PENDING_REPLIES.get(id);
+ if (pendingReplies != null) {
+ // Already requested. Do not request the same provider again and insert the
+ // reply to the queue instead.
+ if (reply != null) {
+ pendingReplies.add(reply);
+ }
+ return null;
+ }
+ if (reply != null) {
+ pendingReplies = new ArrayList<>();
+ pendingReplies.add(reply);
+ PENDING_REPLIES.put(id, pendingReplies);
+ }
+ }
+ BACKGROUND_THREAD.postAndReply(fetcher, new ReplyCallback<TypefaceResult>() {
+ @Override
+ public void onReply(final TypefaceResult typeface) {
+ final ArrayList<ReplyCallback<TypefaceResult>> replies;
+ synchronized (LOCK) {
+ replies = PENDING_REPLIES.get(id);
+ if (replies == null) {
+ return; // Nobody requested replies. Do nothing.
+ }
+ PENDING_REPLIES.remove(id);
+ }
+ for (int i = 0; i < replies.size(); ++i) {
+ replies.get(i).onReply(typeface);
+ }
+ }
+ });
+ return null;
+ }
+ }
+
+ /** Package protected to prevent synthetic accessor */
+ @NonNull
+ static TypefaceResult getFontInternal(
+ @NonNull final Context context,
+ @NonNull final FontRequest request,
+ int style) {
+ FontsContractCompat.FontFamilyResult result;
+ try {
+ result = FontProvider.getFontFamilyResult(context, request, null);
+ } catch (PackageManager.NameNotFoundException e) {
+ return new TypefaceResult(null, FAIL_REASON_PROVIDER_NOT_FOUND);
+ }
+ if (result.getStatusCode() == FontsContractCompat.FontFamilyResult.STATUS_OK) {
+ final Typeface typeface = TypefaceCompat.createFromFontInfo(
+ context, null /* CancellationSignal */, result.getFonts(), style);
+ return new TypefaceResult(typeface, typeface != null
+ ? FontsContractCompat.FontRequestCallback.RESULT_OK
+ : FAIL_REASON_FONT_LOAD_ERROR);
+ }
+ int resultCode = result.getStatusCode() == STATUS_WRONG_CERTIFICATES
+ ? FAIL_REASON_WRONG_CERTIFICATES
+ : FAIL_REASON_FONT_LOAD_ERROR;
+ return new TypefaceResult(null, resultCode);
+ }
+
+ private static final class TypefaceResult {
+ final Typeface mTypeface;
+ @FontsContractCompat.FontRequestCallback.FontRequestFailReason final int mResult;
+
+ TypefaceResult(@Nullable Typeface typeface,
+ @FontsContractCompat.FontRequestCallback.FontRequestFailReason int result) {
+ mTypeface = typeface;
+ mResult = result;
+ }
+ }
+
+}
diff --git a/core/core/src/main/java/androidx/core/provider/FontsContractCompat.java b/core/core/src/main/java/androidx/core/provider/FontsContractCompat.java
index e45b275..4f9327a 100644
--- a/core/core/src/main/java/androidx/core/provider/FontsContractCompat.java
+++ b/core/core/src/main/java/androidx/core/provider/FontsContractCompat.java
@@ -18,26 +18,17 @@
import static androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX;
-import android.annotation.SuppressLint;
-import android.content.ContentResolver;
-import android.content.ContentUris;
import android.content.Context;
-import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.ProviderInfo;
-import android.content.pm.Signature;
import android.content.res.Resources;
-import android.database.Cursor;
import android.graphics.Typeface;
import android.net.Uri;
-import android.os.Build;
import android.os.CancellationSignal;
import android.os.Handler;
import android.os.ParcelFileDescriptor;
-import android.os.Process;
import android.provider.BaseColumns;
-import androidx.annotation.GuardedBy;
import androidx.annotation.IntDef;
import androidx.annotation.IntRange;
import androidx.annotation.NonNull;
@@ -45,26 +36,15 @@
import androidx.annotation.RequiresApi;
import androidx.annotation.RestrictTo;
import androidx.annotation.VisibleForTesting;
-import androidx.collection.LruCache;
-import androidx.collection.SimpleArrayMap;
-import androidx.core.content.res.FontResourcesParserCompat;
import androidx.core.content.res.ResourcesCompat;
import androidx.core.graphics.TypefaceCompat;
import androidx.core.graphics.TypefaceCompatUtil;
-import androidx.core.provider.SelfDestructiveThread.ReplyCallback;
import androidx.core.util.Preconditions;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.List;
import java.util.Map;
-import java.util.concurrent.Callable;
/**
* Utility class to deal with Font ContentProviders.
@@ -72,6 +52,159 @@
public class FontsContractCompat {
private FontsContractCompat() { }
+ // TODO remove unused
+ /**
+ * Constant used to identify the List of {@link ParcelFileDescriptor} item in the Bundle
+ * returned to the ResultReceiver in getFont.
+ * @hide
+ */
+ @RestrictTo(LIBRARY_GROUP_PREFIX)
+ public static final String PARCEL_FONT_RESULTS = "font_results";
+
+ // TODO remove unused
+ // Error codes internal to the system, which can not come from a provider. To keep the number
+ // space open for new provider codes, these should all be negative numbers.
+ /** @hide */
+ @RestrictTo(LIBRARY_GROUP_PREFIX)
+ static final int RESULT_CODE_PROVIDER_NOT_FOUND = -1;
+
+ // TODO remove unused
+ /** @hide */
+ @RestrictTo(LIBRARY_GROUP_PREFIX)
+ static final int RESULT_CODE_WRONG_CERTIFICATES = -2;
+ // Note -3 is used by FontRequestCallback to indicate the font failed to load.
+
+ // TODO deprecated from here, move to TypefaceCompat
+ /**
+ * Build a Typeface from an array of {@link FontInfo}
+ *
+ * Results that are marked as not ready will be skipped.
+ *
+ * @param context A {@link Context} that will be used to fetch the font contents.
+ * @param cancellationSignal A signal to cancel the operation in progress, or null if none. If
+ * the operation is canceled, then {@link
+ * android.os.OperationCanceledException} will be thrown.
+ * @param fonts An array of {@link FontInfo} to be used to create a Typeface.
+ * @return A Typeface object. Returns null if typeface creation fails.
+ */
+ @Nullable
+ public static Typeface buildTypeface(@
+ NonNull Context context,
+ @Nullable CancellationSignal cancellationSignal,
+ @NonNull FontInfo[] fonts
+ ) {
+ return TypefaceCompat.createFromFontInfo(context, cancellationSignal, fonts,
+ Typeface.NORMAL);
+ }
+
+ /**
+ * Create a typeface object given a font request. The font will be asynchronously fetched,
+ * therefore the result is delivered to the given callback. See {@link FontRequest}.
+ * Only one of the methods in callback will be invoked, depending on whether the request
+ * succeeds or fails. These calls will happen on the caller thread.
+ * @param context A context to be used for fetching from font provider.
+ * @param request A {@link FontRequest} object that identifies the provider and query for the
+ * request. May not be null.
+ * @param callback A callback that will be triggered when results are obtained. May not be null.
+ * @param handler A handler to be processed the font fetching.
+ */
+ public static void requestFont(
+ final @NonNull Context context,
+ final @NonNull FontRequest request,
+ final @NonNull FontRequestCallback callback,
+ final @NonNull Handler handler
+ ) {
+ FontRequestWorker.requestFontInternal(context.getApplicationContext(), request, callback,
+ handler);
+ }
+
+ /**
+ * Fetch fonts given a font request.
+ *
+ * @param context A {@link Context} to be used for fetching fonts.
+ * @param cancellationSignal A signal to cancel the operation in progress, or null if none. If
+ * the operation is canceled, then {@link
+ * android.os.OperationCanceledException} will be thrown when the
+ * query is executed.
+ * @param request A {@link FontRequest} object that identifies the provider and query for the
+ * request.
+ *
+ * @return {@link FontFamilyResult}
+ *
+ * @throws PackageManager.NameNotFoundException If requested package or authority was not found
+ * in the system.
+ */
+ @NonNull
+ public static FontFamilyResult fetchFonts(
+ @NonNull Context context,
+ @Nullable CancellationSignal cancellationSignal,
+ @NonNull FontRequest request
+ ) throws PackageManager.NameNotFoundException {
+ return FontProvider.getFontFamilyResult(context, request, cancellationSignal);
+ }
+
+ // TODO remove, replace with LIBRARY private, used for tests
+ /**
+ * Used for tests, should not be used otherwise.
+ * @hide
+ **/
+ @RestrictTo(LIBRARY_GROUP_PREFIX)
+ public static void resetCache() {
+ FontRequestWorker.resetTypefaceCache();
+ }
+
+ // TODO @RestrictTo(LIBRARY)
+ /** @hide */
+ @RestrictTo(LIBRARY_GROUP_PREFIX)
+ public static Typeface getFontSync(
+ final Context context,
+ final FontRequest request,
+ final @Nullable ResourcesCompat.FontCallback fontCallback,
+ final @Nullable Handler handler,
+ boolean isBlockingFetch,
+ int timeout,
+ final int style
+ ) {
+ return FontRequestWorker.getTypeface(context, request, fontCallback, handler,
+ isBlockingFetch, timeout, style);
+ }
+
+ // TODO remove
+ /**
+ * A helper function to create a mapping from {@link Uri} to {@link ByteBuffer}.
+ *
+ * Skip if the file contents is not ready to be read.
+ *
+ * @param context A {@link Context} to be used for resolving content URI in
+ * {@link FontInfo}.
+ * @param fonts An array of {@link FontInfo}.
+ * @return A map from {@link Uri} to {@link ByteBuffer}.
+ * @hide
+ */
+ @RestrictTo(LIBRARY_GROUP_PREFIX)
+ @RequiresApi(19)
+ public static Map<Uri, ByteBuffer> prepareFontData(
+ Context context,
+ FontInfo[] fonts,
+ CancellationSignal cancellationSignal
+ ) {
+ return TypefaceCompatUtil.readFontInfoIntoByteBuffer(context, fonts, cancellationSignal);
+ }
+
+
+ // TODO: Remove, unused
+ /** @hide */
+ @VisibleForTesting
+ @RestrictTo(LIBRARY_GROUP_PREFIX)
+ @Nullable
+ public static ProviderInfo getProvider(
+ @NonNull PackageManager packageManager,
+ @NonNull FontRequest request,
+ @Nullable Resources resources
+ ) throws PackageManager.NameNotFoundException {
+ return FontProvider.getProvider(packageManager, request, resources);
+ }
+
/**
* Defines the constants used in a response from a Font Provider. The cursor returned from the
* query should have the ID column populated with the content uri ID for the resulting font.
@@ -152,175 +285,6 @@
}
/**
- * Constant used to identify the List of {@link ParcelFileDescriptor} item in the Bundle
- * returned to the ResultReceiver in getFont.
- * @hide
- */
- @RestrictTo(LIBRARY_GROUP_PREFIX)
- public static final String PARCEL_FONT_RESULTS = "font_results";
-
- // Error codes internal to the system, which can not come from a provider. To keep the number
- // space open for new provider codes, these should all be negative numbers.
- /** @hide */
- @RestrictTo(LIBRARY_GROUP_PREFIX)
- /* package */ static final int RESULT_CODE_PROVIDER_NOT_FOUND = -1;
- /** @hide */
- @RestrictTo(LIBRARY_GROUP_PREFIX)
- /* package */ static final int RESULT_CODE_WRONG_CERTIFICATES = -2;
- // Note -3 is used by FontRequestCallback to indicate the font failed to load.
-
- static final LruCache<String, Typeface> sTypefaceCache = new LruCache<>(16);
-
- private static final int BACKGROUND_THREAD_KEEP_ALIVE_DURATION_MS = 10000;
- private static final SelfDestructiveThread sBackgroundThread =
- new SelfDestructiveThread("fonts-androidx", Process.THREAD_PRIORITY_BACKGROUND,
- BACKGROUND_THREAD_KEEP_ALIVE_DURATION_MS);
-
- @NonNull
- static TypefaceResult getFontInternal(final Context context, final FontRequest request,
- int style) {
- FontFamilyResult result;
- try {
- result = fetchFonts(context, null /* CancellationSignal */, request);
- } catch (PackageManager.NameNotFoundException e) {
- return new TypefaceResult(null, FontRequestCallback.FAIL_REASON_PROVIDER_NOT_FOUND);
- }
- if (result.getStatusCode() == FontFamilyResult.STATUS_OK) {
- final Typeface typeface = TypefaceCompat.createFromFontInfo(
- context, null /* CancellationSignal */, result.getFonts(), style);
- return new TypefaceResult(typeface, typeface != null
- ? FontRequestCallback.RESULT_OK
- : FontRequestCallback.FAIL_REASON_FONT_LOAD_ERROR);
- }
- int resultCode = result.getStatusCode() == FontFamilyResult.STATUS_WRONG_CERTIFICATES
- ? FontRequestCallback.FAIL_REASON_WRONG_CERTIFICATES
- : FontRequestCallback.FAIL_REASON_FONT_LOAD_ERROR;
- return new TypefaceResult(null, resultCode);
- }
-
- static final Object sLock = new Object();
- @GuardedBy("sLock")
- static final SimpleArrayMap<String, ArrayList<ReplyCallback<TypefaceResult>>>
- sPendingReplies = new SimpleArrayMap<>();
-
- private static final class TypefaceResult {
- final Typeface mTypeface;
- @FontRequestCallback.FontRequestFailReason final int mResult;
-
- TypefaceResult(@Nullable Typeface typeface,
- @FontRequestCallback.FontRequestFailReason int result) {
- mTypeface = typeface;
- mResult = result;
- }
- }
-
- /**
- * Used for tests, should not be used otherwise.
- * @hide
- **/
- @RestrictTo(LIBRARY_GROUP_PREFIX)
- public static void resetCache() {
- sTypefaceCache.evictAll();
- }
-
- /** @hide */
- @RestrictTo(LIBRARY_GROUP_PREFIX)
- public static Typeface getFontSync(final Context context, final FontRequest request,
- final @Nullable ResourcesCompat.FontCallback fontCallback,
- final @Nullable Handler handler, boolean isBlockingFetch, int timeout,
- final int style) {
- final String id = request.getIdentifier() + "-" + style;
- Typeface cached = sTypefaceCache.get(id);
- if (cached != null) {
- if (fontCallback != null) {
- fontCallback.onFontRetrieved(cached);
- }
- return cached;
- }
-
- if (isBlockingFetch && timeout == FontResourcesParserCompat.INFINITE_TIMEOUT_VALUE) {
- // Wait forever. No need to post to the thread.
- TypefaceResult typefaceResult = getFontInternal(context, request, style);
- if (fontCallback != null) {
- if (typefaceResult.mResult == FontFamilyResult.STATUS_OK) {
- fontCallback.callbackSuccessAsync(typefaceResult.mTypeface, handler);
- } else {
- fontCallback.callbackFailAsync(typefaceResult.mResult, handler);
- }
- }
- return typefaceResult.mTypeface;
- }
-
- final Callable<TypefaceResult> fetcher = new Callable<TypefaceResult>() {
- @Override
- public TypefaceResult call() throws Exception {
- TypefaceResult typeface = getFontInternal(context, request, style);
- if (typeface.mTypeface != null) {
- sTypefaceCache.put(id, typeface.mTypeface);
- }
- return typeface;
- }
- };
-
- if (isBlockingFetch) {
- try {
- return sBackgroundThread.postAndWait(fetcher, timeout).mTypeface;
- } catch (InterruptedException e) {
- return null;
- }
- } else {
- final ReplyCallback<TypefaceResult> reply = fontCallback == null ? null
- : new ReplyCallback<TypefaceResult>() {
- @Override
- public void onReply(final TypefaceResult typeface) {
- if (typeface == null) {
- fontCallback.callbackFailAsync(
- FontRequestCallback.FAIL_REASON_FONT_NOT_FOUND, handler);
- } else if (typeface.mResult == FontFamilyResult.STATUS_OK) {
- fontCallback.callbackSuccessAsync(typeface.mTypeface, handler);
- } else {
- fontCallback.callbackFailAsync(typeface.mResult, handler);
- }
- }
- };
-
- synchronized (sLock) {
- ArrayList<ReplyCallback<TypefaceResult>> pendingReplies = sPendingReplies.get(id);
- if (pendingReplies != null) {
- // Already requested. Do not request the same provider again and insert the
- // reply to the queue instead.
- if (reply != null) {
- pendingReplies.add(reply);
- }
- return null;
- }
- if (reply != null) {
- pendingReplies = new ArrayList<>();
- pendingReplies.add(reply);
- sPendingReplies.put(id, pendingReplies);
- }
- }
- sBackgroundThread.postAndReply(fetcher, new ReplyCallback<TypefaceResult>() {
- @Override
- public void onReply(final TypefaceResult typeface) {
- final ArrayList<ReplyCallback<TypefaceResult>> replies;
- synchronized (sLock) {
- replies = sPendingReplies.get(id);
- if (replies == null) {
- return; // Nobody requested replies. Do nothing.
- }
- sPendingReplies.remove(id);
- }
- for (int i = 0; i < replies.size(); ++i) {
- replies.get(i).onReply(typeface);
- }
- }
- });
- return null;
- }
- }
-
- /**
* Object represent a font entry in the family returned from {@link #fetchFonts}.
*/
public static class FontInfo {
@@ -341,9 +305,12 @@
* @hide
*/
@RestrictTo(LIBRARY_GROUP_PREFIX)
- public FontInfo(@NonNull Uri uri, @IntRange(from = 0) int ttcIndex,
+ public FontInfo(
+ @NonNull Uri uri,
+ @IntRange(from = 0) int ttcIndex,
@IntRange(from = 1, to = 1000) int weight,
- boolean italic, int resultCode) {
+ boolean italic, int resultCode
+ ) {
mUri = Preconditions.checkNotNull(uri);
mTtcIndex = ttcIndex;
mWeight = weight;
@@ -445,36 +412,43 @@
/** @hide */
@RestrictTo(LIBRARY_GROUP_PREFIX)
public static final int RESULT_OK = Columns.RESULT_CODE_OK;
+
/**
* Constant returned by {@link #onTypefaceRequestFailed(int)} signaling that the given
* provider was not found on the device.
*/
- public static final int FAIL_REASON_PROVIDER_NOT_FOUND = RESULT_CODE_PROVIDER_NOT_FOUND;
+ public static final int FAIL_REASON_PROVIDER_NOT_FOUND = -1;
+
/**
* Constant returned by {@link #onTypefaceRequestFailed(int)} signaling that the given
* provider must be authenticated and the given certificates do not match its signature.
*/
- public static final int FAIL_REASON_WRONG_CERTIFICATES = RESULT_CODE_WRONG_CERTIFICATES;
+ public static final int FAIL_REASON_WRONG_CERTIFICATES = -2;
+
/**
* Constant returned by {@link #onTypefaceRequestFailed(int)} signaling that the font
* returned by the provider was not loaded properly.
*/
public static final int FAIL_REASON_FONT_LOAD_ERROR = -3;
+
/**
* Constant that signals that the font was not loaded due to security issues. This usually
* means the font was attempted to load on a restricted context.
*/
public static final int FAIL_REASON_SECURITY_VIOLATION = -4;
+
/**
* Constant returned by {@link #onTypefaceRequestFailed(int)} signaling that the font
* provider did not return any results for the given query.
*/
public static final int FAIL_REASON_FONT_NOT_FOUND = Columns.RESULT_CODE_FONT_NOT_FOUND;
+
/**
* Constant returned by {@link #onTypefaceRequestFailed(int)} signaling that the font
* provider found the queried font, but it is currently unavailable.
*/
public static final int FAIL_REASON_FONT_UNAVAILABLE = Columns.RESULT_CODE_FONT_UNAVAILABLE;
+
/**
* Constant returned by {@link #onTypefaceRequestFailed(int)} signaling that the given
* query was not supported by the provider.
@@ -514,371 +488,5 @@
public void onTypefaceRequestFailed(@FontRequestFailReason int reason) {}
}
- /**
- * Create a typeface object given a font request. The font will be asynchronously fetched,
- * therefore the result is delivered to the given callback. See {@link FontRequest}.
- * Only one of the methods in callback will be invoked, depending on whether the request
- * succeeds or fails. These calls will happen on the caller thread.
- * @param context A context to be used for fetching from font provider.
- * @param request A {@link FontRequest} object that identifies the provider and query for the
- * request. May not be null.
- * @param callback A callback that will be triggered when results are obtained. May not be null.
- * @param handler A handler to be processed the font fetching.
- */
- public static void requestFont(final @NonNull Context context,
- final @NonNull FontRequest request, final @NonNull FontRequestCallback callback,
- final @NonNull Handler handler) {
- requestFontInternal(context.getApplicationContext(), request, callback, handler);
- }
- /**
- * Internal method of requestFont for avoiding holding strong refernece of Context.
- */
- @SuppressWarnings("deprecation")
- private static void requestFontInternal(final @NonNull Context appContext,
- final @NonNull FontRequest request, final @NonNull FontRequestCallback callback,
- final @NonNull Handler handler) {
- final Handler callerThreadHandler = new Handler();
- handler.post(new Runnable() {
- @Override
- public void run() {
- // TODO: Cache the result.
- FontFamilyResult result;
- try {
- result = fetchFonts(appContext, null /* cancellation signal */, request);
- } catch (PackageManager.NameNotFoundException e) {
- callerThreadHandler.post(new Runnable() {
- @Override
- public void run() {
- callback.onTypefaceRequestFailed(
- FontRequestCallback.FAIL_REASON_PROVIDER_NOT_FOUND);
- }
- });
- return;
- }
-
- if (result.getStatusCode() != FontFamilyResult.STATUS_OK) {
- switch (result.getStatusCode()) {
- case FontFamilyResult.STATUS_WRONG_CERTIFICATES:
- callerThreadHandler.post(new Runnable() {
- @Override
- public void run() {
- callback.onTypefaceRequestFailed(
- FontRequestCallback.FAIL_REASON_WRONG_CERTIFICATES);
- }
- });
- return;
- case FontFamilyResult.STATUS_UNEXPECTED_DATA_PROVIDED:
- callerThreadHandler.post(new Runnable() {
- @Override
- public void run() {
- callback.onTypefaceRequestFailed(
- FontRequestCallback.FAIL_REASON_FONT_LOAD_ERROR);
- }
- });
- return;
- default:
- // fetchFont returns unexpected status type. Fallback to load error.
- callerThreadHandler.post(new Runnable() {
- @Override
- public void run() {
- callback.onTypefaceRequestFailed(
- FontRequestCallback.FAIL_REASON_FONT_LOAD_ERROR);
- }
- });
- return;
- }
- }
-
- final FontInfo[] fonts = result.getFonts();
- if (fonts == null || fonts.length == 0) {
- callerThreadHandler.post(new Runnable() {
- @Override
- public void run() {
- callback.onTypefaceRequestFailed(
- FontRequestCallback.FAIL_REASON_FONT_NOT_FOUND);
- }
- });
- return;
- }
- for (final FontInfo font : fonts) {
- if (font.getResultCode() != Columns.RESULT_CODE_OK) {
- // We proceed if all font entry is ready to use. Otherwise report the first
- // error.
- final int resultCode = font.getResultCode();
- if (resultCode < 0) {
- // Negative values are reserved for internal errors. Fallback to load
- // error.
- callerThreadHandler.post(new Runnable() {
- @Override
- public void run() {
- callback.onTypefaceRequestFailed(
- FontRequestCallback.FAIL_REASON_FONT_LOAD_ERROR);
- }
- });
- } else {
- callerThreadHandler.post(new Runnable() {
- @Override
- public void run() {
- callback.onTypefaceRequestFailed(resultCode);
- }
- });
- }
- return;
- }
- }
-
- final Typeface typeface = buildTypeface(appContext, null /* cancellation signal */,
- fonts);
- if (typeface == null) {
- // Something went wrong during reading font files. This happens if the given
- // font file is an unsupported font type.
- callerThreadHandler.post(new Runnable() {
- @Override
- public void run() {
- callback.onTypefaceRequestFailed(
- FontRequestCallback.FAIL_REASON_FONT_LOAD_ERROR);
- }
- });
- return;
- }
-
- callerThreadHandler.post(new Runnable() {
- @Override
- public void run() {
- callback.onTypefaceRetrieved(typeface);
- }
- });
- }
- });
- }
-
- /**
- * Build a Typeface from an array of {@link FontInfo}
- *
- * Results that are marked as not ready will be skipped.
- *
- * @param context A {@link Context} that will be used to fetch the font contents.
- * @param cancellationSignal A signal to cancel the operation in progress, or null if none. If
- * the operation is canceled, then {@link
- * android.os.OperationCanceledException} will be thrown.
- * @param fonts An array of {@link FontInfo} to be used to create a Typeface.
- * @return A Typeface object. Returns null if typeface creation fails.
- */
- @Nullable
- public static Typeface buildTypeface(@NonNull Context context,
- @Nullable CancellationSignal cancellationSignal, @NonNull FontInfo[] fonts) {
- return TypefaceCompat.createFromFontInfo(context, cancellationSignal, fonts,
- Typeface.NORMAL);
- }
-
- /**
- * A helper function to create a mapping from {@link Uri} to {@link ByteBuffer}.
- *
- * Skip if the file contents is not ready to be read.
- *
- * @param context A {@link Context} to be used for resolving content URI in
- * {@link FontInfo}.
- * @param fonts An array of {@link FontInfo}.
- * @return A map from {@link Uri} to {@link ByteBuffer}.
- * @hide
- */
- @RestrictTo(LIBRARY_GROUP_PREFIX)
- @RequiresApi(19)
- public static Map<Uri, ByteBuffer> prepareFontData(Context context, FontInfo[] fonts,
- CancellationSignal cancellationSignal) {
- final HashMap<Uri, ByteBuffer> out = new HashMap<>();
-
- for (FontInfo font : fonts) {
- if (font.getResultCode() != Columns.RESULT_CODE_OK) {
- continue;
- }
-
- final Uri uri = font.getUri();
- if (out.containsKey(uri)) {
- continue;
- }
-
- ByteBuffer buffer = TypefaceCompatUtil.mmap(context, cancellationSignal, uri);
- out.put(uri, buffer);
- }
- return Collections.unmodifiableMap(out);
- }
-
- /**
- * Fetch fonts given a font request.
- *
- * @param context A {@link Context} to be used for fetching fonts.
- * @param cancellationSignal A signal to cancel the operation in progress, or null if none. If
- * the operation is canceled, then {@link
- * android.os.OperationCanceledException} will be thrown when the
- * query is executed.
- * @param request A {@link FontRequest} object that identifies the provider and query for the
- * request.
- *
- * @return {@link FontFamilyResult}
- *
- * @throws PackageManager.NameNotFoundException If requested package or authority was not found
- * in the system.
- */
- @NonNull
- public static FontFamilyResult fetchFonts(@NonNull Context context,
- @Nullable CancellationSignal cancellationSignal, @NonNull FontRequest request)
- throws PackageManager.NameNotFoundException {
- ProviderInfo providerInfo = getProvider(
- context.getPackageManager(), request, context.getResources());
- if (providerInfo == null) {
- return new FontFamilyResult(FontFamilyResult.STATUS_WRONG_CERTIFICATES, null);
-
- }
- FontInfo[] fonts = getFontFromProvider(
- context, request, providerInfo.authority, cancellationSignal);
- return new FontFamilyResult(FontFamilyResult.STATUS_OK, fonts);
- }
-
- /** @hide */
- @VisibleForTesting
- @RestrictTo(LIBRARY_GROUP_PREFIX)
- public static @Nullable ProviderInfo getProvider(@NonNull PackageManager packageManager,
- @NonNull FontRequest request, @Nullable Resources resources)
- throws PackageManager.NameNotFoundException {
- String providerAuthority = request.getProviderAuthority();
- ProviderInfo info = packageManager.resolveContentProvider(providerAuthority, 0);
- if (info == null) {
- throw new PackageManager.NameNotFoundException("No package found for authority: "
- + providerAuthority);
- }
-
- if (!info.packageName.equals(request.getProviderPackage())) {
- throw new PackageManager.NameNotFoundException("Found content provider "
- + providerAuthority
- + ", but package was not " + request.getProviderPackage());
- }
-
- List<byte[]> signatures;
- // We correctly check all signatures returned, as advised in the lint error.
- @SuppressLint("PackageManagerGetSignatures")
- PackageInfo packageInfo = packageManager.getPackageInfo(info.packageName,
- PackageManager.GET_SIGNATURES);
- signatures = convertToByteArrayList(packageInfo.signatures);
- Collections.sort(signatures, sByteArrayComparator);
- List<List<byte[]>> requestCertificatesList = getCertificates(request, resources);
- for (int i = 0; i < requestCertificatesList.size(); ++i) {
- // Make a copy so we can sort it without modifying the incoming data.
- List<byte[]> requestSignatures = new ArrayList<>(requestCertificatesList.get(i));
- Collections.sort(requestSignatures, sByteArrayComparator);
- if (equalsByteArrayList(signatures, requestSignatures)) {
- return info;
- }
- }
- return null;
- }
-
- private static List<List<byte[]>> getCertificates(FontRequest request, Resources resources) {
- if (request.getCertificates() != null) {
- return request.getCertificates();
- }
- int resourceId = request.getCertificatesArrayResId();
- return FontResourcesParserCompat.readCerts(resources, resourceId);
- }
-
- private static final Comparator<byte[]> sByteArrayComparator = new Comparator<byte[]>() {
- @Override
- public int compare(byte[] l, byte[] r) {
- if (l.length != r.length) {
- return l.length - r.length;
- }
- for (int i = 0; i < l.length; ++i) {
- if (l[i] != r[i]) {
- return l[i] - r[i];
- }
- }
- return 0;
- }
- };
-
- private static boolean equalsByteArrayList(List<byte[]> signatures,
- List<byte[]> requestSignatures) {
- if (signatures.size() != requestSignatures.size()) {
- return false;
- }
- for (int i = 0; i < signatures.size(); ++i) {
- if (!Arrays.equals(signatures.get(i), requestSignatures.get(i))) {
- return false;
- }
- }
- return true;
- }
-
- private static List<byte[]> convertToByteArrayList(Signature[] signatures) {
- List<byte[]> shas = new ArrayList<>();
- for (int i = 0; i < signatures.length; ++i) {
- shas.add(signatures[i].toByteArray());
- }
- return shas;
- }
-
- @VisibleForTesting
- @NonNull
- static FontInfo[] getFontFromProvider(Context context, FontRequest request, String authority,
- CancellationSignal cancellationSignal) {
- ArrayList<FontInfo> result = new ArrayList<>();
- final Uri uri = new Uri.Builder().scheme(ContentResolver.SCHEME_CONTENT)
- .authority(authority)
- .build();
- final Uri fileBaseUri = new Uri.Builder().scheme(ContentResolver.SCHEME_CONTENT)
- .authority(authority)
- .appendPath("file")
- .build();
- Cursor cursor = null;
- try {
- if (Build.VERSION.SDK_INT > 16) {
- cursor = context.getContentResolver().query(uri, new String[] {
- Columns._ID, Columns.FILE_ID, Columns.TTC_INDEX,
- Columns.VARIATION_SETTINGS, Columns.WEIGHT, Columns.ITALIC,
- Columns.RESULT_CODE },
- "query = ?", new String[] { request.getQuery() }, null, cancellationSignal);
- } else {
- // No cancellation signal.
- cursor = context.getContentResolver().query(uri, new String[] {
- Columns._ID, Columns.FILE_ID, Columns.TTC_INDEX,
- Columns.VARIATION_SETTINGS, Columns.WEIGHT, Columns.ITALIC,
- Columns.RESULT_CODE },
- "query = ?", new String[] { request.getQuery() }, null);
- }
- if (cursor != null && cursor.getCount() > 0) {
- final int resultCodeColumnIndex = cursor.getColumnIndex(Columns.RESULT_CODE);
- result = new ArrayList<>();
- final int idColumnIndex = cursor.getColumnIndex(Columns._ID);
- final int fileIdColumnIndex = cursor.getColumnIndex(Columns.FILE_ID);
- final int ttcIndexColumnIndex = cursor.getColumnIndex(Columns.TTC_INDEX);
- final int weightColumnIndex = cursor.getColumnIndex(Columns.WEIGHT);
- final int italicColumnIndex = cursor.getColumnIndex(Columns.ITALIC);
- while (cursor.moveToNext()) {
- int resultCode = resultCodeColumnIndex != -1
- ? cursor.getInt(resultCodeColumnIndex) : Columns.RESULT_CODE_OK;
- final int ttcIndex = ttcIndexColumnIndex != -1
- ? cursor.getInt(ttcIndexColumnIndex) : 0;
- Uri fileUri;
- if (fileIdColumnIndex == -1) {
- long id = cursor.getLong(idColumnIndex);
- fileUri = ContentUris.withAppendedId(uri, id);
- } else {
- long id = cursor.getLong(fileIdColumnIndex);
- fileUri = ContentUris.withAppendedId(fileBaseUri, id);
- }
-
- int weight = weightColumnIndex != -1 ? cursor.getInt(weightColumnIndex) : 400;
- boolean italic = italicColumnIndex != -1 && cursor.getInt(italicColumnIndex)
- == 1;
- result.add(new FontInfo(fileUri, ttcIndex, weight, italic, resultCode));
- }
- }
- } finally {
- if (cursor != null) {
- cursor.close();
- }
- }
- return result.toArray(new FontInfo[0]);
- }
}
diff --git a/core/core/src/main/java/androidx/core/view/DisplayCompat.java b/core/core/src/main/java/androidx/core/view/DisplayCompat.java
index 7593f36..cdef49f 100644
--- a/core/core/src/main/java/androidx/core/view/DisplayCompat.java
+++ b/core/core/src/main/java/androidx/core/view/DisplayCompat.java
@@ -30,6 +30,7 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
+import androidx.annotation.VisibleForTesting;
import androidx.core.util.Preconditions;
import java.lang.reflect.Method;
@@ -56,7 +57,8 @@
* determine support for 4k on Android TV devices.
*/
@NonNull
- public static ModeCompat getMode(@NonNull Context context, @NonNull Display display) {
+ @VisibleForTesting
+ static ModeCompat getMode(@NonNull Context context, @NonNull Display display) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
return Api23Impl.getMode(context, display);
}
@@ -385,10 +387,7 @@
* This field does *not* indicate the native resolution of the display.
*
* @return true if this mode is the same resolution as the current display mode.
- * @deprecated Use {@link DisplayCompat#getMode} to retrieve the resolution of the current
- * display mode.
*/
- @Deprecated
public boolean isNative() {
return mIsNative;
}
diff --git a/datastore/datastore-core/src/main/java/androidx/datastore/core/DataStoreFactory.kt b/datastore/datastore-core/src/main/java/androidx/datastore/core/DataStoreFactory.kt
index 37548c3..92348b9 100644
--- a/datastore/datastore-core/src/main/java/androidx/datastore/core/DataStoreFactory.kt
+++ b/datastore/datastore-core/src/main/java/androidx/datastore/core/DataStoreFactory.kt
@@ -30,7 +30,9 @@
/**
* Create an instance of SingleProcessDataStore. Never create more than one instance of
* DataStore for a given file; doing so can break all DataStore functionality. You should
- * consider managing your DataStore instance as a singleton.
+ * consider managing your DataStore instance as a singleton. If there are multiple DataStores
+ * active, DataStore will throw IllegalStateException when reading or updating data. A
+ * DataStore is considered active as long as its scope is active.
*
* T is the type DataStore acts on. The type T must be immutable. Mutating a type used in
* DataStore invalidates any guarantees that DataStore provides and will result in
diff --git a/datastore/datastore-core/src/main/java/androidx/datastore/core/SingleProcessDataStore.kt b/datastore/datastore-core/src/main/java/androidx/datastore/core/SingleProcessDataStore.kt
index de813de..65f5551 100644
--- a/datastore/datastore-core/src/main/java/androidx/datastore/core/SingleProcessDataStore.kt
+++ b/datastore/datastore-core/src/main/java/androidx/datastore/core/SingleProcessDataStore.kt
@@ -15,6 +15,7 @@
*/
package androidx.datastore.core
+import androidx.annotation.GuardedBy
import androidx.datastore.core.handlers.NoOpCorruptionHandler
import kotlinx.coroutines.CancellationException
import kotlinx.coroutines.CompletableDeferred
@@ -159,7 +160,23 @@
private val SCRATCH_SUFFIX = ".tmp"
- private val file: File by lazy { produceFile() }
+ private val file: File by lazy {
+ val file = produceFile()
+
+ file.absolutePath.let {
+ synchronized(activeFilesLock) {
+ check(!activeFiles.contains(it)) {
+ "There are multiple DataStores active for the same file: $file. You should " +
+ "either maintain your DataStore as a singleton or confirm that there is " +
+ "no two DataStore's active on the same file (by confirming that the scope" +
+ " is cancelled)."
+ }
+ activeFiles.add(it)
+ }
+ }
+
+ file
+ }
@Suppress("UNCHECKED_CAST")
private val downstreamFlow = MutableStateFlow(UnInitialized as State<T>)
@@ -199,6 +216,10 @@
}
// We expect it to always be non-null but we will leave the alternative as a no-op
// just in case.
+
+ synchronized(activeFilesLock) {
+ activeFiles.remove(file.absolutePath)
+ }
},
msg, ex ->
if (msg is Message.Update) {
@@ -459,4 +480,17 @@
fileOutputStream.flush()
}
}
-}
\ No newline at end of file
+
+ internal companion object {
+ /**
+ * Active files should contain the absolute path for which there are currently active
+ * DataStores. A DataStore is active until the scope it was created with has been
+ * cancelled. Files aren't added to this list until the first read/write because the file
+ * path is computed asynchronously.
+ */
+ @GuardedBy("activeFilesLock")
+ internal val activeFiles = mutableSetOf<String>()
+
+ internal val activeFilesLock = Any()
+ }
+}
diff --git a/datastore/datastore-core/src/test/java/androidx/datastore/core/SingleProcessDataStoreTest.kt b/datastore/datastore-core/src/test/java/androidx/datastore/core/SingleProcessDataStoreTest.kt
index 74d268f..a0f58ba4 100644
--- a/datastore/datastore-core/src/test/java/androidx/datastore/core/SingleProcessDataStoreTest.kt
+++ b/datastore/datastore-core/src/test/java/androidx/datastore/core/SingleProcessDataStoreTest.kt
@@ -30,6 +30,7 @@
import kotlinx.coroutines.awaitCancellation
import kotlinx.coroutines.cancel
import kotlinx.coroutines.cancelAndJoin
+import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.take
@@ -100,9 +101,14 @@
@Test
fun testReadWithNewInstance() = runBlockingTest {
- store.updateData { 1 }
- val newStore = newDataStore(testFile)
- assertThat(newStore.data.first()).isEqualTo(1)
+ coroutineScope {
+ val newStore = newDataStore(testFile, scope = this)
+ newStore.updateData { 1 }
+ }
+ coroutineScope {
+ val newStore = newDataStore(testFile, scope = this)
+ assertThat(newStore.data.first()).isEqualTo(1)
+ }
}
@Test
@@ -182,27 +188,36 @@
@Test
fun testReadAfterTransientBadWrite() = runBlockingTest {
- store.updateData { 1 }
- testingSerializer.failingWrite = true
+ val file = tempFolder.newFile()
+ coroutineScope {
+ val store = newDataStore(file = file, scope = this)
+ store.updateData { 1 }
+ testingSerializer.failingWrite = true
+ assertThrows<IOException> { store.updateData { 2 } }
+ }
- assertThrows<IOException> { store.updateData { 2 } }
-
- val newStore = newDataStore(testFile)
- assertThat(newStore.data.first()).isEqualTo(1)
+ coroutineScope {
+ val newStore = newDataStore(file, scope = this)
+ assertThat(newStore.data.first()).isEqualTo(1)
+ }
}
@Test
fun testWriteToNonExistentDir() = runBlockingTest {
val fileInNonExistentDir =
File(tempFolder.newFolder(), "/this/does/not/exist/foo.tst")
- var newStore = newDataStore(fileInNonExistentDir)
+ coroutineScope {
+ val newStore = newDataStore(fileInNonExistentDir, scope = this)
- newStore.updateData { 1 }
+ newStore.updateData { 1 }
- assertThat(newStore.data.first()).isEqualTo(1)
+ assertThat(newStore.data.first()).isEqualTo(1)
+ }
- newStore = newDataStore(fileInNonExistentDir)
- assertThat(newStore.data.first()).isEqualTo(1)
+ coroutineScope {
+ val newStore = newDataStore(fileInNonExistentDir, scope = this)
+ assertThat(newStore.data.first()).isEqualTo(1)
+ }
}
@Test
@@ -388,8 +403,6 @@
@Test
fun testInitTaskOnlyRunsOnce() = runBlockingTest {
- store.updateData { 1 }
-
val count = AtomicInteger()
val newStore = newDataStore(
testFile,
@@ -619,70 +632,96 @@
@Test
fun testHandlerNotCalledGoodData() = runBlockingTest {
- store.updateData { 1 } // Pre-seed the data so the file exists.
+ coroutineScope {
+ newDataStore(file = testFile, scope = this).updateData { 1 }
+ }
- val testingHandler: TestingCorruptionHandler = TestingCorruptionHandler()
- store = newDataStore(corruptionHandler = testingHandler, file = testFile)
+ coroutineScope {
+ val testingHandler: TestingCorruptionHandler = TestingCorruptionHandler()
+ val newStore = newDataStore(corruptionHandler = testingHandler, file = testFile)
- store.updateData { 2 }
- store.data.first()
+ newStore.updateData { 2 }
+ newStore.data.first()
- assertThat(testingHandler.numCalls).isEqualTo(0)
+ assertThat(testingHandler.numCalls).isEqualTo(0)
+ }
}
@Test
fun handlerNotCalledNonCorruption() = runBlockingTest {
- store.updateData { 1 } // Pre-seed the data so the file exists.
+ coroutineScope {
+ newDataStore(file = testFile, scope = this).updateData { 1 }
+ }
- val testingHandler: TestingCorruptionHandler = TestingCorruptionHandler()
- testingSerializer.failingRead = true
- store = newDataStore(corruptionHandler = testingHandler, file = testFile)
+ coroutineScope {
+ val testingHandler = TestingCorruptionHandler()
+ testingSerializer.failingRead = true
+ val newStore = newDataStore(corruptionHandler = testingHandler, file = testFile)
- assertThrows<IOException> { store.updateData { 2 } }
- assertThrows<IOException> { store.data.first() }
+ assertThrows<IOException> { newStore.updateData { 2 } }
+ assertThrows<IOException> { newStore.data.first() }
- assertThat(testingHandler.numCalls).isEqualTo(0)
+ assertThat(testingHandler.numCalls).isEqualTo(0)
+ }
}
@Test
fun testHandlerCalledCorruptDataRead() = runBlockingTest {
- store.updateData { 1 } // Pre-seed the data so the file exists.
+ coroutineScope {
+ val newStore = newDataStore(testFile, scope = this)
+ newStore.updateData { 1 } // Pre-seed the data so the file exists.
+ }
- val testingHandler: TestingCorruptionHandler = TestingCorruptionHandler()
- testingSerializer.failReadWithCorruptionException = true
- store = newDataStore(corruptionHandler = testingHandler, file = testFile)
+ coroutineScope {
+ val testingHandler: TestingCorruptionHandler = TestingCorruptionHandler()
+ testingSerializer.failReadWithCorruptionException = true
+ val newStore = newDataStore(corruptionHandler = testingHandler, file = testFile)
- assertThrows<IOException> { store.data.first() }.hasMessageThat().contains(
- "Handler thrown exception."
- )
+ assertThrows<IOException> { newStore.data.first() }.hasMessageThat().contains(
+ "Handler thrown exception."
+ )
- assertThat(testingHandler.numCalls).isEqualTo(1)
+ assertThat(testingHandler.numCalls).isEqualTo(1)
+ }
}
@Test
fun testHandlerCalledCorruptDataWrite() = runBlockingTest {
- store.updateData { 1 } // Pre-seed the data so the file exists.
+ coroutineScope {
+ val newStore = newDataStore(file = testFile, scope = this)
+ newStore.updateData { 1 }
+ }
- val testingHandler: TestingCorruptionHandler = TestingCorruptionHandler()
- testingSerializer.failReadWithCorruptionException = true
- store = newDataStore(corruptionHandler = testingHandler, file = testFile)
+ coroutineScope {
+ val testingHandler: TestingCorruptionHandler = TestingCorruptionHandler()
+ testingSerializer.failReadWithCorruptionException = true
+ val newStore = newDataStore(corruptionHandler = testingHandler, file = testFile)
- assertThrows<IOException> { store.updateData { 1 } }.hasMessageThat().contains(
- "Handler thrown exception."
- )
+ assertThrows<IOException> { newStore.updateData { 1 } }.hasMessageThat().contains(
+ "Handler thrown exception."
+ )
- assertThat(testingHandler.numCalls).isEqualTo(1)
+ assertThat(testingHandler.numCalls).isEqualTo(1)
+ }
}
@Test
fun testHandlerReplaceData() = runBlockingTest {
- store.updateData { 1 } // Pre-seed the data so the file exists.
+ coroutineScope {
+ newDataStore(file = testFile, scope = this).updateData { 1 }
+ }
- val testingHandler: TestingCorruptionHandler = TestingCorruptionHandler(replaceWith = 10)
- testingSerializer.failReadWithCorruptionException = true
- store = newDataStore(corruptionHandler = testingHandler, file = testFile)
+ coroutineScope {
+ val testingHandler: TestingCorruptionHandler =
+ TestingCorruptionHandler(replaceWith = 10)
+ testingSerializer.failReadWithCorruptionException = true
+ val newStore = newDataStore(
+ corruptionHandler = testingHandler, file = testFile,
+ scope = this
+ )
- assertThat(store.data.first()).isEqualTo(10)
+ assertThat(newStore.data.first()).isEqualTo(10)
+ }
}
@Test
@@ -822,6 +861,36 @@
assertThat(store.updateData { it.inc() }).isEqualTo(2)
}
+ @Test
+ fun testCreateDuplicateActiveDataStore() = runBlocking<Unit> {
+ val file = tempFolder.newFile()
+ val dataStore = newDataStore(file = file, scope = CoroutineScope(Job()))
+
+ dataStore.data.first()
+
+ val duplicateDataStore = newDataStore(file = file, scope = CoroutineScope(Job()))
+
+ assertThrows<IllegalStateException> {
+ duplicateDataStore.data.first()
+ }
+ }
+
+ @Test
+ fun testCreateDataStore_withSameFileAsInactiveDataStore() = runBlocking<Unit> {
+ val file = tempFolder.newFile()
+ val scope1 = CoroutineScope(Job())
+ val dataStore1 = newDataStore(file = file, scope = scope1)
+
+ dataStore1.data.first()
+
+ scope1.coroutineContext.job.cancelAndJoin()
+
+ val dataStore2 = newDataStore(file = file, scope = CoroutineScope(Job()))
+
+ // This shouldn't throw an exception bc the scope1 has been cancelled.
+ dataStore2.data.first()
+ }
+
// Mutable wrapper around a byte
data class ByteWrapper(var byte: Byte) {
internal class ByteWrapperSerializer() : Serializer<ByteWrapper> {
diff --git a/datastore/datastore-core/src/test/java/androidx/datastore/core/handlers/ReplaceFileCorruptionHandlerTest.kt b/datastore/datastore-core/src/test/java/androidx/datastore/core/handlers/ReplaceFileCorruptionHandlerTest.kt
index 3dadb2f6..adb3265 100644
--- a/datastore/datastore-core/src/test/java/androidx/datastore/core/handlers/ReplaceFileCorruptionHandlerTest.kt
+++ b/datastore/datastore-core/src/test/java/androidx/datastore/core/handlers/ReplaceFileCorruptionHandlerTest.kt
@@ -21,6 +21,7 @@
import androidx.testutils.assertThrows
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.async
+import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.test.TestCoroutineScope
import kotlinx.coroutines.test.runBlockingTest
@@ -101,6 +102,7 @@
@Test
fun testFailingWritePropagates() = runBlockingTest {
+
preSeedData(testFile, 1)
val store = SingleProcessDataStore<Byte>(
@@ -117,10 +119,12 @@
}
private suspend fun preSeedData(file: File, byte: Byte) {
- SingleProcessDataStore(
- { file },
- TestingSerializer(),
- scope = TestCoroutineScope()
- ).updateData { byte }
+ coroutineScope {
+ SingleProcessDataStore(
+ { file },
+ TestingSerializer(),
+ scope = this
+ ).updateData { byte }
+ }
}
}
\ No newline at end of file
diff --git a/datastore/datastore-preferences-rxjava2/src/main/java/androidx/datastore/preferences/rxjava2/RxPreferenceDataStoreBuilder.kt b/datastore/datastore-preferences-rxjava2/src/main/java/androidx/datastore/preferences/rxjava2/RxPreferenceDataStoreBuilder.kt
index dc3f40d..a19d0a5 100644
--- a/datastore/datastore-preferences-rxjava2/src/main/java/androidx/datastore/preferences/rxjava2/RxPreferenceDataStoreBuilder.kt
+++ b/datastore/datastore-preferences-rxjava2/src/main/java/androidx/datastore/preferences/rxjava2/RxPreferenceDataStoreBuilder.kt
@@ -35,7 +35,7 @@
import java.util.concurrent.Callable
/**
- * RxSharedPreferencesMigrationBuilder class for a DataStore that works on a single process.
+ * Builder for a Preferences RxDataStore that works on a single process.
*/
@SuppressLint("TopLevelBuilder")
public class RxPreferenceDataStoreBuilder {
diff --git a/datastore/datastore-preferences-rxjava3/api/current.txt b/datastore/datastore-preferences-rxjava3/api/current.txt
index 88fe233..768c965 100644
--- a/datastore/datastore-preferences-rxjava3/api/current.txt
+++ b/datastore/datastore-preferences-rxjava3/api/current.txt
@@ -6,7 +6,7 @@
ctor public RxPreferenceDataStoreBuilder(android.content.Context context, String name);
method public androidx.datastore.preferences.rxjava3.RxPreferenceDataStoreBuilder addDataMigration(androidx.datastore.core.DataMigration<androidx.datastore.preferences.core.Preferences> dataMigration);
method public androidx.datastore.preferences.rxjava3.RxPreferenceDataStoreBuilder addRxDataMigration(androidx.datastore.rxjava3.RxDataMigration<androidx.datastore.preferences.core.Preferences> rxDataMigration);
- method public androidx.datastore.core.DataStore<androidx.datastore.preferences.core.Preferences> build();
+ method public androidx.datastore.rxjava3.RxDataStore<androidx.datastore.preferences.core.Preferences> build();
method public androidx.datastore.preferences.rxjava3.RxPreferenceDataStoreBuilder setCorruptionHandler(androidx.datastore.core.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.core.Preferences> corruptionHandler);
method public androidx.datastore.preferences.rxjava3.RxPreferenceDataStoreBuilder setIoScheduler(io.reactivex.rxjava3.core.Scheduler ioScheduler);
}
diff --git a/datastore/datastore-preferences-rxjava3/api/public_plus_experimental_current.txt b/datastore/datastore-preferences-rxjava3/api/public_plus_experimental_current.txt
index 88fe233..768c965 100644
--- a/datastore/datastore-preferences-rxjava3/api/public_plus_experimental_current.txt
+++ b/datastore/datastore-preferences-rxjava3/api/public_plus_experimental_current.txt
@@ -6,7 +6,7 @@
ctor public RxPreferenceDataStoreBuilder(android.content.Context context, String name);
method public androidx.datastore.preferences.rxjava3.RxPreferenceDataStoreBuilder addDataMigration(androidx.datastore.core.DataMigration<androidx.datastore.preferences.core.Preferences> dataMigration);
method public androidx.datastore.preferences.rxjava3.RxPreferenceDataStoreBuilder addRxDataMigration(androidx.datastore.rxjava3.RxDataMigration<androidx.datastore.preferences.core.Preferences> rxDataMigration);
- method public androidx.datastore.core.DataStore<androidx.datastore.preferences.core.Preferences> build();
+ method public androidx.datastore.rxjava3.RxDataStore<androidx.datastore.preferences.core.Preferences> build();
method public androidx.datastore.preferences.rxjava3.RxPreferenceDataStoreBuilder setCorruptionHandler(androidx.datastore.core.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.core.Preferences> corruptionHandler);
method public androidx.datastore.preferences.rxjava3.RxPreferenceDataStoreBuilder setIoScheduler(io.reactivex.rxjava3.core.Scheduler ioScheduler);
}
diff --git a/datastore/datastore-preferences-rxjava3/api/restricted_current.txt b/datastore/datastore-preferences-rxjava3/api/restricted_current.txt
index 88fe233..768c965 100644
--- a/datastore/datastore-preferences-rxjava3/api/restricted_current.txt
+++ b/datastore/datastore-preferences-rxjava3/api/restricted_current.txt
@@ -6,7 +6,7 @@
ctor public RxPreferenceDataStoreBuilder(android.content.Context context, String name);
method public androidx.datastore.preferences.rxjava3.RxPreferenceDataStoreBuilder addDataMigration(androidx.datastore.core.DataMigration<androidx.datastore.preferences.core.Preferences> dataMigration);
method public androidx.datastore.preferences.rxjava3.RxPreferenceDataStoreBuilder addRxDataMigration(androidx.datastore.rxjava3.RxDataMigration<androidx.datastore.preferences.core.Preferences> rxDataMigration);
- method public androidx.datastore.core.DataStore<androidx.datastore.preferences.core.Preferences> build();
+ method public androidx.datastore.rxjava3.RxDataStore<androidx.datastore.preferences.core.Preferences> build();
method public androidx.datastore.preferences.rxjava3.RxPreferenceDataStoreBuilder setCorruptionHandler(androidx.datastore.core.handlers.ReplaceFileCorruptionHandler<androidx.datastore.preferences.core.Preferences> corruptionHandler);
method public androidx.datastore.preferences.rxjava3.RxPreferenceDataStoreBuilder setIoScheduler(io.reactivex.rxjava3.core.Scheduler ioScheduler);
}
diff --git a/datastore/datastore-preferences-rxjava3/src/androidTest/java/androidx/datastore/preferences/rxjava3/RxPreferencesDataStoreBuilderTest.java b/datastore/datastore-preferences-rxjava3/src/androidTest/java/androidx/datastore/preferences/rxjava3/RxPreferencesDataStoreBuilderTest.java
index f72a779..812abac 100644
--- a/datastore/datastore-preferences-rxjava3/src/androidTest/java/androidx/datastore/preferences/rxjava3/RxPreferencesDataStoreBuilderTest.java
+++ b/datastore/datastore-preferences-rxjava3/src/androidTest/java/androidx/datastore/preferences/rxjava3/RxPreferencesDataStoreBuilderTest.java
@@ -21,7 +21,6 @@
import android.content.Context;
import androidx.annotation.NonNull;
-import androidx.datastore.core.DataStore;
import androidx.datastore.core.handlers.ReplaceFileCorruptionHandler;
import androidx.datastore.preferences.core.MutablePreferences;
import androidx.datastore.preferences.core.Preferences;
@@ -41,7 +40,6 @@
import io.reactivex.rxjava3.core.Completable;
import io.reactivex.rxjava3.core.Single;
-
public class RxPreferencesDataStoreBuilderTest {
@Rule
public TemporaryFolder tempFolder = new TemporaryFolder();
@@ -60,17 +58,19 @@
public void testConstructWithProduceFile() throws Exception {
File file = tempFolder.newFile("temp.preferences_pb");
- DataStore<Preferences> dataStore =
+ RxDataStore<Preferences> dataStore =
new RxPreferenceDataStoreBuilder(() -> file).build();
- Single<Preferences> incrementInt = RxDataStore.updateDataAsync(dataStore,
+ Single<Preferences> incrementInt = dataStore.updateDataAsync(
RxPreferencesDataStoreBuilderTest::incrementInteger);
assertThat(incrementInt.blockingGet().get(INTEGER_KEY)).isEqualTo(1);
+ dataStore.dispose();
+ dataStore.shutdownComplete().blockingAwait();
// Construct it again and confirm that the data is still there:
dataStore = new RxPreferenceDataStoreBuilder(() -> file).build();
- assertThat(RxDataStore.data(dataStore).blockingFirst().get(INTEGER_KEY))
+ assertThat(dataStore.data().blockingFirst().get(INTEGER_KEY))
.isEqualTo(1);
}
@@ -87,16 +87,21 @@
prefsFile.delete();
}
- DataStore<Preferences> dataStore =
+ RxDataStore<Preferences> dataStore =
new RxPreferenceDataStoreBuilder(context, name).build();
- Single<Preferences> set1 = RxDataStore.updateDataAsync(dataStore,
+ Single<Preferences> set1 = dataStore.updateDataAsync(
RxPreferencesDataStoreBuilderTest::incrementInteger);
assertThat(set1.blockingGet().get(INTEGER_KEY)).isEqualTo(1);
+ dataStore.dispose();
+ dataStore.shutdownComplete().blockingAwait();
// Construct it again and confirm that the data is still there:
dataStore = new RxPreferenceDataStoreBuilder(context, name).build();
- assertThat(RxDataStore.data(dataStore).blockingFirst().get(INTEGER_KEY)).isEqualTo(1);
+ assertThat(dataStore.data().blockingFirst().get(INTEGER_KEY)).isEqualTo(1);
+ dataStore.dispose();
+ dataStore.shutdownComplete().blockingAwait();
+
// Construct it again with the expected file path and confirm that the data is there:
dataStore =
@@ -106,7 +111,7 @@
+ "/datastore/" + name + ".preferences_pb")
).build();
- assertThat(RxDataStore.data(dataStore).blockingFirst().get(INTEGER_KEY)).isEqualTo(1);
+ assertThat(dataStore.data().blockingFirst().get(INTEGER_KEY)).isEqualTo(1);
}
@Test
@@ -131,19 +136,19 @@
}
};
- DataStore<Preferences> dataStore =
+ RxDataStore<Preferences> dataStore =
new RxPreferenceDataStoreBuilder(() ->
tempFolder.newFile("temp.preferences_pb"))
.addRxDataMigration(plusOneMigration)
.build();
- assertThat(RxDataStore.data(dataStore).blockingFirst().get(INTEGER_KEY))
+ assertThat(dataStore.data().blockingFirst().get(INTEGER_KEY))
.isEqualTo(1);
}
@Test
- public void testCorruptionHandlerIsUser() throws Exception {
+ public void testCorruptionHandlerIsUsed() throws Exception {
File file = tempFolder.newFile("temp.preferences_pb");
@@ -160,12 +165,12 @@
});
- DataStore<Preferences> dataStore =
+ RxDataStore<Preferences> dataStore =
new RxPreferenceDataStoreBuilder(() -> file)
.setCorruptionHandler(replaceFileCorruptionHandler)
.build();
- assertThat(RxDataStore.data(dataStore).blockingFirst().get(INTEGER_KEY))
+ assertThat(dataStore.data().blockingFirst().get(INTEGER_KEY))
.isEqualTo(99);
}
-}
+}
\ No newline at end of file
diff --git a/datastore/datastore-preferences-rxjava3/src/main/java/androidx/datastore/preferences/rxjava3/RxPreferenceDataStoreBuilder.kt b/datastore/datastore-preferences-rxjava3/src/main/java/androidx/datastore/preferences/rxjava3/RxPreferenceDataStoreBuilder.kt
index 527cfb3..1aeea48 100644
--- a/datastore/datastore-preferences-rxjava3/src/main/java/androidx/datastore/preferences/rxjava3/RxPreferenceDataStoreBuilder.kt
+++ b/datastore/datastore-preferences-rxjava3/src/main/java/androidx/datastore/preferences/rxjava3/RxPreferenceDataStoreBuilder.kt
@@ -19,22 +19,23 @@
import android.annotation.SuppressLint
import android.content.Context
import androidx.datastore.core.DataMigration
-import androidx.datastore.core.DataStore
import androidx.datastore.core.handlers.ReplaceFileCorruptionHandler
import androidx.datastore.preferences.core.PreferenceDataStoreFactory
import androidx.datastore.preferences.core.Preferences
import androidx.datastore.preferences.createDataStore
import androidx.datastore.rxjava3.RxDataMigration
+import androidx.datastore.rxjava3.RxDataStore
import io.reactivex.rxjava3.core.Scheduler
import io.reactivex.rxjava3.schedulers.Schedulers
import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Job
import kotlinx.coroutines.rx3.asCoroutineDispatcher
import kotlinx.coroutines.rx3.await
import java.io.File
import java.util.concurrent.Callable
/**
- * RxSharedPreferencesMigrationBuilder class for a DataStore that works on a single process.
+ * Builder for a Preferences RxDataStore that works on a single process.
*/
@SuppressLint("TopLevelBuilder")
public class RxPreferenceDataStoreBuilder {
@@ -97,7 +98,7 @@
*
* This parameter is optional and defaults to no corruption handler.
*
- * @param corruptionHandler
+ * @param corruptionHandler the ReplaceFileCorruptionHandler to install
* @return this
*/
@Suppress("MissingGetterMatchingBuilder")
@@ -135,24 +136,22 @@
* context and name are set.
* @return the DataStore with the provided parameters
*/
- public fun build(): DataStore<Preferences> {
- val scope = CoroutineScope(ioScheduler.asCoroutineDispatcher())
+ public fun build(): RxDataStore<Preferences> {
+ val scope = CoroutineScope(ioScheduler.asCoroutineDispatcher() + Job())
val produceFile: Callable<File>? = this.produceFile
val context: Context? = this.context
val name: String? = this.name
- return if (produceFile != null) {
+ val delegate = if (produceFile != null) {
PreferenceDataStoreFactory.create(
produceFile = { produceFile.call() },
- scope = CoroutineScope(
- ioScheduler.asCoroutineDispatcher()
- ),
+ scope = scope,
corruptionHandler = corruptionHandler,
migrations = dataMigrations
)
} else if (context != null && name != null) {
- return context.createDataStore(
+ context.createDataStore(
name = name,
scope = scope,
corruptionHandler = corruptionHandler,
@@ -161,6 +160,8 @@
} else {
error("Either produceFile or context and name must be set. This should never happen.")
}
+
+ return RxDataStore.create(delegate, scope)
}
}
@@ -177,4 +178,4 @@
override suspend fun cleanUp() {
migration.cleanUp().await()
}
-}
+}
\ No newline at end of file
diff --git a/datastore/datastore-preferences/src/androidTest/java/androidx/datastore/preferences/PreferenceDataStoreFactoryTest.kt b/datastore/datastore-preferences/src/androidTest/java/androidx/datastore/preferences/PreferenceDataStoreFactoryTest.kt
index 1d5f383..26d0edd 100644
--- a/datastore/datastore-preferences/src/androidTest/java/androidx/datastore/preferences/PreferenceDataStoreFactoryTest.kt
+++ b/datastore/datastore-preferences/src/androidTest/java/androidx/datastore/preferences/PreferenceDataStoreFactoryTest.kt
@@ -29,6 +29,7 @@
import androidx.test.core.app.ApplicationProvider
import kotlinx.coroutines.FlowPreview
import kotlinx.coroutines.ObsoleteCoroutinesApi
+import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.test.TestCoroutineScope
import kotlinx.coroutines.test.runBlockingTest
@@ -134,23 +135,30 @@
fun testCreateWithContextAndName() = runBlockingTest {
val prefs = preferencesOf(stringKey to "value")
- var store = context.createDataStore(
- name = "my_settings",
- scope = dataStoreScope
- )
- store.updateData { prefs }
-
- // Create it again and confirm it's still there
- store = context.createDataStore("my_settings", scope = dataStoreScope)
- assertEquals(prefs, store.data.first())
-
- // Check that the file name is context.filesDir + name + ".preferences_pb"
- store = PreferenceDataStoreFactory.create(
- scope = dataStoreScope
- ) {
- File(context.filesDir, "datastore/my_settings.preferences_pb")
+ coroutineScope {
+ val store = context.createDataStore(
+ name = "my_settings",
+ scope = this
+ )
+ store.updateData { prefs }
}
- assertEquals(prefs, store.data.first())
+
+ coroutineScope {
+ // Create it again and confirm it's still there
+ val store = context.createDataStore("my_settings", scope = this)
+ assertEquals(prefs, store.data.first())
+ }
+
+ coroutineScope {
+ // Check that the file name is context.filesDir + name + ".preferences_pb"
+ val store = PreferenceDataStoreFactory.create(
+ scope = this
+ ) {
+ File(context.filesDir, "datastore/my_settings.preferences_pb")
+ }
+
+ assertEquals(prefs, store.data.first())
+ }
}
@Test
diff --git a/datastore/datastore-rxjava2/src/test/java/androidx/datastore/rxjava2/RxDataStoreTest.java b/datastore/datastore-rxjava2/src/test/java/androidx/datastore/rxjava2/RxDataStoreTest.java
index d66267f..40d4c42 100644
--- a/datastore/datastore-rxjava2/src/test/java/androidx/datastore/rxjava2/RxDataStoreTest.java
+++ b/datastore/datastore-rxjava2/src/test/java/androidx/datastore/rxjava2/RxDataStoreTest.java
@@ -16,6 +16,8 @@
package androidx.datastore.rxjava2;
+import static androidx.testutils.AssertionsKt.assertThrows;
+
import static com.google.common.truth.Truth.assertThat;
import org.junit.Rule;
@@ -124,6 +126,22 @@
}
@Test
+ public void openingSameDataStoreTwice_throwsException() throws IOException {
+ File newFile = tempFolder.newFile();
+ TestingSerializer testingSerializer = new TestingSerializer();
+
+ RxDataStore<Byte> byteRxDataStore = new RxDataStoreBuilder<Byte>(() -> newFile,
+ testingSerializer).build();
+
+ assertThat(byteRxDataStore.data().blockingFirst()).isEqualTo((byte) 0);
+
+ RxDataStore<Byte> byteRxDataStore2 = new RxDataStoreBuilder<Byte>(() -> newFile,
+ testingSerializer).build();
+
+ assertThrows(IllegalStateException.class, () -> byteRxDataStore2.data().blockingFirst());
+ }
+
+ @Test
public void canCloseDataStore() throws Exception {
File newFile = tempFolder.newFile();
TestingSerializer testingSerializer = new TestingSerializer();
diff --git a/datastore/datastore-rxjava3/api/current.txt b/datastore/datastore-rxjava3/api/current.txt
index bdba98a..35b64273 100644
--- a/datastore/datastore-rxjava3/api/current.txt
+++ b/datastore/datastore-rxjava3/api/current.txt
@@ -7,9 +7,12 @@
method public io.reactivex.rxjava3.core.Single<java.lang.Boolean!> shouldMigrate(T?);
}
- public final class RxDataStore {
- method @kotlinx.coroutines.ExperimentalCoroutinesApi public static <T> io.reactivex.rxjava3.core.Flowable<T> data(androidx.datastore.core.DataStore<T>);
- method @kotlinx.coroutines.ExperimentalCoroutinesApi public static <T> io.reactivex.rxjava3.core.Single<T> updateDataAsync(androidx.datastore.core.DataStore<T>, io.reactivex.rxjava3.functions.Function<T,io.reactivex.rxjava3.core.Single<T>> transform);
+ public final class RxDataStore<T> implements io.reactivex.rxjava3.disposables.Disposable {
+ method @kotlinx.coroutines.ExperimentalCoroutinesApi public io.reactivex.rxjava3.core.Flowable<T> data();
+ method public void dispose();
+ method public boolean isDisposed();
+ method public io.reactivex.rxjava3.core.Completable shutdownComplete();
+ method @kotlinx.coroutines.ExperimentalCoroutinesApi public io.reactivex.rxjava3.core.Single<T> updateDataAsync(io.reactivex.rxjava3.functions.Function<T,io.reactivex.rxjava3.core.Single<T>> transform);
}
public final class RxDataStoreBuilder<T> {
@@ -17,7 +20,7 @@
ctor public RxDataStoreBuilder(android.content.Context context, String fileName, androidx.datastore.core.Serializer<T> serializer);
method public androidx.datastore.rxjava3.RxDataStoreBuilder<T> addDataMigration(androidx.datastore.core.DataMigration<T> dataMigration);
method public androidx.datastore.rxjava3.RxDataStoreBuilder<T> addRxDataMigration(androidx.datastore.rxjava3.RxDataMigration<T> rxDataMigration);
- method public androidx.datastore.core.DataStore<T> build();
+ method public androidx.datastore.rxjava3.RxDataStore<T> build();
method public androidx.datastore.rxjava3.RxDataStoreBuilder<T> setCorruptionHandler(androidx.datastore.core.handlers.ReplaceFileCorruptionHandler<T> corruptionHandler);
method public androidx.datastore.rxjava3.RxDataStoreBuilder<T> setIoScheduler(io.reactivex.rxjava3.core.Scheduler ioScheduler);
}
diff --git a/datastore/datastore-rxjava3/api/public_plus_experimental_current.txt b/datastore/datastore-rxjava3/api/public_plus_experimental_current.txt
index bdba98a..35b64273 100644
--- a/datastore/datastore-rxjava3/api/public_plus_experimental_current.txt
+++ b/datastore/datastore-rxjava3/api/public_plus_experimental_current.txt
@@ -7,9 +7,12 @@
method public io.reactivex.rxjava3.core.Single<java.lang.Boolean!> shouldMigrate(T?);
}
- public final class RxDataStore {
- method @kotlinx.coroutines.ExperimentalCoroutinesApi public static <T> io.reactivex.rxjava3.core.Flowable<T> data(androidx.datastore.core.DataStore<T>);
- method @kotlinx.coroutines.ExperimentalCoroutinesApi public static <T> io.reactivex.rxjava3.core.Single<T> updateDataAsync(androidx.datastore.core.DataStore<T>, io.reactivex.rxjava3.functions.Function<T,io.reactivex.rxjava3.core.Single<T>> transform);
+ public final class RxDataStore<T> implements io.reactivex.rxjava3.disposables.Disposable {
+ method @kotlinx.coroutines.ExperimentalCoroutinesApi public io.reactivex.rxjava3.core.Flowable<T> data();
+ method public void dispose();
+ method public boolean isDisposed();
+ method public io.reactivex.rxjava3.core.Completable shutdownComplete();
+ method @kotlinx.coroutines.ExperimentalCoroutinesApi public io.reactivex.rxjava3.core.Single<T> updateDataAsync(io.reactivex.rxjava3.functions.Function<T,io.reactivex.rxjava3.core.Single<T>> transform);
}
public final class RxDataStoreBuilder<T> {
@@ -17,7 +20,7 @@
ctor public RxDataStoreBuilder(android.content.Context context, String fileName, androidx.datastore.core.Serializer<T> serializer);
method public androidx.datastore.rxjava3.RxDataStoreBuilder<T> addDataMigration(androidx.datastore.core.DataMigration<T> dataMigration);
method public androidx.datastore.rxjava3.RxDataStoreBuilder<T> addRxDataMigration(androidx.datastore.rxjava3.RxDataMigration<T> rxDataMigration);
- method public androidx.datastore.core.DataStore<T> build();
+ method public androidx.datastore.rxjava3.RxDataStore<T> build();
method public androidx.datastore.rxjava3.RxDataStoreBuilder<T> setCorruptionHandler(androidx.datastore.core.handlers.ReplaceFileCorruptionHandler<T> corruptionHandler);
method public androidx.datastore.rxjava3.RxDataStoreBuilder<T> setIoScheduler(io.reactivex.rxjava3.core.Scheduler ioScheduler);
}
diff --git a/datastore/datastore-rxjava3/api/restricted_current.txt b/datastore/datastore-rxjava3/api/restricted_current.txt
index bdba98a..35b64273 100644
--- a/datastore/datastore-rxjava3/api/restricted_current.txt
+++ b/datastore/datastore-rxjava3/api/restricted_current.txt
@@ -7,9 +7,12 @@
method public io.reactivex.rxjava3.core.Single<java.lang.Boolean!> shouldMigrate(T?);
}
- public final class RxDataStore {
- method @kotlinx.coroutines.ExperimentalCoroutinesApi public static <T> io.reactivex.rxjava3.core.Flowable<T> data(androidx.datastore.core.DataStore<T>);
- method @kotlinx.coroutines.ExperimentalCoroutinesApi public static <T> io.reactivex.rxjava3.core.Single<T> updateDataAsync(androidx.datastore.core.DataStore<T>, io.reactivex.rxjava3.functions.Function<T,io.reactivex.rxjava3.core.Single<T>> transform);
+ public final class RxDataStore<T> implements io.reactivex.rxjava3.disposables.Disposable {
+ method @kotlinx.coroutines.ExperimentalCoroutinesApi public io.reactivex.rxjava3.core.Flowable<T> data();
+ method public void dispose();
+ method public boolean isDisposed();
+ method public io.reactivex.rxjava3.core.Completable shutdownComplete();
+ method @kotlinx.coroutines.ExperimentalCoroutinesApi public io.reactivex.rxjava3.core.Single<T> updateDataAsync(io.reactivex.rxjava3.functions.Function<T,io.reactivex.rxjava3.core.Single<T>> transform);
}
public final class RxDataStoreBuilder<T> {
@@ -17,7 +20,7 @@
ctor public RxDataStoreBuilder(android.content.Context context, String fileName, androidx.datastore.core.Serializer<T> serializer);
method public androidx.datastore.rxjava3.RxDataStoreBuilder<T> addDataMigration(androidx.datastore.core.DataMigration<T> dataMigration);
method public androidx.datastore.rxjava3.RxDataStoreBuilder<T> addRxDataMigration(androidx.datastore.rxjava3.RxDataMigration<T> rxDataMigration);
- method public androidx.datastore.core.DataStore<T> build();
+ method public androidx.datastore.rxjava3.RxDataStore<T> build();
method public androidx.datastore.rxjava3.RxDataStoreBuilder<T> setCorruptionHandler(androidx.datastore.core.handlers.ReplaceFileCorruptionHandler<T> corruptionHandler);
method public androidx.datastore.rxjava3.RxDataStoreBuilder<T> setIoScheduler(io.reactivex.rxjava3.core.Scheduler ioScheduler);
}
diff --git a/datastore/datastore-rxjava3/src/androidTest/java/androidx/datastore/rxjava3/RxDataStoreBuilderTest.java b/datastore/datastore-rxjava3/src/androidTest/java/androidx/datastore/rxjava3/RxDataStoreBuilderTest.java
index 0564f77..313d329 100644
--- a/datastore/datastore-rxjava3/src/androidTest/java/androidx/datastore/rxjava3/RxDataStoreBuilderTest.java
+++ b/datastore/datastore-rxjava3/src/androidTest/java/androidx/datastore/rxjava3/RxDataStoreBuilderTest.java
@@ -20,7 +20,6 @@
import android.content.Context;
import androidx.annotation.NonNull;
-import androidx.datastore.core.DataStore;
import androidx.datastore.core.handlers.ReplaceFileCorruptionHandler;
import androidx.test.core.app.ApplicationProvider;
@@ -48,40 +47,50 @@
@Test
public void testConstructWithProduceFile() throws Exception {
File file = tempFolder.newFile();
- DataStore<Byte> dataStore =
+ RxDataStore<Byte> dataStore =
new RxDataStoreBuilder<Byte>(() -> file, new TestingSerializer())
.build();
- Single<Byte> incrementByte = RxDataStore.updateDataAsync(dataStore,
+ Single<Byte> incrementByte = dataStore.updateDataAsync(
RxDataStoreBuilderTest::incrementByte);
assertThat(incrementByte.blockingGet()).isEqualTo(1);
+ dataStore.dispose();
+ dataStore.shutdownComplete().blockingAwait();
+
// Construct it again and confirm that the data is still there:
dataStore =
new RxDataStoreBuilder<Byte>(() -> file, new TestingSerializer())
.build();
- assertThat(RxDataStore.data(dataStore).blockingFirst()).isEqualTo(1);
+ assertThat(dataStore.data().blockingFirst()).isEqualTo(1);
}
@Test
public void testConstructWithContextAndName() throws Exception {
Context context = ApplicationProvider.getApplicationContext();
String name = "my_data_store";
- DataStore<Byte> dataStore =
+ RxDataStore<Byte> dataStore =
new RxDataStoreBuilder<Byte>(context, name, new TestingSerializer())
.build();
- Single<Byte> set1 = RxDataStore.updateDataAsync(dataStore, input -> Single.just((byte) 1));
+ Single<Byte> set1 = dataStore.updateDataAsync(input -> Single.just((byte) 1));
assertThat(set1.blockingGet()).isEqualTo(1);
+ dataStore.dispose();
+ dataStore.shutdownComplete().blockingAwait();
+
// Construct it again and confirm that the data is still there:
dataStore =
new RxDataStoreBuilder<Byte>(context, name, new TestingSerializer())
.build();
- assertThat(RxDataStore.data(dataStore).blockingFirst()).isEqualTo(1);
+ assertThat(dataStore.data().blockingFirst()).isEqualTo(1);
+ dataStore.dispose();
+ dataStore.shutdownComplete().blockingAwait();
+
+
// Construct it again with the expected file path and confirm that the data is there:
dataStore =
new RxDataStoreBuilder<Byte>(() -> new File(context.getFilesDir().getPath()
+ "/datastore/" + name), new TestingSerializer()
)
.build();
- assertThat(RxDataStore.data(dataStore).blockingFirst()).isEqualTo(1);
+ assertThat(dataStore.data().blockingFirst()).isEqualTo(1);
}
@Test
@@ -106,12 +115,12 @@
}
};
- DataStore<Byte> dataStore = new RxDataStoreBuilder<Byte>(
+ RxDataStore<Byte> dataStore = new RxDataStoreBuilder<Byte>(
() -> tempFolder.newFile(), new TestingSerializer())
.addRxDataMigration(plusOneMigration)
.build();
- assertThat(RxDataStore.data(dataStore).blockingFirst()).isEqualTo(1);
+ assertThat(dataStore.data().blockingFirst()).isEqualTo(1);
}
@Test
@@ -125,17 +134,17 @@
}));
- DataStore<Byte> dataStore = new RxDataStoreBuilder<Byte>(() -> tempFolder.newFile(),
+ RxDataStore<Byte> dataStore = new RxDataStoreBuilder<Byte>(() -> tempFolder.newFile(),
new TestingSerializer())
.setIoScheduler(singleThreadedScheduler)
.build();
- Single<Byte> update = RxDataStore.updateDataAsync(dataStore, input -> {
+ Single<Byte> update = dataStore.updateDataAsync(input -> {
Thread currentThread = Thread.currentThread();
assertThat(currentThread.getName()).isEqualTo("TestingThread");
return Single.just(input);
});
assertThat(update.blockingGet()).isEqualTo((byte) 0);
- Single<Byte> subsequentUpdate = RxDataStore.updateDataAsync(dataStore, input -> {
+ Single<Byte> subsequentUpdate = dataStore.updateDataAsync(input -> {
Thread currentThread = Thread.currentThread();
assertThat(currentThread.getName()).isEqualTo("TestingThread");
return Single.just(input);
@@ -151,11 +160,11 @@
new ReplaceFileCorruptionHandler<Byte>(exception -> (byte) 99);
- DataStore<Byte> dataStore = new RxDataStoreBuilder<Byte>(
+ RxDataStore<Byte> dataStore = new RxDataStoreBuilder<Byte>(
() -> tempFolder.newFile(),
testingSerializer)
.setCorruptionHandler(replaceFileCorruptionHandler)
.build();
- assertThat(RxDataStore.data(dataStore).blockingFirst()).isEqualTo(99);
+ assertThat(dataStore.data().blockingFirst()).isEqualTo(99);
}
-}
+}
\ No newline at end of file
diff --git a/datastore/datastore-rxjava3/src/androidTest/java/androidx/datastore/rxjava3/RxSharedPreferencesMigrationTest.java b/datastore/datastore-rxjava3/src/androidTest/java/androidx/datastore/rxjava3/RxSharedPreferencesMigrationTest.java
index b66d6ef..9d3d36b 100644
--- a/datastore/datastore-rxjava3/src/androidTest/java/androidx/datastore/rxjava3/RxSharedPreferencesMigrationTest.java
+++ b/datastore/datastore-rxjava3/src/androidTest/java/androidx/datastore/rxjava3/RxSharedPreferencesMigrationTest.java
@@ -24,12 +24,9 @@
import android.content.SharedPreferences;
import androidx.datastore.core.DataMigration;
-import androidx.datastore.core.DataStore;
import androidx.datastore.migrations.SharedPreferencesView;
import androidx.test.core.app.ApplicationProvider;
-import com.google.common.truth.Truth;
-
import org.jetbrains.annotations.NotNull;
import org.junit.Before;
import org.junit.Rule;
@@ -84,9 +81,9 @@
DataMigration<Byte> spMigration =
getSpMigrationBuilder(skippedMigration).build();
- DataStore<Byte> dataStoreWithMigrations = getDataStoreWithMigration(spMigration);
+ RxDataStore<Byte> dataStoreWithMigrations = getDataStoreWithMigration(spMigration);
- Truth.assertThat(RxDataStore.data(dataStoreWithMigrations).blockingFirst()).isEqualTo(0);
+ assertThat(dataStoreWithMigrations.data().blockingFirst()).isEqualTo(0);
}
@Test
@@ -116,9 +113,9 @@
}
).setKeysToMigrate(includedKey).build();
- DataStore<Byte> byteStore = getDataStoreWithMigration(dataMigration);
+ RxDataStore<Byte> byteStore = getDataStoreWithMigration(dataMigration);
- assertThat(RxDataStore.data(byteStore).blockingFirst()).isEqualTo(50);
+ assertThat(byteStore.data().blockingFirst()).isEqualTo(50);
assertThat(mSharedPrefs.contains(includedKey)).isFalse();
assertThat(mSharedPrefs.contains(notMigratedKey)).isTrue();
@@ -151,9 +148,9 @@
}
).build();
- DataStore<Byte> byteStore = getDataStoreWithMigration(dataMigration);
+ RxDataStore<Byte> byteStore = getDataStoreWithMigration(dataMigration);
- assertThat(RxDataStore.data(byteStore).blockingFirst()).isEqualTo(50);
+ assertThat(byteStore.data().blockingFirst()).isEqualTo(50);
assertThat(mSharedPrefs.contains(includedKey)).isFalse();
assertThat(mSharedPrefs.contains(includedKey2)).isFalse();
@@ -168,8 +165,8 @@
DataMigration<Byte> dataMigration =
getSpMigrationBuilder(new DefaultMigration()).setDeleteEmptyPreferences(
true).build();
- DataStore<Byte> byteStore = getDataStoreWithMigration(dataMigration);
- assertThat(RxDataStore.data(byteStore).blockingFirst()).isEqualTo(0);
+ RxDataStore<Byte> byteStore = getDataStoreWithMigration(dataMigration);
+ assertThat(byteStore.data().blockingFirst()).isEqualTo(0);
// Check that the shared preferences files are deleted
File prefsDir = new File(mContext.getApplicationInfo().dataDir, "shared_prefs");
@@ -185,7 +182,7 @@
rxSharedPreferencesMigration);
}
- private DataStore<Byte> getDataStoreWithMigration(DataMigration<Byte> dataMigration) {
+ private RxDataStore<Byte> getDataStoreWithMigration(DataMigration<Byte> dataMigration) {
return new RxDataStoreBuilder<Byte>(() -> mDatastoreFile, new TestingSerializer())
.addDataMigration(dataMigration).build();
}
@@ -206,4 +203,4 @@
return Single.just(currentData);
}
}
-}
+}
\ No newline at end of file
diff --git a/datastore/datastore-rxjava3/src/main/java/androidx/datastore/rxjava3/RxDataStore.kt b/datastore/datastore-rxjava3/src/main/java/androidx/datastore/rxjava3/RxDataStore.kt
index 467e039..8c93f71 100644
--- a/datastore/datastore-rxjava3/src/main/java/androidx/datastore/rxjava3/RxDataStore.kt
+++ b/datastore/datastore-rxjava3/src/main/java/androidx/datastore/rxjava3/RxDataStore.kt
@@ -17,60 +17,113 @@
package androidx.datastore.rxjava3
+import androidx.annotation.RestrictTo
import androidx.datastore.core.DataStore
+import io.reactivex.rxjava3.core.Completable
import io.reactivex.rxjava3.core.Flowable
import io.reactivex.rxjava3.core.Single
+import io.reactivex.rxjava3.disposables.Disposable
import io.reactivex.rxjava3.functions.Function
import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.async
+import kotlinx.coroutines.job
import kotlinx.coroutines.rx3.asFlowable
import kotlinx.coroutines.rx3.asSingle
import kotlinx.coroutines.rx3.await
+import kotlinx.coroutines.rx3.rxCompletable
/**
- * Gets a reactivex.Flowable of the data from DataStore. See [DataStore.data] for more information.
- *
- * Provides efficient, cached (when possible) access to the latest durably persisted state.
- * The flow will always either emit a value or throw an exception encountered when attempting
- * to read from disk. If an exception is encountered, collecting again will attempt to read the
- * data again.
- *
- * Do not layer a cache on top of this API: it will be be impossible to guarantee consistency.
- * Instead, use data.first() to access a single snapshot.
- *
- * The Flowable will complete with an IOException when an exception is encountered when reading
- * data.
- *
- * @return a flow representing the current state of the data
+ * A DataStore that supports RxJava operations on DataStore.
*/
-@ExperimentalCoroutinesApi
-public fun <T : Any> DataStore<T>.data(): Flowable<T> {
- return this.data.asFlowable()
-}
+public class RxDataStore<T : Any> private constructor(
+ /**
+ * The delegate DataStore.
+ */
+ private val delegateDs: DataStore<T>,
+ /**
+ * The CoroutineScope that the DataStore is created with. Must contain a Job to allow for
+ * cancellation.
+ */
+ private val scope: CoroutineScope
+) : Disposable {
-/**
- * See [DataStore.updateData]
- *
- * Updates the data transactionally in an atomic read-modify-write operation. All operations
- * are serialized, and the transform itself is a async so it can perform heavy work
- * such as RPCs.
- *
- * The Single completes when the data has been persisted durably to disk (after which
- * [data] will reflect the update). If the transform or write to disk fails, the
- * transaction is aborted and the returned Single is completed with the error.
- *
- * The transform will be run on the scheduler that DataStore was constructed with.
- *
- * @return the snapshot returned by the transform
- * @throws Exception when thrown by the transform function
- */
-@ExperimentalCoroutinesApi
-public fun <T : Any> DataStore<T>.updateDataAsync(transform: Function<T, Single<T>>): Single<T> {
- return CoroutineScope(Dispatchers.Unconfined).async {
- this@updateDataAsync.updateData {
- transform.apply(it).await()
+ /**
+ * @hide for datastore-preferences-rxjava2 artifact only
+ */
+ @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
+ companion object {
+ public fun <T : Any> create(delegateDs: DataStore<T>, scope: CoroutineScope):
+ RxDataStore<T> {
+ return RxDataStore<T>(delegateDs, scope)
+ }
+ }
+
+ /**
+ * Dispose of the DataStore. Wait for the Completable returned by [shutdownComplete] to
+ * confirm that the DataStore has been shut down.
+ */
+ override fun dispose() = scope.coroutineContext.job.cancel()
+
+ /**
+ * Returns whether this DataStore is closed
+ */
+ override fun isDisposed(): Boolean = scope.coroutineContext.job.isActive
+
+ /**
+ * Returns a completable that completes when the DataStore is completed. It is not safe to
+ * create a new DataStore with the same file name until this has completed.
+ */
+ public fun shutdownComplete(): Completable =
+ rxCompletable(scope.coroutineContext.minusKey(Job)) {
+ scope.coroutineContext.job.join()
}
- }.asSingle(Dispatchers.Unconfined)
-}
+
+ /**
+ * Gets a reactivex.Flowable of the data from DataStore. See [DataStore.data] for more information.
+ *
+ * Provides efficient, cached (when possible) access to the latest durably persisted state.
+ * The flow will always either emit a value or throw an exception encountered when attempting
+ * to read from disk. If an exception is encountered, collecting again will attempt to read the
+ * data again.
+ *
+ * Do not layer a cache on top of this API: it will be be impossible to guarantee consistency.
+ * Instead, use data.first() to access a single snapshot.
+ *
+ * The Flowable will complete with an IOException when an exception is encountered when reading
+ * data.
+ *
+ * @return a flow representing the current state of the data
+ */
+ @ExperimentalCoroutinesApi
+ public fun data(): Flowable<T> {
+ return delegateDs.data.asFlowable(scope.coroutineContext)
+ }
+
+ /**
+ * See [DataStore.updateData]
+ *
+ * Updates the data transactionally in an atomic read-modify-write operation. All operations
+ * are serialized, and the transform itself is a async so it can perform heavy work
+ * such as RPCs.
+ *
+ * The Single completes when the data has been persisted durably to disk (after which
+ * [data] will reflect the update). If the transform or write to disk fails, the
+ * transaction is aborted and the returned Single is completed with the error.
+ *
+ * The transform will be run on the scheduler that DataStore was constructed with.
+ *
+ * @return the snapshot returned by the transform
+ * @throws Exception when thrown by the transform function
+ */
+ @ExperimentalCoroutinesApi
+ public fun updateDataAsync(transform: Function<T, Single<T>>): Single<T> {
+ return scope.async(SupervisorJob()) {
+ delegateDs.updateData {
+ transform.apply(it).await()
+ }
+ }.asSingle(scope.coroutineContext.minusKey(Job))
+ }
+}
\ No newline at end of file
diff --git a/datastore/datastore-rxjava3/src/main/java/androidx/datastore/rxjava3/RxDataStoreBuilder.kt b/datastore/datastore-rxjava3/src/main/java/androidx/datastore/rxjava3/RxDataStoreBuilder.kt
index 7823ba3..b81362b 100644
--- a/datastore/datastore-rxjava3/src/main/java/androidx/datastore/rxjava3/RxDataStoreBuilder.kt
+++ b/datastore/datastore-rxjava3/src/main/java/androidx/datastore/rxjava3/RxDataStoreBuilder.kt
@@ -19,7 +19,6 @@
import android.annotation.SuppressLint
import android.content.Context
import androidx.datastore.core.DataMigration
-import androidx.datastore.core.DataStore
import androidx.datastore.core.DataStoreFactory
import androidx.datastore.core.Serializer
import androidx.datastore.createDataStore
@@ -27,16 +26,17 @@
import io.reactivex.rxjava3.core.Scheduler
import io.reactivex.rxjava3.schedulers.Schedulers
import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Job
import kotlinx.coroutines.rx3.asCoroutineDispatcher
import kotlinx.coroutines.rx3.await
import java.io.File
import java.util.concurrent.Callable
/**
- * Builder for an RxDataStore that works on a single process.
+ * Builder class for an RxDataStore that works on a single process.
*/
@SuppressLint("TopLevelBuilder")
-public class RxDataStoreBuilder<T> {
+public class RxDataStoreBuilder<T : Any> {
/**
* Create a RxDataStoreBuilder with the callable which returns the File that DataStore acts on.
@@ -139,21 +139,19 @@
*
* @return the DataStore with the provided parameters
*/
- public fun build(): DataStore<T> {
- val scope = CoroutineScope(ioScheduler.asCoroutineDispatcher())
+ public fun build(): RxDataStore<T> {
+ val scope = CoroutineScope(ioScheduler.asCoroutineDispatcher() + Job())
- return if (produceFile != null) {
+ val delegateDs = if (produceFile != null) {
DataStoreFactory.create(
produceFile = { produceFile!!.call() },
serializer = serializer!!,
- scope = CoroutineScope(
- ioScheduler.asCoroutineDispatcher()
- ),
+ scope = scope,
corruptionHandler = corruptionHandler,
migrations = dataMigrations
)
} else if (context != null && name != null) {
- return context!!.createDataStore(
+ context!!.createDataStore(
fileName = name!!,
serializer = serializer!!,
scope = scope,
@@ -161,10 +159,10 @@
migrations = dataMigrations
)
} else {
- error(
- "Either produceFile or context and name must be set. This should never happen."
- )
+ error("Either produceFile or context and name must be set. This should never happen.")
}
+
+ return RxDataStore.create(delegateDs, scope)
}
}
diff --git a/datastore/datastore-rxjava3/src/test/java/androidx/datastore/rxjava3/RxDataStoreTest.java b/datastore/datastore-rxjava3/src/test/java/androidx/datastore/rxjava3/RxDataStoreTest.java
index 83c05a8..fbe7d28 100644
--- a/datastore/datastore-rxjava3/src/test/java/androidx/datastore/rxjava3/RxDataStoreTest.java
+++ b/datastore/datastore-rxjava3/src/test/java/androidx/datastore/rxjava3/RxDataStoreTest.java
@@ -16,10 +16,9 @@
package androidx.datastore.rxjava3;
-import static com.google.common.truth.Truth.assertThat;
+import static androidx.testutils.AssertionsKt.assertThrows;
-import androidx.datastore.core.DataStore;
-import androidx.datastore.core.DataStoreFactory;
+import static com.google.common.truth.Truth.assertThat;
import org.junit.Rule;
import org.junit.Test;
@@ -27,13 +26,11 @@
import java.io.File;
import java.io.IOException;
-import java.util.ArrayList;
+import java.util.concurrent.CancellationException;
import java.util.concurrent.TimeUnit;
import io.reactivex.rxjava3.core.Single;
import io.reactivex.rxjava3.subscribers.TestSubscriber;
-import kotlinx.coroutines.CoroutineScopeKt;
-import kotlinx.coroutines.Dispatchers;
public class RxDataStoreTest {
@Rule
@@ -47,22 +44,19 @@
public void testGetSingleValue() throws Exception {
File newFile = tempFolder.newFile();
- DataStore<Byte> byteStore = DataStoreFactory.INSTANCE.create(
- new TestingSerializer(),
- null,
- new ArrayList<>(),
- CoroutineScopeKt.CoroutineScope(Dispatchers.getIO()),
- () -> newFile);
+ RxDataStore<Byte> byteStore =
+ new RxDataStoreBuilder<Byte>(() -> newFile, new TestingSerializer()).build();
- Byte firstByte = RxDataStore.data(byteStore).blockingFirst();
+
+ Byte firstByte = byteStore.data().blockingFirst();
assertThat(firstByte).isEqualTo(0);
- Single<Byte> incrementByte = RxDataStore.updateDataAsync(byteStore,
+ Single<Byte> incrementByte = byteStore.updateDataAsync(
RxDataStoreTest::incrementByte);
assertThat(incrementByte.blockingGet()).isEqualTo(1);
- firstByte = RxDataStore.data(byteStore).blockingFirst();
+ firstByte = byteStore.data().blockingFirst();
assertThat(firstByte).isEqualTo(1);
}
@@ -70,17 +64,14 @@
public void testTake3() throws Exception {
File newFile = tempFolder.newFile();
- DataStore<Byte> byteStore = DataStoreFactory.INSTANCE.create(
- new TestingSerializer(),
- null,
- new ArrayList<>(),
- CoroutineScopeKt.CoroutineScope(Dispatchers.getIO()),
- () -> newFile);
+ RxDataStore<Byte> byteStore =
+ new RxDataStoreBuilder<Byte>(() -> newFile, new TestingSerializer())
+ .build();
- TestSubscriber<Byte> testSubscriber = RxDataStore.data(byteStore).test();
+ TestSubscriber<Byte> testSubscriber = byteStore.data().test();
- RxDataStore.updateDataAsync(byteStore, RxDataStoreTest::incrementByte);
- RxDataStore.updateDataAsync(byteStore, RxDataStoreTest::incrementByte);
+ byteStore.updateDataAsync(RxDataStoreTest::incrementByte);
+ byteStore.updateDataAsync(RxDataStoreTest::incrementByte);
testSubscriber.awaitCount(3).assertValues((byte) 0, (byte) 1, (byte) 2);
}
@@ -91,16 +82,13 @@
File newFile = tempFolder.newFile();
TestingSerializer testingSerializer = new TestingSerializer();
- DataStore<Byte> byteStore = DataStoreFactory.INSTANCE.create(
- testingSerializer,
- null,
- new ArrayList<>(),
- CoroutineScopeKt.CoroutineScope(Dispatchers.getIO()),
- () -> newFile);
+ RxDataStore<Byte> byteStore =
+ new RxDataStoreBuilder<Byte>(() -> newFile, testingSerializer).build();
+
testingSerializer.setFailingRead(true);
- TestSubscriber<Byte> testSubscriber = RxDataStore.data(byteStore).test();
+ TestSubscriber<Byte> testSubscriber = byteStore.data().test();
assertThat(testSubscriber.await(5, TimeUnit.SECONDS)).isTrue();
@@ -108,7 +96,7 @@
testingSerializer.setFailingRead(false);
- testSubscriber = RxDataStore.data(byteStore).test();
+ testSubscriber = byteStore.data().test();
testSubscriber.awaitCount(1).assertValues((byte) 0);
}
@@ -117,28 +105,74 @@
File newFile = tempFolder.newFile();
TestingSerializer testingSerializer = new TestingSerializer();
- DataStore<Byte> byteStore = DataStoreFactory.INSTANCE.create(
- testingSerializer,
- null,
- new ArrayList<>(),
- CoroutineScopeKt.CoroutineScope(Dispatchers.getIO()),
- () -> newFile);
+ RxDataStore<Byte> byteStore =
+ new RxDataStoreBuilder<Byte>(() -> newFile, testingSerializer).build();
- TestSubscriber<Byte> testSubscriber = RxDataStore.data(byteStore).test();
+ TestSubscriber<Byte> testSubscriber = byteStore.data().test();
testingSerializer.setFailingWrite(true);
- Single<Byte> incrementByte = RxDataStore.updateDataAsync(byteStore,
- RxDataStoreTest::incrementByte);
+ Single<Byte> incrementByte = byteStore.updateDataAsync(RxDataStoreTest::incrementByte);
incrementByte.cache().test().await().assertError(IOException.class);
testSubscriber.awaitCount(1).assertNoErrors().assertValues((byte) 0);
testingSerializer.setFailingWrite(false);
- Single<Byte> incrementByte2 = RxDataStore.updateDataAsync(byteStore,
- RxDataStoreTest::incrementByte);
+ Single<Byte> incrementByte2 = byteStore.updateDataAsync(RxDataStoreTest::incrementByte);
assertThat(incrementByte2.blockingGet()).isEqualTo((byte) 1);
testSubscriber.awaitCount(2).assertValues((byte) 0, (byte) 1);
}
-}
+
+ @Test
+ public void openingSameDataStoreTwice_throwsException() throws IOException {
+ File newFile = tempFolder.newFile();
+ TestingSerializer testingSerializer = new TestingSerializer();
+
+ RxDataStore<Byte> byteRxDataStore = new RxDataStoreBuilder<Byte>(() -> newFile,
+ testingSerializer).build();
+
+ assertThat(byteRxDataStore.data().blockingFirst()).isEqualTo((byte) 0);
+
+ RxDataStore<Byte> byteRxDataStore2 = new RxDataStoreBuilder<Byte>(() -> newFile,
+ testingSerializer).build();
+
+ assertThrows(IllegalStateException.class, () -> byteRxDataStore2.data().blockingFirst());
+ }
+
+ @Test
+ public void canCloseDataStore() throws Exception {
+ File newFile = tempFolder.newFile();
+ TestingSerializer testingSerializer = new TestingSerializer();
+
+ RxDataStore<Byte> byteRxDataStore = new RxDataStoreBuilder<Byte>(() -> newFile,
+ testingSerializer).build();
+
+ assertThat(byteRxDataStore.data().blockingFirst()).isEqualTo((byte) 0);
+
+ byteRxDataStore.dispose();
+ byteRxDataStore.shutdownComplete().blockingAwait();
+
+
+ TestSubscriber<Byte> testSubscriber = byteRxDataStore.data().test();
+
+ assertThat(testSubscriber.await(5, TimeUnit.SECONDS)).isTrue();
+
+ // Note(rohitsat): this is different from coroutines bc asFlowable converts the
+ // CancellationException to onComplete
+ testSubscriber.assertNoErrors()
+ .assertComplete()
+ .assertValueCount(0);
+
+
+ // NOTE(rohitsat): this is different from data()
+ byteRxDataStore.updateDataAsync(Single::just).test().await().assertError(
+ CancellationException.class);
+
+ RxDataStore<Byte> byteRxDataStore2 = new RxDataStoreBuilder<Byte>(() -> newFile,
+ testingSerializer).build();
+
+ // Should not throw
+ assertThat(byteRxDataStore2.data().blockingFirst()).isEqualTo((byte) 0);
+ }
+}
\ No newline at end of file
diff --git a/datastore/datastore/src/androidTest/java/androidx/datastore/DataStoreFactoryTest.kt b/datastore/datastore/src/androidTest/java/androidx/datastore/DataStoreFactoryTest.kt
index a5d92eb..4f0154df 100644
--- a/datastore/datastore/src/androidTest/java/androidx/datastore/DataStoreFactoryTest.kt
+++ b/datastore/datastore/src/androidTest/java/androidx/datastore/DataStoreFactoryTest.kt
@@ -20,6 +20,7 @@
import androidx.datastore.core.DataStoreFactory
import androidx.test.core.app.ApplicationProvider
import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.coroutineScope
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.test.TestCoroutineScope
import kotlinx.coroutines.test.runBlockingTest
@@ -51,29 +52,34 @@
@Test
fun testCreateWithContextAndName() = runBlockingTest {
val byte = 1
-
- var store = context.createDataStore(
- serializer = TestingSerializer(),
- fileName = "my_settings.byte",
- scope = dataStoreScope
- )
- store.updateData { 1 }
+ coroutineScope {
+ val store = context.createDataStore(
+ serializer = TestingSerializer(),
+ fileName = "my_settings.byte",
+ scope = this
+ )
+ store.updateData { 1 }
+ }
// Create it again and confirm it's still there
- store = context.createDataStore(
- serializer = TestingSerializer(),
- fileName = "my_settings.byte",
- scope = dataStoreScope
- )
- assertThat(store.data.first()).isEqualTo(byte)
-
- // Check that the file name is context.filesDir + fileName
- store = DataStoreFactory.create(
- serializer = TestingSerializer(),
- scope = dataStoreScope
- ) {
- File(context.filesDir, "datastore/my_settings.byte")
+ coroutineScope {
+ val store = context.createDataStore(
+ serializer = TestingSerializer(),
+ fileName = "my_settings.byte",
+ scope = this
+ )
+ assertThat(store.data.first()).isEqualTo(byte)
}
- assertThat(store.data.first()).isEqualTo(byte)
+
+ coroutineScope {
+ // Check that the file name is context.filesDir + fileName
+ val store = DataStoreFactory.create(
+ serializer = TestingSerializer(),
+ scope = dataStoreScope
+ ) {
+ File(context.filesDir, "datastore/my_settings.byte")
+ }
+ assertThat(store.data.first()).isEqualTo(byte)
+ }
}
}
\ No newline at end of file
diff --git a/docs/macrobenchmark.md b/docs/macrobenchmark.md
new file mode 100644
index 0000000..140034c
--- /dev/null
+++ b/docs/macrobenchmark.md
@@ -0,0 +1,412 @@
+# Jetpack Macrobenchmark Guide
+
+This documentation for the Jetpack Macrobenchmark library will move to
+[developer.android.com](https://developer.android.com) when the library is ready
+for public release.
+
+[TOC]
+
+## Jetpack Macrobenchmark
+
+Jetpack Macrobenchmark allows you to write startup and scrolling performance
+tests directly against your release app on devices running Android 10 (API 29)
+or greater. This is provided through the MacrobenchmarkRule JUnit4 rule api:
+
+```kotlin
+@get:Rule
+val benchmarkRule = MacrobenchmarkRule()
+
+@Test
+fun startup() = benchmarkRule.measureRepeated(
+ packageName = "mypackage.myapp",
+ metrics = listOf(StartupTimingMetric()),
+ iterations = 5,
+ startupMode = StartupMode.COLD
+) { // this = MacrobenchmarkScope
+ pressHome()
+ val intent = Intent()
+ intent.setPackage("mypackage.myapp")
+ intent.setAction("mypackage.myapp.myaction")
+ startActivityAndWait(intent)
+}
+```
+
+Metrics are displayed directly in Android Studio, and also output for
+[CI usage in a JSON file](#ci-results).
+
+![Sample Studio Results](macrobenchmark_images/studio_results.png "Sample Studio results")
+
+### Macrobenchmark vs Benchmark
+
+While the existing [Jetpack Benchmark](http://d.android.com/benchmark) library
+allows you to benchmark app code directly in a loop, it's
+[designed around](https://developer.android.com/studio/profile/benchmark#what-to-benchmark)
+measuring CPU work which is run frequently, and which will hit best-case
+performance (warmed up JIT, disk accesses cached).
+
+Macrobenchmark instead measures end-user experience by actually starting up, and
+scrolling your app, providing direct control over the performance environment
+you're testing (e.g. you can specify cold, first-time install startup
+performance).
+
+
+
+<!-- Below table doesn't work on android.googlesource.com, using image as workaround
+<table>
+ <tr>
+ <td><strong>Macrobenchmark</strong> (new!)</td>
+ <td><strong>Benchmark</strong> (existing!)</td>
+ </tr>
+ <tr>
+ <td>Measure high-level entry points (Activity launch / Scrolling a list)</td>
+ <td>Measure individual functions</td>
+ </tr>
+ <tr>
+ <td>Out-of-process test of full app</td>
+ <td>In-process test of CPU work</td>
+ </tr>
+ <tr>
+ <td>Slow iteration speed (Often several minutes)</td>
+ <td>Fast iteration speed (Often less than 10 seconds)</td>
+ </tr>
+ <tr>
+ <td>Results come with profiling traces</td>
+ <td>Optional method sampling/tracing</td>
+ </tr>
+ <tr>
+ <td>Min API 29</td>
+ <td>Min API 14</td>
+ </tr>
+</table>
+-->
+
+![Comparison Table](macrobenchmark_images/comparison_table.png "Comparison of Benchmark libraries")
+
+## Module Setup
+
+Macrobenchmark currently is only available as a snapshot, so
+[add the Androidx snapshot maven artifact to your top level `build.gradle` file](https://androidx.dev/).
+
+Macrobenchmarks are defined in a separate `com.android.library` module. Add a
+new library module to your project, and add a dependency on macrobenchmark:
+
+```groovy
+dependencies {
+ def benchmark_version = '1.1.0-SNAPSHOT'
+ androidTestImplementation "androidx.benchmark:benchmark-macro-junit4:$benchmark_version"
+}
+```
+
+Unlike microbenchmarks written with `BenchmarkRule`, no gradle plugin is
+required.
+
+Now define a new test class in that module, filling in your app's package name:
+
+```kotlin
+@RunWith(AndroidJUnit4::class)
+class SampleStartupBenchmark {
+ @get:Rule
+ val benchmarkRule = MacrobenchmarkRule()
+
+ @Test
+ fun startup() = benchmarkRule.measureRepeated(
+ packageName = "mypackage.myapp",
+ metrics = listOf(StartupTimingMetric()),
+ iterations = 5,
+ startupMode = StartupMode.COLD
+ ) { // this = MacrobenchmarkScope
+ pressHome()
+ val intent = Intent()
+ intent.setPackage("mypackage.myapp")
+ intent.setAction("mypackage.myapp.myaction")
+ startActivityAndWait(intent)
+ }
+}
+
+```
+
+## App Setup
+
+To macrobenchmark an app (called the *target* of the macrobenchmark), that app
+should be configured as close to user experience as possible - non-debuggable,
+preferabbly with minification on (which is beneficial for performance). This is
+typically done by installing the `release` variant of the target apk.
+
+It will also need to be profileable, to enable reading detailed trace
+information. This is enabled in the `<application>` tag of the app's
+AndroidManifest.xml:
+
+```xml
+ <application ... >
+ <!-- Profileable to enable macrobenchmark profiling -->
+ <!--suppress AndroidElementNotAllowed -->
+ <profileable android:shell="true"/>
+ ...
+ </application>
+```
+
+If the app is misconfigured (debuggable, or non-profileable), macrobenchmark
+will throw an error, rather than reporting an incorrect or incomplete
+measurement.
+
+Errors are also thrown when attempting to measure an emulator, or on a
+low-battery device (as this may compromise core availability and clock speed).
+
+## Run the Macrobenchmark
+
+Run the test from within Studio to measure the performance of your app on your
+device. Note that you must run the test on a physical device, and not an
+emulator, as emulators do not produce performance numbers representative of
+end-user experience.
+
+See the [Benchmarking in CI](#ci) section for information on how to run and
+monitor benchmarks in continuous integration.
+
+## Customizing your Macrobenchmark
+
+#### Compilation Mode
+
+Macrobenchmarks can specify a
+[CompilationMode](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:benchmark/macro/src/main/java/androidx/benchmark/macro/CompilationMode.kt),
+which defines how the app should be compiled, just before the test is run.
+
+By default, benchmarks are run with `SpeedProfile`, which runs a few iterations
+of your benchmark before measurement, using that profiling data for
+profile-driven compilation. This can simulate performance of UI code that has
+launched and run before, or which has been
+[pre-compiled by the store installing it](https://android-developers.googleblog.com/2019/04/improving-app-performance-with-art.html),
+
+To simulate worst-case, just-after-install performance without pre-compilation,
+pass `None`.
+
+This functionality is built on
+[ART compilation commands](https://source.android.com/devices/tech/dalvik/jit-compiler#force-compilation-of-a-specific-package).
+Each benchmark will clear profile data before it starts, to ensure
+non-interference between benchmarks.
+
+#### Startup
+
+To perform an activity start, you can pass a pre-defined startup mode
+([one of COLD, WARM, HOT](https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:benchmark/macro/src/main/java/androidx/benchmark/macro/StartupMode.kt))
+to the `measureRepeated` function. This parameter will change how the activity
+will be launched, and the process state at the start of the test.
+
+To learn more about the types of startup, see the
+[Android Vitals startup documentation](https://developer.android.com/topic/performance/vitals/launch-time#internals).
+
+#### Scrolling and Animation
+
+Unlike most Android UI tests, the macrobenchmarks tests run in a separate
+process from the app itself. This is necessary to enable things like killing the
+app process, and compiling it via shell commands.
+
+For this reason, you cannot use APIs like `ActivityScenario` which require the
+test APK to classload from the instrumentation target. Our samples use
+[UI Automator](https://developer.android.com/training/testing/ui-automator) to
+drive the app process (e.g. for scrolling).
+
+Instead, you can drive your app via the
+[UI Automator library](https://developer.android.com/training/testing/ui-automator)
+(or any other means of out-of-process automation). The following example finds a
+RecyclerView via resource id, and scrolls down several times:
+
+```kotlin
+@Test
+fun measureScroll() {
+ benchmarkRule.measureRepeated(
+ packageName = "mypackage.myapp",
+ metrics = listOf(FrameTimingMetric()),
+ compilationMode = compilationMode,
+ iterations = 5,
+ setupBlock = {
+ // before starting to measure, navigate to the UI to be measured
+ val intent = Intent()
+ intent.action = ACTION
+ startActivityAndWait(intent)
+ }
+ ) {
+ val recycler = device.findObject(By.res("mypackage.myapp", "recycler_id"))
+ // Set gesture margin to avoid triggering gesture nav
+ // with input events from automation.
+ recycler.setGestureMargin(device.displayWidth / 5)
+
+ // Scroll down several times
+ for (i in 1..10) {
+ recycler.scroll(Direction.DOWN, 2f)
+ device.waitForIdle()
+ }
+ }
+}
+```
+
+As the test specifies a `FrameTimingMetric`, the timing of frames will be
+recorded and reported as a high level summary of frame timing distribution -
+50th, 90th, 95th, and 99th percentile.
+
+Your benchmark doesn't have to scroll UI, it could for example run an animation.
+It also doesn't need to use UI automator specifically - as long as frames are
+being produced by the View system (which includes frames produced by Compose),
+performance metrics will be collected.
+
+## Inspecting a trace
+
+Each measured iteration captures a separate System trace. These result traces
+can be opened with
+[Studio](https://developer.android.com/studio/profile/cpu-profiler#system-trace)
+(via File > Open) or [ui.perfetto.dev](https://ui.perfetto.dev) (via Open trace
+file).
+
+![Studio Trace](macrobenchmark_images/studio_trace.png "Studio trace UI")
+
+NOTE: Android Studio does not yet support automatically pulling trace files off
+of the device, this step must be performed manually for now.
+
+Currently, when running tests from Studio, you must manually pull profiling
+traces to inspect them after a benchmark run, e.g.:
+
+```shell
+# the following command will pull all files ending in .trace
+adb shell 'ls /storage/emulated/0/Download/*.trace' \
+ | tr -d '\r' | xargs -n1 adb pull
+```
+
+If you invoke the tests instead via gradle command line (e.g. `./gradlew
+macrobenchmark:connectedCheck`), these files are pulled automatically to a test
+output directory:
+
+```
+build/outputs/connected_android_test_additional_output/debugAndroidTest/connected/<device-name>/<module-name>-benchmarkData.json
+```
+
+For copying files after command-line benchmark invocation through gradle to
+work, you may need to add the following to your `gradle.properties` file:
+`android.enableAdditionalTestOutput=true`
+
+## Measuring changes in your app
+
+NOTE: Android Studio does not yet support depending on an app module from a
+macrobenchmark, this step will not be necessary in a future version.
+
+**Each time** you want app changes to be reflected in your benchmark
+measurements, you must manually update/reinstall the release version of the
+target app, for example:
+
+```shell
+# Can alternately do this in Studio, via Gradle pane
+# on the right, app > Tasks > install > installRelease
+./gradlew :myapp:installRelease
+```
+
+This can also be done in studio via the Gradle pane: `myAppModule > Tasks >
+install > installRelease`
+
+You can avoid the need for this for gradle command line runs by adding the
+following to the end of your macrobenchmark module's `build.gradle`
+
+```
+// Define a task dependency so the app is installed before we run macro benchmarks.
+tasks.getByPath(':macrobenchmark-module:connectedCheck')
+ .dependsOn(
+ tasks.getByPath(
+ ':myapp:installRelease'
+ )
+ )
+```
+
+## Benchmarking in CI {#ci}
+
+It's common to run test in CI without Gradle, or locally if you're using a
+different build system. This section explains how to configure macrobenchmark
+for CI usage at runtime.
+
+### Result Files - JSON and Traces {#ci-results}
+
+Macrobenchmark outputs a JSON file, and multiple trace files - one per measured
+iteration of each `MacrobenchmarkRule.measureRepeated` loop.
+
+You can define where these files are written by passing in the following
+instrumentation argument at runtime:
+
+```
+-e additionalTestOutputDir "device_path_you_can_write_to"
+```
+
+Note that for simplicity you can specify a path on `/sdcard/`, but you will need
+to
+[opt-out](https://developer.android.com/training/data-storage/use-cases#opt-out-scoped-storage)
+of scoped storage by setting `requestLegacyExternalStorage` to `true` in your
+**macrobenchmark** module:
+
+```xml
+<manifest ... >
+ <application android:requestLegacyExternalStorage="true" ... >
+ ...
+ </application>
+</manifest>
+```
+
+NOTE: The file extension of these trace files is currently `.trace`, but will
+likely change in the future to clarify that these are perfetto traces.
+
+### JSON Sample
+
+Sample JSON output for a single startup benchmark:
+
+```json
+{
+ "context": {
+ "build": {
+ "device": "walleye",
+ "fingerprint": "google/walleye/walleye:10/QQ3A.200805.001/6578210:userdebug/dev-keys",
+ "model": "Pixel 2",
+ "version": {
+ "sdk": 29
+ }
+ },
+ "cpuCoreCount": 8,
+ "cpuLocked": true,
+ "cpuMaxFreqHz": 2457600000,
+ "memTotalBytes": 3834605568,
+ "sustainedPerformanceModeEnabled": false
+ },
+ "benchmarks": [
+ {
+ "name": "startup",
+ "params": {},
+ "className": "androidx.benchmark.integration.macrobenchmark.SampleStartupBenchmark",
+ "totalRunTimeNs": 77969052767,
+ "metrics": {
+ "startupMs": {
+ "minimum": 228,
+ "maximum": 283,
+ "median": 242,
+ "runs": [
+ 238,
+ 283,
+ 256,
+ 228,
+ 242
+ ]
+ }
+ },
+ "warmupIterations": 3,
+ "repeatIterations": 5,
+ "thermalThrottleSleepSeconds": 0
+ }
+ ]
+}
+```
+
+## Additional Resources
+
+[A sample project is available](https://github.com/android/performance-samples/tree/macrobenchmark/MacrobenchmarkSample)
+as part of the android/performance-samples repository on GitHub, in the
+macrobenchmark branch.
+
+For guidance in how to detect performance regressions, see the blogpost
+[Fighting Regressions with Benchmarks in CI](https://medium.com/androiddevelopers/fighting-regressions-with-benchmarks-in-ci-6ea9a14b5c71).
+
+## Feedback
+
+To report issues or submit feature requests for Jetpack Macrobenchmark, see the
+[public issue tracker](https://issuetracker.google.com/issues/new?component=975669&template=1519452).
diff --git a/docs/macrobenchmark_images/comparison_table.png b/docs/macrobenchmark_images/comparison_table.png
new file mode 100644
index 0000000..f2c20c2
--- /dev/null
+++ b/docs/macrobenchmark_images/comparison_table.png
Binary files differ
diff --git a/docs/macrobenchmark_images/perfetto_trace.png b/docs/macrobenchmark_images/perfetto_trace.png
new file mode 100644
index 0000000..8e98199
--- /dev/null
+++ b/docs/macrobenchmark_images/perfetto_trace.png
Binary files differ
diff --git a/docs/macrobenchmark_images/studio_results.png b/docs/macrobenchmark_images/studio_results.png
new file mode 100644
index 0000000..cf1d000
--- /dev/null
+++ b/docs/macrobenchmark_images/studio_results.png
Binary files differ
diff --git a/docs/macrobenchmark_images/studio_trace.png b/docs/macrobenchmark_images/studio_trace.png
new file mode 100644
index 0000000..24db39c
--- /dev/null
+++ b/docs/macrobenchmark_images/studio_trace.png
Binary files differ
diff --git a/lint-checks/integration-tests/build.gradle b/lint-checks/integration-tests/build.gradle
index e9737b0..d9ad525 100644
--- a/lint-checks/integration-tests/build.gradle
+++ b/lint-checks/integration-tests/build.gradle
@@ -92,6 +92,7 @@
task.expectedFile = project.file("expected-lint-results.xml")
EnableCachingKt.cacheEvenIfNoOutputs(task)
dependsOn(normalizeLintOutput)
+ task.enabled = false
}
BuildOnServerKt.addToBuildOnServer(project, validateLint)
diff --git a/wear/wear-complications-data/api/current.txt b/wear/wear-complications-data/api/current.txt
index 6029b2e..0315e5e 100644
--- a/wear/wear-complications-data/api/current.txt
+++ b/wear/wear-complications-data/api/current.txt
@@ -147,12 +147,6 @@
property public final java.util.Map<androidx.wear.complications.data.ComplicationType,android.graphics.RectF> perComplicationTypeBounds;
}
- public final class ComplicationHelperActivity extends android.app.Activity implements androidx.core.app.ActivityCompat.OnRequestPermissionsResultCallback {
- ctor public ComplicationHelperActivity();
- method public static android.content.Intent createPermissionRequestHelperIntent(android.content.Context, android.content.ComponentName);
- method public static android.content.Intent createProviderChooserHelperIntent(android.content.Context, android.content.ComponentName, int, java.util.Collection<androidx.wear.complications.data.ComplicationType!>);
- }
-
public final class DefaultComplicationProviderPolicy {
ctor public DefaultComplicationProviderPolicy();
ctor public DefaultComplicationProviderPolicy(int systemProvider);
@@ -170,8 +164,8 @@
public final class ProviderInfoRetriever implements java.lang.AutoCloseable {
ctor public ProviderInfoRetriever(android.content.Context context);
method public void close();
- method @RequiresApi(android.os.Build.VERSION_CODES.R) public suspend Object? requestPreviewComplicationData(android.content.ComponentName providerComponent, androidx.wear.complications.data.ComplicationType complicationType, kotlin.coroutines.Continuation<? super androidx.wear.complications.data.ComplicationData> p);
- method public suspend Object? retrieveProviderInfo(android.content.ComponentName watchFaceComponent, int[] watchFaceComplicationIds, kotlin.coroutines.Continuation<? super androidx.wear.complications.ProviderInfoRetriever.ProviderInfo[]> p);
+ method @RequiresApi(android.os.Build.VERSION_CODES.R) @kotlin.jvm.Throws(exceptionClasses=ServiceDisconnectedException::class) public suspend Object? requestPreviewComplicationData(android.content.ComponentName providerComponent, androidx.wear.complications.data.ComplicationType complicationType, kotlin.coroutines.Continuation<? super androidx.wear.complications.data.ComplicationData> p) throws androidx.wear.complications.ProviderInfoRetriever.ServiceDisconnectedException;
+ method @kotlin.jvm.Throws(exceptionClasses=ServiceDisconnectedException::class) public suspend Object? retrieveProviderInfo(android.content.ComponentName watchFaceComponent, int[] watchFaceComplicationIds, kotlin.coroutines.Continuation<? super androidx.wear.complications.ProviderInfoRetriever.ProviderInfo[]> p) throws androidx.wear.complications.ProviderInfoRetriever.ServiceDisconnectedException;
}
public static final class ProviderInfoRetriever.ProviderInfo {
@@ -181,6 +175,10 @@
property public final int watchFaceComplicationId;
}
+ public static final class ProviderInfoRetriever.ServiceDisconnectedException extends java.lang.Exception {
+ ctor public ProviderInfoRetriever.ServiceDisconnectedException();
+ }
+
public class SystemProviders {
field public static final int APP_SHORTCUT = 6; // 0x6
field public static final int DATE = 2; // 0x2
@@ -217,17 +215,7 @@
method public long getNextChangeTime(long fromDateTimeMillis);
method public CharSequence getTextAt(android.content.res.Resources resources, long dateTimeMillis);
method public boolean isAlwaysEmpty();
- method public default static androidx.wear.complications.data.ComplicationText plain(CharSequence text);
method public boolean returnsSameText(long firstDateTimeMillis, long secondDateTimeMillis);
- method public default static androidx.wear.complications.data.TimeDifferenceComplicationText.Builder timeDifferenceBuilder(androidx.wear.complications.data.TimeDifferenceStyle style, androidx.wear.complications.data.TimeReference reference);
- method public default static androidx.wear.complications.data.TimeFormatComplicationText.Builder timeFormatBuilder(String format);
- field public static final androidx.wear.complications.data.ComplicationText.Companion Companion;
- }
-
- public static final class ComplicationText.Companion {
- method public androidx.wear.complications.data.ComplicationText plain(CharSequence text);
- method public androidx.wear.complications.data.TimeDifferenceComplicationText.Builder timeDifferenceBuilder(androidx.wear.complications.data.TimeDifferenceStyle style, androidx.wear.complications.data.TimeReference reference);
- method public androidx.wear.complications.data.TimeFormatComplicationText.Builder timeFormatBuilder(String format);
}
public enum ComplicationType {
@@ -371,6 +359,14 @@
method public androidx.wear.complications.data.PhotoImageComplicationData.Builder setValidTimeRange(androidx.wear.complications.data.TimeRange? validTimeRange);
}
+ public final class PlainComplicationText implements androidx.wear.complications.data.ComplicationText {
+ }
+
+ public static final class PlainComplicationText.Builder {
+ ctor public PlainComplicationText.Builder(CharSequence text);
+ method public androidx.wear.complications.data.PlainComplicationText build();
+ }
+
public final class RangedValueComplicationData extends androidx.wear.complications.data.ComplicationData {
method public androidx.wear.complications.data.ComplicationText? getContentDescription();
method public float getMax();
diff --git a/wear/wear-complications-data/api/public_plus_experimental_current.txt b/wear/wear-complications-data/api/public_plus_experimental_current.txt
index 985b6cb..9274155 100644
--- a/wear/wear-complications-data/api/public_plus_experimental_current.txt
+++ b/wear/wear-complications-data/api/public_plus_experimental_current.txt
@@ -147,12 +147,6 @@
property public final java.util.Map<androidx.wear.complications.data.ComplicationType,android.graphics.RectF> perComplicationTypeBounds;
}
- public final class ComplicationHelperActivity extends android.app.Activity implements androidx.core.app.ActivityCompat.OnRequestPermissionsResultCallback {
- ctor public ComplicationHelperActivity();
- method public static android.content.Intent createPermissionRequestHelperIntent(android.content.Context, android.content.ComponentName);
- method public static android.content.Intent createProviderChooserHelperIntent(android.content.Context, android.content.ComponentName, int, java.util.Collection<androidx.wear.complications.data.ComplicationType!>);
- }
-
public final class DefaultComplicationProviderPolicy {
ctor public DefaultComplicationProviderPolicy();
ctor public DefaultComplicationProviderPolicy(int systemProvider);
@@ -170,8 +164,8 @@
public final class ProviderInfoRetriever implements java.lang.AutoCloseable {
ctor public ProviderInfoRetriever(android.content.Context context);
method public void close();
- method @RequiresApi(android.os.Build.VERSION_CODES.R) public suspend Object? requestPreviewComplicationData(android.content.ComponentName providerComponent, androidx.wear.complications.data.ComplicationType complicationType, kotlin.coroutines.Continuation<? super androidx.wear.complications.data.ComplicationData> p);
- method public suspend Object? retrieveProviderInfo(android.content.ComponentName watchFaceComponent, int[] watchFaceComplicationIds, kotlin.coroutines.Continuation<? super androidx.wear.complications.ProviderInfoRetriever.ProviderInfo[]> p);
+ method @RequiresApi(android.os.Build.VERSION_CODES.R) @kotlin.jvm.Throws(exceptionClasses=ServiceDisconnectedException::class) public suspend Object? requestPreviewComplicationData(android.content.ComponentName providerComponent, androidx.wear.complications.data.ComplicationType complicationType, kotlin.coroutines.Continuation<? super androidx.wear.complications.data.ComplicationData> p) throws androidx.wear.complications.ProviderInfoRetriever.ServiceDisconnectedException;
+ method @kotlin.jvm.Throws(exceptionClasses=ServiceDisconnectedException::class) public suspend Object? retrieveProviderInfo(android.content.ComponentName watchFaceComponent, int[] watchFaceComplicationIds, kotlin.coroutines.Continuation<? super androidx.wear.complications.ProviderInfoRetriever.ProviderInfo[]> p) throws androidx.wear.complications.ProviderInfoRetriever.ServiceDisconnectedException;
}
public static final class ProviderInfoRetriever.ProviderInfo {
@@ -181,6 +175,10 @@
property public final int watchFaceComplicationId;
}
+ public static final class ProviderInfoRetriever.ServiceDisconnectedException extends java.lang.Exception {
+ ctor public ProviderInfoRetriever.ServiceDisconnectedException();
+ }
+
public class SystemProviders {
field public static final int APP_SHORTCUT = 6; // 0x6
field public static final int DATE = 2; // 0x2
@@ -217,17 +215,7 @@
method public long getNextChangeTime(long fromDateTimeMillis);
method public CharSequence getTextAt(android.content.res.Resources resources, long dateTimeMillis);
method public boolean isAlwaysEmpty();
- method public default static androidx.wear.complications.data.ComplicationText plain(CharSequence text);
method public boolean returnsSameText(long firstDateTimeMillis, long secondDateTimeMillis);
- method public default static androidx.wear.complications.data.TimeDifferenceComplicationText.Builder timeDifferenceBuilder(androidx.wear.complications.data.TimeDifferenceStyle style, androidx.wear.complications.data.TimeReference reference);
- method public default static androidx.wear.complications.data.TimeFormatComplicationText.Builder timeFormatBuilder(String format);
- field public static final androidx.wear.complications.data.ComplicationText.Companion Companion;
- }
-
- public static final class ComplicationText.Companion {
- method public androidx.wear.complications.data.ComplicationText plain(CharSequence text);
- method public androidx.wear.complications.data.TimeDifferenceComplicationText.Builder timeDifferenceBuilder(androidx.wear.complications.data.TimeDifferenceStyle style, androidx.wear.complications.data.TimeReference reference);
- method public androidx.wear.complications.data.TimeFormatComplicationText.Builder timeFormatBuilder(String format);
}
public enum ComplicationType {
@@ -379,6 +367,14 @@
method public androidx.wear.complications.data.PhotoImageComplicationData.Builder setValidTimeRange(androidx.wear.complications.data.TimeRange? validTimeRange);
}
+ public final class PlainComplicationText implements androidx.wear.complications.data.ComplicationText {
+ }
+
+ public static final class PlainComplicationText.Builder {
+ ctor public PlainComplicationText.Builder(CharSequence text);
+ method public androidx.wear.complications.data.PlainComplicationText build();
+ }
+
public final class RangedValueComplicationData extends androidx.wear.complications.data.ComplicationData {
method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY) public android.support.wearable.complications.ComplicationData asWireComplicationData();
method public androidx.wear.complications.data.ComplicationText? getContentDescription();
diff --git a/wear/wear-complications-data/api/restricted_current.txt b/wear/wear-complications-data/api/restricted_current.txt
index 1893495..ace3c56 100644
--- a/wear/wear-complications-data/api/restricted_current.txt
+++ b/wear/wear-complications-data/api/restricted_current.txt
@@ -165,7 +165,7 @@
property public final java.util.Map<androidx.wear.complications.data.ComplicationType,android.graphics.RectF> perComplicationTypeBounds;
}
- public final class ComplicationHelperActivity extends android.app.Activity implements androidx.core.app.ActivityCompat.OnRequestPermissionsResultCallback {
+ @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public final class ComplicationHelperActivity extends android.app.Activity implements androidx.core.app.ActivityCompat.OnRequestPermissionsResultCallback {
ctor public ComplicationHelperActivity();
method public static android.content.Intent createPermissionRequestHelperIntent(android.content.Context, android.content.ComponentName);
method public static android.content.Intent createProviderChooserHelperIntent(android.content.Context, android.content.ComponentName, int, java.util.Collection<androidx.wear.complications.data.ComplicationType!>);
@@ -204,8 +204,8 @@
public final class ProviderInfoRetriever implements java.lang.AutoCloseable {
ctor public ProviderInfoRetriever(android.content.Context context);
method public void close();
- method @RequiresApi(android.os.Build.VERSION_CODES.R) public suspend Object? requestPreviewComplicationData(android.content.ComponentName providerComponent, androidx.wear.complications.data.ComplicationType complicationType, kotlin.coroutines.Continuation<? super androidx.wear.complications.data.ComplicationData> p);
- method public suspend Object? retrieveProviderInfo(android.content.ComponentName watchFaceComponent, int[] watchFaceComplicationIds, kotlin.coroutines.Continuation<? super androidx.wear.complications.ProviderInfoRetriever.ProviderInfo[]> p);
+ method @RequiresApi(android.os.Build.VERSION_CODES.R) @kotlin.jvm.Throws(exceptionClasses=ServiceDisconnectedException::class) public suspend Object? requestPreviewComplicationData(android.content.ComponentName providerComponent, androidx.wear.complications.data.ComplicationType complicationType, kotlin.coroutines.Continuation<? super androidx.wear.complications.data.ComplicationData> p) throws androidx.wear.complications.ProviderInfoRetriever.ServiceDisconnectedException;
+ method @kotlin.jvm.Throws(exceptionClasses=ServiceDisconnectedException::class) public suspend Object? retrieveProviderInfo(android.content.ComponentName watchFaceComponent, int[] watchFaceComplicationIds, kotlin.coroutines.Continuation<? super androidx.wear.complications.ProviderInfoRetriever.ProviderInfo[]> p) throws androidx.wear.complications.ProviderInfoRetriever.ServiceDisconnectedException;
}
public static final class ProviderInfoRetriever.ProviderInfo {
@@ -215,6 +215,10 @@
property public final int watchFaceComplicationId;
}
+ public static final class ProviderInfoRetriever.ServiceDisconnectedException extends java.lang.Exception {
+ ctor public ProviderInfoRetriever.ServiceDisconnectedException();
+ }
+
@RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public class ProviderUpdateRequesterConstants {
field public static final String EXTRA_PENDING_INTENT = "android.support.wearable.complications.EXTRA_PENDING_INTENT";
}
@@ -259,17 +263,7 @@
method public long getNextChangeTime(long fromDateTimeMillis);
method public CharSequence getTextAt(android.content.res.Resources resources, long dateTimeMillis);
method public boolean isAlwaysEmpty();
- method public default static androidx.wear.complications.data.ComplicationText plain(CharSequence text);
method public boolean returnsSameText(long firstDateTimeMillis, long secondDateTimeMillis);
- method public default static androidx.wear.complications.data.TimeDifferenceComplicationText.Builder timeDifferenceBuilder(androidx.wear.complications.data.TimeDifferenceStyle style, androidx.wear.complications.data.TimeReference reference);
- method public default static androidx.wear.complications.data.TimeFormatComplicationText.Builder timeFormatBuilder(String format);
- field public static final androidx.wear.complications.data.ComplicationText.Companion Companion;
- }
-
- public static final class ComplicationText.Companion {
- method public androidx.wear.complications.data.ComplicationText plain(CharSequence text);
- method public androidx.wear.complications.data.TimeDifferenceComplicationText.Builder timeDifferenceBuilder(androidx.wear.complications.data.TimeDifferenceStyle style, androidx.wear.complications.data.TimeReference reference);
- method public androidx.wear.complications.data.TimeFormatComplicationText.Builder timeFormatBuilder(String format);
}
public enum ComplicationType {
@@ -430,6 +424,14 @@
method public androidx.wear.complications.data.PhotoImageComplicationData.Builder setValidTimeRange(androidx.wear.complications.data.TimeRange? validTimeRange);
}
+ public final class PlainComplicationText implements androidx.wear.complications.data.ComplicationText {
+ }
+
+ public static final class PlainComplicationText.Builder {
+ ctor public PlainComplicationText.Builder(CharSequence text);
+ method public androidx.wear.complications.data.PlainComplicationText build();
+ }
+
public final class RangedValueComplicationData extends androidx.wear.complications.data.ComplicationData {
method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY) public android.support.wearable.complications.ComplicationData asWireComplicationData();
method public androidx.wear.complications.data.ComplicationText? getContentDescription();
diff --git a/wear/wear-complications-data/src/main/java/android/support/wearable/complications/ComplicationData.java b/wear/wear-complications-data/src/main/java/android/support/wearable/complications/ComplicationData.java
index a76b4ab..37fb92c7 100644
--- a/wear/wear-complications-data/src/main/java/android/support/wearable/complications/ComplicationData.java
+++ b/wear/wear-complications-data/src/main/java/android/support/wearable/complications/ComplicationData.java
@@ -30,7 +30,6 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
-import androidx.wear.complications.ComplicationHelperActivity;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -198,8 +197,7 @@
* render this as they see fit.
*
* <p>It is recommended that, where possible, tapping on the complication when in this state
- * should trigger a permission request. A {@link ComplicationHelperActivity} may be used to make
- * this request and update all complications if permission is granted.
+ * should trigger a permission request.
*/
public static final int TYPE_NO_PERMISSION = 9;
diff --git a/wear/wear-complications-data/src/main/java/androidx/wear/complications/ComplicationHelperActivity.java b/wear/wear-complications-data/src/main/java/androidx/wear/complications/ComplicationHelperActivity.java
index eae34d6..727ae00 100644
--- a/wear/wear-complications-data/src/main/java/androidx/wear/complications/ComplicationHelperActivity.java
+++ b/wear/wear-complications-data/src/main/java/androidx/wear/complications/ComplicationHelperActivity.java
@@ -54,8 +54,10 @@
* <p>Or, to request the permission, for instance if {@link ComplicationData} of {@link
* ComplicationData#TYPE_NO_PERMISSION TYPE_NO_PERMISSION} has been received and tapped on, use
* {@link #createPermissionRequestHelperIntent}.
+ * @hide
*/
@TargetApi(Build.VERSION_CODES.N)
+@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
@SuppressWarnings("ForbiddenSuperClass")
public final class ComplicationHelperActivity extends Activity
implements ActivityCompat.OnRequestPermissionsResultCallback {
@@ -200,6 +202,8 @@
* <p>The package of the calling app must match the package of the watch face, or this will not
* work.
*
+ * <p>From android R onwards this API can only be called during an editing session.
+ *
* @param context context for the current app, that must contain a ComplicationHelperActivity
* @param watchFace the ComponentName of the WatchFaceService being configured.
* @param watchFaceComplicationId the watch face's id for the complication being configured.
diff --git a/wear/wear-complications-data/src/main/java/androidx/wear/complications/ProviderInfoRetriever.kt b/wear/wear-complications-data/src/main/java/androidx/wear/complications/ProviderInfoRetriever.kt
index 5211fcd..da3ce3a 100644
--- a/wear/wear-complications-data/src/main/java/androidx/wear/complications/ProviderInfoRetriever.kt
+++ b/wear/wear-complications-data/src/main/java/androidx/wear/complications/ProviderInfoRetriever.kt
@@ -32,6 +32,7 @@
import androidx.wear.complications.data.ComplicationType
import androidx.wear.complications.data.asApiComplicationData
import kotlinx.coroutines.CompletableDeferred
+import java.lang.Exception
/**
* Retrieves [ComplicationProviderInfo] for a watch face's complications.
@@ -65,6 +66,7 @@
@SuppressLint("SyntheticAccessor")
override fun onServiceDisconnected(name: ComponentName) {
+ deferredService.completeExceptionally(ServiceDisconnectedException())
}
}
@@ -81,6 +83,9 @@
context.bindService(intent, serviceConnection, Context.BIND_AUTO_CREATE)
}
+ /** Exception thrown if the service disconnects. */
+ public class ServiceDisconnectedException : Exception()
+
/**
* @hide
*/
@@ -103,7 +108,9 @@
* being requested
* @param watchFaceComplicationIds ids of the complications that info is being requested for
* @return The requested provider info. If the look up fails null will be returned
+ * @throws [ServiceDisconnectedException] if the service disconnected during the call.
*/
+ @Throws(ServiceDisconnectedException::class)
public suspend fun retrieveProviderInfo(
watchFaceComponent: ComponentName,
watchFaceComplicationIds: IntArray
@@ -122,7 +129,9 @@
* @param complicationType The requested [ComplicationType] for the preview data.
* @return The preview [ComplicationData] or `null` if the provider component doesn't exist, or
* if it doesn't support complicationType, or if the remote service doesn't support this API.
+ * @throws [ServiceDisconnectedException] if the service disconnected during the call.
*/
+ @Throws(ServiceDisconnectedException::class)
@RequiresApi(Build.VERSION_CODES.R)
public suspend fun requestPreviewComplicationData(
providerComponent: ComponentName,
@@ -133,6 +142,10 @@
return null
}
val result = CompletableDeferred<ComplicationData?>()
+ val deathObserver = IBinder.DeathRecipient {
+ result.completeExceptionally(ServiceDisconnectedException())
+ }
+ service.asBinder().linkToDeath(deathObserver, 0)
if (!service.requestPreviewComplicationData(
providerComponent,
complicationType.asWireComplicationType(),
@@ -140,11 +153,13 @@
override fun updateComplicationData(
data: android.support.wearable.complications.ComplicationData?
) {
+ service.asBinder().unlinkToDeath(deathObserver, 0)
result.complete(data?.asApiComplicationData())
}
}
)
) {
+ service.asBinder().unlinkToDeath(deathObserver, 0)
return null
}
return result.await()
diff --git a/wear/wear-complications-data/src/main/java/androidx/wear/complications/data/Text.kt b/wear/wear-complications-data/src/main/java/androidx/wear/complications/data/Text.kt
index cb6eedf..ea85f74 100644
--- a/wear/wear-complications-data/src/main/java/androidx/wear/complications/data/Text.kt
+++ b/wear/wear-complications-data/src/main/java/androidx/wear/complications/data/Text.kt
@@ -70,35 +70,20 @@
*/
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
public fun asWireComplicationText(): WireComplicationText
+}
- public companion object {
- /** Returns a [ComplicationText] that represent a plain [CharSequence]. */
- @JvmStatic
- public fun plain(text: CharSequence): ComplicationText =
- WireComplicationText.plainText(text).asApiComplicationText()
-
- /**
- * Returns a builder for a [ComplicationText] representing a time difference, which can
- * be either a count up or a count down.
- *
- * @param[style] the style of the time difference to be displayed.
- */
- @JvmStatic
- public fun timeDifferenceBuilder(
- style: TimeDifferenceStyle,
- reference: TimeReference
- ): TimeDifferenceComplicationText.Builder =
- TimeDifferenceComplicationText.Builder(style, reference)
-
- /**
- * Returns a builder for a [ComplicationText] representing the current time.
- *
- * @param[format] the format in which the time should be displayed. This should be a pattern
- * as used by [java.text.SimpleDateFormat].
- */
- @JvmStatic
- public fun timeFormatBuilder(format: String): TimeFormatComplicationText.Builder =
- TimeFormatComplicationText.Builder(format)
+/** A [ComplicationText] that contains plain text. */
+public class PlainComplicationText internal constructor(
+ delegate: WireComplicationText
+) : ComplicationText by DelegatingComplicationText(delegate) {
+ /**
+ * A builder for [PlainComplicationText].
+ *
+ * @param[text] the text to be displayed.
+ */
+ public class Builder(private var text: CharSequence) {
+ public fun build(): PlainComplicationText =
+ PlainComplicationText(WireComplicationText.plainText(text))
}
}
diff --git a/wear/wear-complications-data/src/test/java/androidx/wear/complications/ProviderInfoRetrieverTest.kt b/wear/wear-complications-data/src/test/java/androidx/wear/complications/ProviderInfoRetrieverTest.kt
index 7e06c63..d0da8608 100644
--- a/wear/wear-complications-data/src/test/java/androidx/wear/complications/ProviderInfoRetrieverTest.kt
+++ b/wear/wear-complications-data/src/test/java/androidx/wear/complications/ProviderInfoRetrieverTest.kt
@@ -18,13 +18,14 @@
import android.content.ComponentName
import android.content.Context
+import android.os.IBinder
import android.support.wearable.complications.IPreviewComplicationDataCallback
import android.support.wearable.complications.IProviderInfoService
import androidx.test.core.app.ApplicationProvider
import androidx.wear.complications.data.ComplicationData
-import androidx.wear.complications.data.ComplicationText.Companion.plain
import androidx.wear.complications.data.ComplicationType
import androidx.wear.complications.data.LongTextComplicationData
+import androidx.wear.complications.data.PlainComplicationText
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.runBlocking
import org.junit.Test
@@ -53,6 +54,7 @@
@RunWith(SharedRobolectricTestRunner::class)
public class ProviderInfoRetrieverTest {
private val mockService = Mockito.mock(IProviderInfoService::class.java)
+ private val mockBinder = Mockito.mock(IBinder::class.java)
private val providerInfoRetriever = ProviderInfoRetriever(mockService)
@Test
@@ -61,9 +63,10 @@
val component = ComponentName("provider.package", "provider.class")
val type = ComplicationType.LONG_TEXT
Mockito.`when`(mockService.apiVersion).thenReturn(1)
+ Mockito.`when`(mockService.asBinder()).thenReturn(mockBinder)
val testData: ComplicationData = LongTextComplicationData.Builder(
- plain("Test Text")
+ PlainComplicationText.Builder("Test Text").build()
).build()
doAnswer {
@@ -93,6 +96,7 @@
val component = ComponentName("provider.package", "provider.class")
val type = ComplicationType.LONG_TEXT
Mockito.`when`(mockService.apiVersion).thenReturn(1)
+ Mockito.`when`(mockService.asBinder()).thenReturn(mockBinder)
doAnswer {
val callback = it.arguments[2] as IPreviewComplicationDataCallback
@@ -115,6 +119,7 @@
val component = ComponentName("provider.package", "provider.class")
val type = ComplicationType.LONG_TEXT
Mockito.`when`(mockService.apiVersion).thenReturn(0)
+ Mockito.`when`(mockService.asBinder()).thenReturn(mockBinder)
assertThat(providerInfoRetriever.requestPreviewComplicationData(component, type))
.isNull()
@@ -127,6 +132,7 @@
val component = ComponentName("provider.package", "provider.class")
val type = ComplicationType.LONG_TEXT
Mockito.`when`(mockService.apiVersion).thenReturn(1)
+ Mockito.`when`(mockService.asBinder()).thenReturn(mockBinder)
doAnswer {
false
}.`when`(mockService).requestPreviewComplicationData(
diff --git a/wear/wear-complications-data/src/test/java/androidx/wear/complications/data/DataTest.kt b/wear/wear-complications-data/src/test/java/androidx/wear/complications/data/DataTest.kt
index b6e03e4..3336345 100644
--- a/wear/wear-complications-data/src/test/java/androidx/wear/complications/data/DataTest.kt
+++ b/wear/wear-complications-data/src/test/java/androidx/wear/complications/data/DataTest.kt
@@ -344,4 +344,4 @@
}
}
-private val String.complicationText get() = ComplicationText.plain(this)
+private val String.complicationText get() = PlainComplicationText.Builder(this).build()
diff --git a/wear/wear-complications-data/src/test/java/androidx/wear/complications/data/TextTest.kt b/wear/wear-complications-data/src/test/java/androidx/wear/complications/data/TextTest.kt
index fd3cce2..5308512 100644
--- a/wear/wear-complications-data/src/test/java/androidx/wear/complications/data/TextTest.kt
+++ b/wear/wear-complications-data/src/test/java/androidx/wear/complications/data/TextTest.kt
@@ -37,7 +37,7 @@
public class AsWireComplicationTextTest {
@Test
public fun plainText() {
- val text = ComplicationText.plain("abc")
+ val text = PlainComplicationText.Builder("abc").build()
ParcelableSubject.assertThat(text.asWireComplicationText())
.hasSameSerializationAs(WireComplicationText.plainText("abc"))
ParcelableSubject.assertThat(text.asWireComplicationText())
@@ -46,7 +46,7 @@
@Test
public fun timeDifferenceText() {
- val text = ComplicationText.timeDifferenceBuilder(
+ val text = TimeDifferenceComplicationText.Builder(
TimeDifferenceStyle.STOPWATCH,
TimeReference.starting(10000L)
)
@@ -69,7 +69,7 @@
@Test
public fun timeFormatText() {
- val text = ComplicationText.timeFormatBuilder("h:m")
+ val text = TimeFormatComplicationText.Builder("h:m")
.setText("^1 in London")
.setStyle(TimeFormatStyle.UPPER_CASE)
.setTimeZone(TimeZone.getTimeZone("Europe/London"))
diff --git a/wear/wear-complications-provider/samples/src/main/java/androidx/wear/complications/provider/samples/AsynchronousProviderService.kt b/wear/wear-complications-provider/samples/src/main/java/androidx/wear/complications/provider/samples/AsynchronousProviderService.kt
index d102897..3e92082 100644
--- a/wear/wear-complications-provider/samples/src/main/java/androidx/wear/complications/provider/samples/AsynchronousProviderService.kt
+++ b/wear/wear-complications-provider/samples/src/main/java/androidx/wear/complications/provider/samples/AsynchronousProviderService.kt
@@ -17,7 +17,6 @@
package androidx.wear.complications.provider.samples
import androidx.wear.complications.ComplicationProviderService
-import androidx.wear.complications.data.ComplicationText
import androidx.wear.complications.data.ComplicationType
import androidx.wear.complications.data.LongTextComplicationData
import androidx.wear.complications.data.ShortTextComplicationData
@@ -36,14 +35,11 @@
callback.onUpdateComplication(
when (type) {
ComplicationType.SHORT_TEXT ->
- ShortTextComplicationData.Builder(
- ComplicationText.plain("# $complicationId")
- ).build()
+ ShortTextComplicationData.Builder(plainText("# $complicationId")).build()
ComplicationType.LONG_TEXT ->
- LongTextComplicationData.Builder(
- ComplicationText.plain("hello $complicationId")
- ).build()
+ LongTextComplicationData.Builder(plainText("hello $complicationId"))
+ .build()
else -> null
}
@@ -53,13 +49,12 @@
override fun getPreviewData(type: ComplicationType) = when (type) {
ComplicationType.SHORT_TEXT ->
- ShortTextComplicationData.Builder(ComplicationText.plain("# 123"))
- .build()
+ ShortTextComplicationData.Builder(plainText("# 123")).build()
ComplicationType.LONG_TEXT ->
- LongTextComplicationData.Builder(ComplicationText.plain("hello 123"))
- .build()
+ LongTextComplicationData.Builder(plainText("hello 123")).build()
- else -> null
+ else
+ -> null
}
}
diff --git a/wear/wear-complications-provider/samples/src/main/java/androidx/wear/complications/provider/samples/BackgroundProviderService.kt b/wear/wear-complications-provider/samples/src/main/java/androidx/wear/complications/provider/samples/BackgroundProviderService.kt
index f4d6eb8..1c30820 100644
--- a/wear/wear-complications-provider/samples/src/main/java/androidx/wear/complications/provider/samples/BackgroundProviderService.kt
+++ b/wear/wear-complications-provider/samples/src/main/java/androidx/wear/complications/provider/samples/BackgroundProviderService.kt
@@ -21,7 +21,6 @@
import android.os.Looper
import androidx.wear.complications.ComplicationProviderService
import androidx.wear.complications.ProviderUpdateRequester
-import androidx.wear.complications.data.ComplicationText
import androidx.wear.complications.data.ComplicationType
import androidx.wear.complications.data.LongTextComplicationData
import androidx.wear.complications.data.ShortTextComplicationData
@@ -64,14 +63,10 @@
callback.onUpdateComplication(
when (type) {
ComplicationType.SHORT_TEXT ->
- ShortTextComplicationData.Builder(
- ComplicationText.plain("# $counter")
- ).build()
+ ShortTextComplicationData.Builder(plainText("# $counter")).build()
ComplicationType.LONG_TEXT ->
- LongTextComplicationData.Builder(
- ComplicationText.plain("Count $counter")
- ).build()
+ LongTextComplicationData.Builder(plainText("Count $counter")).build()
else -> null
}
@@ -80,14 +75,10 @@
override fun getPreviewData(type: ComplicationType) = when (type) {
ComplicationType.SHORT_TEXT ->
- ShortTextComplicationData.Builder(
- ComplicationText.plain("# 123")
- ).build()
+ ShortTextComplicationData.Builder(plainText("# 123")).build()
ComplicationType.LONG_TEXT ->
- LongTextComplicationData.Builder(
- ComplicationText.plain("Count 123")
- ).build()
+ LongTextComplicationData.Builder(plainText("Count 123")).build()
else -> null
}
diff --git a/wear/wear-complications-provider/samples/src/main/java/androidx/wear/complications/provider/samples/PlainComplicationText.kt b/wear/wear-complications-provider/samples/src/main/java/androidx/wear/complications/provider/samples/PlainComplicationText.kt
new file mode 100644
index 0000000..9537923
--- /dev/null
+++ b/wear/wear-complications-provider/samples/src/main/java/androidx/wear/complications/provider/samples/PlainComplicationText.kt
@@ -0,0 +1,22 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.wear.complications.provider.samples
+
+import androidx.wear.complications.data.PlainComplicationText
+
+internal fun plainText(text: String) =
+ PlainComplicationText.Builder(text).build()
\ No newline at end of file
diff --git a/wear/wear-complications-provider/samples/src/main/java/androidx/wear/complications/provider/samples/SynchronousProviderService.kt b/wear/wear-complications-provider/samples/src/main/java/androidx/wear/complications/provider/samples/SynchronousProviderService.kt
index 77ac32e..a86413c 100644
--- a/wear/wear-complications-provider/samples/src/main/java/androidx/wear/complications/provider/samples/SynchronousProviderService.kt
+++ b/wear/wear-complications-provider/samples/src/main/java/androidx/wear/complications/provider/samples/SynchronousProviderService.kt
@@ -17,7 +17,6 @@
package androidx.wear.complications.provider.samples
import androidx.wear.complications.ComplicationProviderService
-import androidx.wear.complications.data.ComplicationText
import androidx.wear.complications.data.ComplicationType
import androidx.wear.complications.data.LongTextComplicationData
import androidx.wear.complications.data.ShortTextComplicationData
@@ -33,14 +32,10 @@
callback.onUpdateComplication(
when (type) {
ComplicationType.SHORT_TEXT ->
- ShortTextComplicationData.Builder(
- ComplicationText.plain("# $complicationId")
- ).build()
+ ShortTextComplicationData.Builder(plainText("# $complicationId")).build()
ComplicationType.LONG_TEXT ->
- LongTextComplicationData.Builder(
- ComplicationText.plain("hello $complicationId")
- ).build()
+ LongTextComplicationData.Builder(plainText("hello $complicationId")).build()
else -> null
}
@@ -49,12 +44,10 @@
override fun getPreviewData(type: ComplicationType) = when (type) {
ComplicationType.SHORT_TEXT ->
- ShortTextComplicationData.Builder(ComplicationText.plain("# 123"))
- .build()
+ ShortTextComplicationData.Builder(plainText("# 123")).build()
ComplicationType.LONG_TEXT ->
- LongTextComplicationData.Builder(ComplicationText.plain("hello 123"))
- .build()
+ LongTextComplicationData.Builder(plainText("hello 123")).build()
else -> null
}
diff --git a/wear/wear-complications-provider/src/test/java/androidx/wear/complications/ComplicationProviderServiceTest.java b/wear/wear-complications-provider/src/test/java/androidx/wear/complications/ComplicationProviderServiceTest.java
index 9f9c4ea..3a9ddee 100644
--- a/wear/wear-complications-provider/src/test/java/androidx/wear/complications/ComplicationProviderServiceTest.java
+++ b/wear/wear-complications-provider/src/test/java/androidx/wear/complications/ComplicationProviderServiceTest.java
@@ -31,9 +31,9 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.wear.complications.data.ComplicationData;
-import androidx.wear.complications.data.ComplicationText;
import androidx.wear.complications.data.ComplicationType;
import androidx.wear.complications.data.LongTextComplicationData;
+import androidx.wear.complications.data.PlainComplicationText;
import org.junit.Before;
import org.junit.Test;
@@ -75,7 +75,7 @@
try {
callback.onUpdateComplication(
new LongTextComplicationData.Builder(
- ComplicationText.plain("hello " + complicationId)
+ new PlainComplicationText.Builder("hello " + complicationId).build()
).build()
);
} catch (RemoteException e) {
@@ -90,7 +90,7 @@
return null;
}
return new LongTextComplicationData.Builder(
- ComplicationText.plain("hello preview")
+ new PlainComplicationText.Builder("hello preview").build()
).build();
}
};
@@ -114,7 +114,7 @@
@Override
public ComplicationData getPreviewData(@NonNull ComplicationType type) {
return new LongTextComplicationData.Builder(
- ComplicationText.plain("hello preview")
+ new PlainComplicationText.Builder("hello preview").build()
).build();
}
};
diff --git a/wear/wear-tiles/api/current.txt b/wear/wear-tiles/api/current.txt
index 85c4a7f..1010e6c 100644
--- a/wear/wear-tiles/api/current.txt
+++ b/wear/wear-tiles/api/current.txt
@@ -12,6 +12,10 @@
method public static androidx.wear.tiles.TileUpdateRequester getUpdater(android.content.Context);
method public android.os.IBinder? onBind(android.content.Intent);
method @MainThread protected abstract com.google.common.util.concurrent.ListenableFuture<androidx.wear.tiles.builders.ResourceBuilders.Resources!> onResourcesRequest(androidx.wear.tiles.readers.RequestReaders.ResourcesRequest);
+ method @MainThread protected void onTileAddEvent(androidx.wear.tiles.readers.EventReaders.TileAddEvent);
+ method @MainThread protected void onTileEnterEvent(androidx.wear.tiles.readers.EventReaders.TileEnterEvent);
+ method @MainThread protected void onTileLeaveEvent(androidx.wear.tiles.readers.EventReaders.TileLeaveEvent);
+ method @MainThread protected void onTileRemoveEvent(androidx.wear.tiles.readers.EventReaders.TileRemoveEvent);
method @MainThread protected abstract com.google.common.util.concurrent.ListenableFuture<androidx.wear.tiles.builders.TileBuilders.Tile!> onTileRequest(androidx.wear.tiles.readers.RequestReaders.TileRequest);
field public static final String ACTION_BIND_TILE_PROVIDER = "androidx.wear.tiles.action.BIND_TILE_PROVIDER";
field public static final String EXTRA_CLICKABLE_ID = "androidx.wear.tiles.extra.CLICKABLE_ID";
@@ -62,6 +66,8 @@
public static final class ActionBuilders.LoadAction.Builder implements androidx.wear.tiles.builders.ActionBuilders.Action.Builder {
method public androidx.wear.tiles.builders.ActionBuilders.LoadAction build();
+ method public androidx.wear.tiles.builders.ActionBuilders.LoadAction.Builder setRequestState(androidx.wear.tiles.builders.StateBuilders.State);
+ method public androidx.wear.tiles.builders.ActionBuilders.LoadAction.Builder setRequestState(androidx.wear.tiles.builders.StateBuilders.State.Builder);
}
public final class ColorBuilders {
@@ -80,6 +86,7 @@
public final class DimensionBuilders {
method public static androidx.wear.tiles.builders.DimensionBuilders.DegreesProp degrees(float);
method public static androidx.wear.tiles.builders.DimensionBuilders.DpProp dp(@Dimension(unit=androidx.annotation.Dimension.DP) float);
+ method public static androidx.wear.tiles.builders.DimensionBuilders.EmProp em(int);
method public static androidx.wear.tiles.builders.DimensionBuilders.ExpandedDimensionProp expand();
method public static androidx.wear.tiles.builders.DimensionBuilders.SpProp sp(@Dimension(unit=androidx.annotation.Dimension.SP) int);
method public static androidx.wear.tiles.builders.DimensionBuilders.WrappedDimensionProp wrap();
@@ -92,24 +99,33 @@
method public androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension build();
}
- public static final class DimensionBuilders.DegreesProp implements androidx.wear.tiles.builders.DimensionBuilders.LinearOrAngularDimension {
+ public static final class DimensionBuilders.DegreesProp {
method public static androidx.wear.tiles.builders.DimensionBuilders.DegreesProp.Builder builder();
}
- public static final class DimensionBuilders.DegreesProp.Builder implements androidx.wear.tiles.builders.DimensionBuilders.LinearOrAngularDimension.Builder {
+ public static final class DimensionBuilders.DegreesProp.Builder {
method public androidx.wear.tiles.builders.DimensionBuilders.DegreesProp build();
method public androidx.wear.tiles.builders.DimensionBuilders.DegreesProp.Builder setValue(float);
}
- public static final class DimensionBuilders.DpProp implements androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension androidx.wear.tiles.builders.DimensionBuilders.ImageDimension androidx.wear.tiles.builders.DimensionBuilders.LinearOrAngularDimension {
+ public static final class DimensionBuilders.DpProp implements androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension androidx.wear.tiles.builders.DimensionBuilders.ImageDimension androidx.wear.tiles.builders.DimensionBuilders.SpacerDimension {
method public static androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder builder();
}
- public static final class DimensionBuilders.DpProp.Builder implements androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension.Builder androidx.wear.tiles.builders.DimensionBuilders.ImageDimension.Builder androidx.wear.tiles.builders.DimensionBuilders.LinearOrAngularDimension.Builder {
+ public static final class DimensionBuilders.DpProp.Builder implements androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension.Builder androidx.wear.tiles.builders.DimensionBuilders.ImageDimension.Builder androidx.wear.tiles.builders.DimensionBuilders.SpacerDimension.Builder {
method public androidx.wear.tiles.builders.DimensionBuilders.DpProp build();
method public androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder setValue(@Dimension(unit=androidx.annotation.Dimension.DP) float);
}
+ public static final class DimensionBuilders.EmProp {
+ method public static androidx.wear.tiles.builders.DimensionBuilders.EmProp.Builder builder();
+ }
+
+ public static final class DimensionBuilders.EmProp.Builder {
+ method public androidx.wear.tiles.builders.DimensionBuilders.EmProp build();
+ method public androidx.wear.tiles.builders.DimensionBuilders.EmProp.Builder setValue(float);
+ }
+
public static final class DimensionBuilders.ExpandedDimensionProp implements androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension androidx.wear.tiles.builders.DimensionBuilders.ImageDimension {
method public static androidx.wear.tiles.builders.DimensionBuilders.ExpandedDimensionProp.Builder builder();
}
@@ -125,13 +141,6 @@
method public androidx.wear.tiles.builders.DimensionBuilders.ImageDimension build();
}
- public static interface DimensionBuilders.LinearOrAngularDimension {
- }
-
- public static interface DimensionBuilders.LinearOrAngularDimension.Builder {
- method public androidx.wear.tiles.builders.DimensionBuilders.LinearOrAngularDimension build();
- }
-
public static final class DimensionBuilders.ProportionalDimensionProp implements androidx.wear.tiles.builders.DimensionBuilders.ImageDimension {
method public static androidx.wear.tiles.builders.DimensionBuilders.ProportionalDimensionProp.Builder builder();
}
@@ -151,6 +160,13 @@
method public androidx.wear.tiles.builders.DimensionBuilders.SpProp.Builder setValue(@Dimension(unit=androidx.annotation.Dimension.SP) int);
}
+ public static interface DimensionBuilders.SpacerDimension {
+ }
+
+ public static interface DimensionBuilders.SpacerDimension.Builder {
+ method public androidx.wear.tiles.builders.DimensionBuilders.SpacerDimension build();
+ }
+
public static final class DimensionBuilders.WrappedDimensionProp implements androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension {
method public static androidx.wear.tiles.builders.DimensionBuilders.WrappedDimensionProp.Builder builder();
}
@@ -195,41 +211,76 @@
}
public static final class LayoutElementBuilders.Arc.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder addContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder addContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder addContent(androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder addContent(androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc build();
method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setAnchorAngle(androidx.wear.tiles.builders.DimensionBuilders.DegreesProp);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setAnchorAngle(androidx.wear.tiles.builders.DimensionBuilders.DegreesProp.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setAnchorType(int);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setLength(androidx.wear.tiles.builders.DimensionBuilders.DegreesProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setLength(androidx.wear.tiles.builders.DimensionBuilders.DegreesProp.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setRotateContents(boolean);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setThickness(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setThickness(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setVerticalAlign(int);
}
- public static final class LayoutElementBuilders.Audible implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.Audible.Builder builder();
+ public static final class LayoutElementBuilders.ArcAdapter implements androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement {
+ method public static androidx.wear.tiles.builders.LayoutElementBuilders.ArcAdapter.Builder builder();
}
- public static final class LayoutElementBuilders.Audible.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Audible build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Audible.Builder setAccessibilityLabel(String);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Audible.Builder setContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Audible.Builder setContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder);
+ public static final class LayoutElementBuilders.ArcAdapter.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement.Builder {
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcAdapter build();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcAdapter.Builder setContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcAdapter.Builder setContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcAdapter.Builder setRotateContents(boolean);
}
- public static final class LayoutElementBuilders.Border {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.Border.Builder builder();
+ public static interface LayoutElementBuilders.ArcLayoutElement {
}
- public static final class LayoutElementBuilders.Border.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Border build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Border.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Border.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Border.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Border.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ public static interface LayoutElementBuilders.ArcLayoutElement.Builder {
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement build();
+ }
+
+ public static final class LayoutElementBuilders.ArcLine implements androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement {
+ method public static androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine.Builder builder();
+ }
+
+ public static final class LayoutElementBuilders.ArcLine.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement.Builder {
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine build();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine.Builder setLength(androidx.wear.tiles.builders.DimensionBuilders.DegreesProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine.Builder setLength(androidx.wear.tiles.builders.DimensionBuilders.DegreesProp.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine.Builder setThickness(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine.Builder setThickness(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ }
+
+ public static final class LayoutElementBuilders.ArcSpacer implements androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement {
+ method public static androidx.wear.tiles.builders.LayoutElementBuilders.ArcSpacer.Builder builder();
+ }
+
+ public static final class LayoutElementBuilders.ArcSpacer.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement.Builder {
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcSpacer build();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcSpacer.Builder setLength(androidx.wear.tiles.builders.DimensionBuilders.DegreesProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcSpacer.Builder setLength(androidx.wear.tiles.builders.DimensionBuilders.DegreesProp.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcSpacer.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcSpacer.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcSpacer.Builder setThickness(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcSpacer.Builder setThickness(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ }
+
+ public static final class LayoutElementBuilders.ArcText implements androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement {
+ method public static androidx.wear.tiles.builders.LayoutElementBuilders.ArcText.Builder builder();
+ }
+
+ public static final class LayoutElementBuilders.ArcText.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement.Builder {
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcText build();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcText.Builder setFontStyle(androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcText.Builder setFontStyle(androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcText.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcText.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcText.Builder setText(String);
}
public static final class LayoutElementBuilders.Box implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement {
@@ -243,42 +294,13 @@
method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setHorizontalAlignment(int);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setStyle(androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setStyle(androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setVerticalAlignment(int);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension.Builder);
}
- public static final class LayoutElementBuilders.BoxStyle {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder builder();
- }
-
- public static final class LayoutElementBuilders.BoxStyle.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder setBackgroundColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder setBackgroundColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder setBorder(androidx.wear.tiles.builders.LayoutElementBuilders.Border);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder setBorder(androidx.wear.tiles.builders.LayoutElementBuilders.Border.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder setCorner(androidx.wear.tiles.builders.LayoutElementBuilders.Corner);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder setCorner(androidx.wear.tiles.builders.LayoutElementBuilders.Corner.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder setPadding(androidx.wear.tiles.builders.LayoutElementBuilders.Padding);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder setPadding(androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder);
- }
-
- public static final class LayoutElementBuilders.Clickable implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.Clickable.Builder builder();
- }
-
- public static final class LayoutElementBuilders.Clickable.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Clickable build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Clickable.Builder setContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Clickable.Builder setContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Clickable.Builder setId(String);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Clickable.Builder setOnClick(androidx.wear.tiles.builders.ActionBuilders.Action);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Clickable.Builder setOnClick(androidx.wear.tiles.builders.ActionBuilders.Action.Builder);
- }
-
public static final class LayoutElementBuilders.Column implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement {
method public static androidx.wear.tiles.builders.LayoutElementBuilders.Column.Builder builder();
}
@@ -290,30 +312,23 @@
method public androidx.wear.tiles.builders.LayoutElementBuilders.Column.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Column.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Column.Builder setHorizontalAlignment(int);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Column.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Column.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Column.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Column.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension.Builder);
}
- public static final class LayoutElementBuilders.Corner {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.Corner.Builder builder();
- }
-
- public static final class LayoutElementBuilders.Corner.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Corner build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Corner.Builder setRadius(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Corner.Builder setRadius(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
- }
-
public static final class LayoutElementBuilders.FontStyle {
method public static androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder builder();
}
public static final class LayoutElementBuilders.FontStyle.Builder {
method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle build();
- method @Deprecated public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder setBold(boolean);
method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp);
method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder setItalic(boolean);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder setLetterSpacing(androidx.wear.tiles.builders.DimensionBuilders.EmProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder setLetterSpacing(androidx.wear.tiles.builders.DimensionBuilders.EmProp.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder setSize(androidx.wear.tiles.builders.DimensionBuilders.SpProp);
method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder setSize(androidx.wear.tiles.builders.DimensionBuilders.SpProp.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder setUnderline(boolean);
@@ -321,17 +336,17 @@
}
public static class LayoutElementBuilders.FontStyles {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle body1();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle body2();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle button();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle caption1();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle caption2();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle display1();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle display2();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle display3();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle title1();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle title2();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle title3();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder body1();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder body2();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder button();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder caption1();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder caption2();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder display1();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder display2();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder display3();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder title1();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder title2();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder title3();
method public static androidx.wear.tiles.builders.LayoutElementBuilders.FontStyles withDeviceParameters(androidx.wear.tiles.readers.DeviceParametersReaders.DeviceParameters);
}
@@ -344,11 +359,23 @@
method public androidx.wear.tiles.builders.LayoutElementBuilders.Image.Builder setContentScaleMode(int);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Image.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.ImageDimension);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Image.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.ImageDimension.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Image.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Image.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Image.Builder setResourceId(String);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Image.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.ImageDimension);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Image.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.ImageDimension.Builder);
}
+ public static final class LayoutElementBuilders.Layout {
+ method public static androidx.wear.tiles.builders.LayoutElementBuilders.Layout.Builder builder();
+ }
+
+ public static final class LayoutElementBuilders.Layout.Builder {
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Layout build();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Layout.Builder setRoot(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Layout.Builder setRoot(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder);
+ }
+
public static interface LayoutElementBuilders.LayoutElement {
}
@@ -356,47 +383,6 @@
method public androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement build();
}
- public static final class LayoutElementBuilders.Line implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.Line.Builder builder();
- }
-
- public static final class LayoutElementBuilders.Line.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Line build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Line.Builder setLength(androidx.wear.tiles.builders.DimensionBuilders.LinearOrAngularDimension);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Line.Builder setLength(androidx.wear.tiles.builders.DimensionBuilders.LinearOrAngularDimension.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Line.Builder setStyle(androidx.wear.tiles.builders.LayoutElementBuilders.LineStyle);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Line.Builder setStyle(androidx.wear.tiles.builders.LayoutElementBuilders.LineStyle.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Line.Builder setThickness(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Line.Builder setThickness(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
- }
-
- public static final class LayoutElementBuilders.LineStyle {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.LineStyle.Builder builder();
- }
-
- public static final class LayoutElementBuilders.LineStyle.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.LineStyle build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.LineStyle.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.LineStyle.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp.Builder);
- }
-
- public static final class LayoutElementBuilders.Padding {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder builder();
- }
-
- public static final class LayoutElementBuilders.Padding.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder setBottom(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder setBottom(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder setEnd(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder setEnd(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder setRtlAware(boolean);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder setStart(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder setStart(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder setTop(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder setTop(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
- }
-
public static final class LayoutElementBuilders.Row implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement {
method public static androidx.wear.tiles.builders.LayoutElementBuilders.Row.Builder builder();
}
@@ -407,6 +393,8 @@
method public androidx.wear.tiles.builders.LayoutElementBuilders.Row build();
method public androidx.wear.tiles.builders.LayoutElementBuilders.Row.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Row.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Row.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Row.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Row.Builder setVerticalAlignment(int);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Row.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Row.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension.Builder);
@@ -418,10 +406,12 @@
public static final class LayoutElementBuilders.Spacer.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder {
method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.LinearOrAngularDimension);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.LinearOrAngularDimension.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.SpacerDimension);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.SpacerDimension.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.SpacerDimension);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.SpacerDimension.Builder);
}
public static interface LayoutElementBuilders.Span {
@@ -431,6 +421,34 @@
method public androidx.wear.tiles.builders.LayoutElementBuilders.Span build();
}
+ public static final class LayoutElementBuilders.SpanImage implements androidx.wear.tiles.builders.LayoutElementBuilders.Span {
+ method public static androidx.wear.tiles.builders.LayoutElementBuilders.SpanImage.Builder builder();
+ }
+
+ public static final class LayoutElementBuilders.SpanImage.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.Span.Builder {
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanImage build();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanImage.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanImage.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanImage.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.SpanModifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanImage.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.SpanModifiers.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanImage.Builder setResourceId(String);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanImage.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanImage.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ }
+
+ public static final class LayoutElementBuilders.SpanText implements androidx.wear.tiles.builders.LayoutElementBuilders.Span {
+ method public static androidx.wear.tiles.builders.LayoutElementBuilders.SpanText.Builder builder();
+ }
+
+ public static final class LayoutElementBuilders.SpanText.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.Span.Builder {
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanText build();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanText.Builder setFontStyle(androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanText.Builder setFontStyle(androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanText.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.SpanModifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanText.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.SpanModifiers.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanText.Builder setText(String);
+ }
+
public static final class LayoutElementBuilders.Spannable implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement {
method public static androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder builder();
}
@@ -439,45 +457,145 @@
method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder addSpan(androidx.wear.tiles.builders.LayoutElementBuilders.Span);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder addSpan(androidx.wear.tiles.builders.LayoutElementBuilders.Span.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder setStyle(androidx.wear.tiles.builders.LayoutElementBuilders.SpannableStyle);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder setStyle(androidx.wear.tiles.builders.LayoutElementBuilders.SpannableStyle.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder setLineSpacing(androidx.wear.tiles.builders.DimensionBuilders.SpProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder setLineSpacing(androidx.wear.tiles.builders.DimensionBuilders.SpProp.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder setMaxLines(@IntRange(from=1) int);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder setMultilineAlignment(int);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder setOverflow(int);
}
- public static final class LayoutElementBuilders.SpannableStyle {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.SpannableStyle.Builder builder();
- }
-
- public static final class LayoutElementBuilders.SpannableStyle.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.SpannableStyle build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.SpannableStyle.Builder setMaxLines(@IntRange(from=0) int);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.SpannableStyle.Builder setMultilineAlignment(int);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.SpannableStyle.Builder setOverflow(int);
- }
-
- public static final class LayoutElementBuilders.Text implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement androidx.wear.tiles.builders.LayoutElementBuilders.Span {
+ public static final class LayoutElementBuilders.Text implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement {
method public static androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder builder();
}
- public static final class LayoutElementBuilders.Text.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder androidx.wear.tiles.builders.LayoutElementBuilders.Span.Builder {
+ public static final class LayoutElementBuilders.Text.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder {
method public androidx.wear.tiles.builders.LayoutElementBuilders.Text build();
method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setFontStyle(androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setFontStyle(androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder);
- method @Deprecated public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setStyle(androidx.wear.tiles.builders.LayoutElementBuilders.TextStyle);
- method @Deprecated public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setStyle(androidx.wear.tiles.builders.LayoutElementBuilders.TextStyle.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setLineHeight(androidx.wear.tiles.builders.DimensionBuilders.SpProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setLineHeight(androidx.wear.tiles.builders.DimensionBuilders.SpProp.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setMaxLines(@IntRange(from=1) int);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setMultilineAlignment(int);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setOverflow(int);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setText(String);
}
- public static final class LayoutElementBuilders.TextStyle {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.TextStyle.Builder builder();
+ public final class ModifiersBuilders {
}
- public static final class LayoutElementBuilders.TextStyle.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.TextStyle build();
- method @Deprecated public androidx.wear.tiles.builders.LayoutElementBuilders.TextStyle.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp);
- method @Deprecated public androidx.wear.tiles.builders.LayoutElementBuilders.TextStyle.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.TextStyle.Builder setMaxLines(@IntRange(from=0) int);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.TextStyle.Builder setMultilineAlignment(int);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.TextStyle.Builder setOverflow(int);
+ public static final class ModifiersBuilders.ArcModifiers {
+ method public static androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers.Builder builder();
+ }
+
+ public static final class ModifiersBuilders.ArcModifiers.Builder {
+ method public androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers build();
+ method public androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers.Builder setClickable(androidx.wear.tiles.builders.ModifiersBuilders.Clickable);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers.Builder setClickable(androidx.wear.tiles.builders.ModifiersBuilders.Clickable.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers.Builder setSemantics(androidx.wear.tiles.builders.ModifiersBuilders.Semantics);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers.Builder setSemantics(androidx.wear.tiles.builders.ModifiersBuilders.Semantics.Builder);
+ }
+
+ public static final class ModifiersBuilders.Background {
+ method public static androidx.wear.tiles.builders.ModifiersBuilders.Background.Builder builder();
+ }
+
+ public static final class ModifiersBuilders.Background.Builder {
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Background build();
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Background.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Background.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Background.Builder setCorner(androidx.wear.tiles.builders.ModifiersBuilders.Corner);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Background.Builder setCorner(androidx.wear.tiles.builders.ModifiersBuilders.Corner.Builder);
+ }
+
+ public static final class ModifiersBuilders.Border {
+ method public static androidx.wear.tiles.builders.ModifiersBuilders.Border.Builder builder();
+ }
+
+ public static final class ModifiersBuilders.Border.Builder {
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Border build();
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Border.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Border.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Border.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Border.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ }
+
+ public static final class ModifiersBuilders.Clickable {
+ method public static androidx.wear.tiles.builders.ModifiersBuilders.Clickable.Builder builder();
+ }
+
+ public static final class ModifiersBuilders.Clickable.Builder {
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Clickable build();
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Clickable.Builder setId(String);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Clickable.Builder setOnClick(androidx.wear.tiles.builders.ActionBuilders.Action);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Clickable.Builder setOnClick(androidx.wear.tiles.builders.ActionBuilders.Action.Builder);
+ }
+
+ public static final class ModifiersBuilders.Corner {
+ method public static androidx.wear.tiles.builders.ModifiersBuilders.Corner.Builder builder();
+ }
+
+ public static final class ModifiersBuilders.Corner.Builder {
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Corner build();
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Corner.Builder setRadius(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Corner.Builder setRadius(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ }
+
+ public static final class ModifiersBuilders.Modifiers {
+ method public static androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder builder();
+ }
+
+ public static final class ModifiersBuilders.Modifiers.Builder {
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers build();
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setBackground(androidx.wear.tiles.builders.ModifiersBuilders.Background);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setBackground(androidx.wear.tiles.builders.ModifiersBuilders.Background.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setBorder(androidx.wear.tiles.builders.ModifiersBuilders.Border);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setBorder(androidx.wear.tiles.builders.ModifiersBuilders.Border.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setClickable(androidx.wear.tiles.builders.ModifiersBuilders.Clickable);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setClickable(androidx.wear.tiles.builders.ModifiersBuilders.Clickable.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setPadding(androidx.wear.tiles.builders.ModifiersBuilders.Padding);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setPadding(androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setSemantics(androidx.wear.tiles.builders.ModifiersBuilders.Semantics);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setSemantics(androidx.wear.tiles.builders.ModifiersBuilders.Semantics.Builder);
+ }
+
+ public static final class ModifiersBuilders.Padding {
+ method public static androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder builder();
+ }
+
+ public static final class ModifiersBuilders.Padding.Builder {
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding build();
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder setBottom(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder setBottom(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder setEnd(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder setEnd(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder setRtlAware(boolean);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder setStart(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder setStart(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder setTop(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder setTop(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ }
+
+ public static final class ModifiersBuilders.Semantics {
+ method public static androidx.wear.tiles.builders.ModifiersBuilders.Semantics.Builder builder();
+ }
+
+ public static final class ModifiersBuilders.Semantics.Builder {
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Semantics build();
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Semantics.Builder setContentDescription(String);
+ }
+
+ public static final class ModifiersBuilders.SpanModifiers {
+ method public static androidx.wear.tiles.builders.ModifiersBuilders.SpanModifiers.Builder builder();
+ }
+
+ public static final class ModifiersBuilders.SpanModifiers.Builder {
+ method public androidx.wear.tiles.builders.ModifiersBuilders.SpanModifiers build();
+ method public androidx.wear.tiles.builders.ModifiersBuilders.SpanModifiers.Builder setClickable(androidx.wear.tiles.builders.ModifiersBuilders.Clickable);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.SpanModifiers.Builder setClickable(androidx.wear.tiles.builders.ModifiersBuilders.Clickable.Builder);
}
public final class ResourceBuilders {
@@ -529,6 +647,19 @@
method public androidx.wear.tiles.builders.ResourceBuilders.Resources.Builder setVersion(String);
}
+ public final class StateBuilders {
+ }
+
+ public static final class StateBuilders.State {
+ method public static androidx.wear.tiles.builders.StateBuilders.State.Builder builder();
+ method public String getLastClickableId();
+ }
+
+ public static final class StateBuilders.State.Builder {
+ method public androidx.wear.tiles.builders.StateBuilders.State build();
+ method public androidx.wear.tiles.builders.StateBuilders.State.Builder setLastClickableId(String);
+ }
+
public final class TileBuilders {
}
@@ -538,6 +669,7 @@
public static final class TileBuilders.Tile.Builder {
method public androidx.wear.tiles.builders.TileBuilders.Tile build();
+ method public androidx.wear.tiles.builders.TileBuilders.Tile.Builder setFreshnessIntervalMillis(long);
method public androidx.wear.tiles.builders.TileBuilders.Tile.Builder setResourcesVersion(String);
method public androidx.wear.tiles.builders.TileBuilders.Tile.Builder setTimeline(androidx.wear.tiles.builders.TimelineBuilders.Timeline);
method public androidx.wear.tiles.builders.TileBuilders.Tile.Builder setTimeline(androidx.wear.tiles.builders.TimelineBuilders.Timeline.Builder);
@@ -572,8 +704,8 @@
public static final class TimelineBuilders.TimelineEntry.Builder {
method public androidx.wear.tiles.builders.TimelineBuilders.TimelineEntry build();
- method public androidx.wear.tiles.builders.TimelineBuilders.TimelineEntry.Builder setContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement);
- method public androidx.wear.tiles.builders.TimelineBuilders.TimelineEntry.Builder setContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder);
+ method public androidx.wear.tiles.builders.TimelineBuilders.TimelineEntry.Builder setLayout(androidx.wear.tiles.builders.LayoutElementBuilders.Layout);
+ method public androidx.wear.tiles.builders.TimelineBuilders.TimelineEntry.Builder setLayout(androidx.wear.tiles.builders.LayoutElementBuilders.Layout.Builder);
method public androidx.wear.tiles.builders.TimelineBuilders.TimelineEntry.Builder setValidity(androidx.wear.tiles.builders.TimelineBuilders.TimeInterval);
method public androidx.wear.tiles.builders.TimelineBuilders.TimelineEntry.Builder setValidity(androidx.wear.tiles.builders.TimelineBuilders.TimeInterval.Builder);
}
@@ -598,17 +730,39 @@
method @Dimension(unit=androidx.annotation.Dimension.DP) public int getScreenWidthDp();
}
+ public class EventReaders {
+ }
+
+ public static class EventReaders.TileAddEvent {
+ method public int getTileId();
+ }
+
+ public static class EventReaders.TileEnterEvent {
+ method public int getTileId();
+ }
+
+ public static class EventReaders.TileLeaveEvent {
+ method public int getTileId();
+ }
+
+ public static class EventReaders.TileRemoveEvent {
+ method public int getTileId();
+ }
+
public class RequestReaders {
}
public static class RequestReaders.ResourcesRequest {
+ method public androidx.wear.tiles.readers.DeviceParametersReaders.DeviceParameters getDeviceParameters();
method public java.util.List<java.lang.String!> getResourceIds();
+ method public int getTileId();
method public String getVersion();
}
public static class RequestReaders.TileRequest {
- method public String getClickableId();
- method public androidx.wear.tiles.readers.DeviceParametersReaders.DeviceParameters? getDeviceParameters();
+ method public androidx.wear.tiles.readers.DeviceParametersReaders.DeviceParameters getDeviceParameters();
+ method public androidx.wear.tiles.builders.StateBuilders.State getState();
+ method public int getTileId();
}
}
diff --git a/wear/wear-tiles/api/public_plus_experimental_current.txt b/wear/wear-tiles/api/public_plus_experimental_current.txt
index 85c4a7f..1010e6c 100644
--- a/wear/wear-tiles/api/public_plus_experimental_current.txt
+++ b/wear/wear-tiles/api/public_plus_experimental_current.txt
@@ -12,6 +12,10 @@
method public static androidx.wear.tiles.TileUpdateRequester getUpdater(android.content.Context);
method public android.os.IBinder? onBind(android.content.Intent);
method @MainThread protected abstract com.google.common.util.concurrent.ListenableFuture<androidx.wear.tiles.builders.ResourceBuilders.Resources!> onResourcesRequest(androidx.wear.tiles.readers.RequestReaders.ResourcesRequest);
+ method @MainThread protected void onTileAddEvent(androidx.wear.tiles.readers.EventReaders.TileAddEvent);
+ method @MainThread protected void onTileEnterEvent(androidx.wear.tiles.readers.EventReaders.TileEnterEvent);
+ method @MainThread protected void onTileLeaveEvent(androidx.wear.tiles.readers.EventReaders.TileLeaveEvent);
+ method @MainThread protected void onTileRemoveEvent(androidx.wear.tiles.readers.EventReaders.TileRemoveEvent);
method @MainThread protected abstract com.google.common.util.concurrent.ListenableFuture<androidx.wear.tiles.builders.TileBuilders.Tile!> onTileRequest(androidx.wear.tiles.readers.RequestReaders.TileRequest);
field public static final String ACTION_BIND_TILE_PROVIDER = "androidx.wear.tiles.action.BIND_TILE_PROVIDER";
field public static final String EXTRA_CLICKABLE_ID = "androidx.wear.tiles.extra.CLICKABLE_ID";
@@ -62,6 +66,8 @@
public static final class ActionBuilders.LoadAction.Builder implements androidx.wear.tiles.builders.ActionBuilders.Action.Builder {
method public androidx.wear.tiles.builders.ActionBuilders.LoadAction build();
+ method public androidx.wear.tiles.builders.ActionBuilders.LoadAction.Builder setRequestState(androidx.wear.tiles.builders.StateBuilders.State);
+ method public androidx.wear.tiles.builders.ActionBuilders.LoadAction.Builder setRequestState(androidx.wear.tiles.builders.StateBuilders.State.Builder);
}
public final class ColorBuilders {
@@ -80,6 +86,7 @@
public final class DimensionBuilders {
method public static androidx.wear.tiles.builders.DimensionBuilders.DegreesProp degrees(float);
method public static androidx.wear.tiles.builders.DimensionBuilders.DpProp dp(@Dimension(unit=androidx.annotation.Dimension.DP) float);
+ method public static androidx.wear.tiles.builders.DimensionBuilders.EmProp em(int);
method public static androidx.wear.tiles.builders.DimensionBuilders.ExpandedDimensionProp expand();
method public static androidx.wear.tiles.builders.DimensionBuilders.SpProp sp(@Dimension(unit=androidx.annotation.Dimension.SP) int);
method public static androidx.wear.tiles.builders.DimensionBuilders.WrappedDimensionProp wrap();
@@ -92,24 +99,33 @@
method public androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension build();
}
- public static final class DimensionBuilders.DegreesProp implements androidx.wear.tiles.builders.DimensionBuilders.LinearOrAngularDimension {
+ public static final class DimensionBuilders.DegreesProp {
method public static androidx.wear.tiles.builders.DimensionBuilders.DegreesProp.Builder builder();
}
- public static final class DimensionBuilders.DegreesProp.Builder implements androidx.wear.tiles.builders.DimensionBuilders.LinearOrAngularDimension.Builder {
+ public static final class DimensionBuilders.DegreesProp.Builder {
method public androidx.wear.tiles.builders.DimensionBuilders.DegreesProp build();
method public androidx.wear.tiles.builders.DimensionBuilders.DegreesProp.Builder setValue(float);
}
- public static final class DimensionBuilders.DpProp implements androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension androidx.wear.tiles.builders.DimensionBuilders.ImageDimension androidx.wear.tiles.builders.DimensionBuilders.LinearOrAngularDimension {
+ public static final class DimensionBuilders.DpProp implements androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension androidx.wear.tiles.builders.DimensionBuilders.ImageDimension androidx.wear.tiles.builders.DimensionBuilders.SpacerDimension {
method public static androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder builder();
}
- public static final class DimensionBuilders.DpProp.Builder implements androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension.Builder androidx.wear.tiles.builders.DimensionBuilders.ImageDimension.Builder androidx.wear.tiles.builders.DimensionBuilders.LinearOrAngularDimension.Builder {
+ public static final class DimensionBuilders.DpProp.Builder implements androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension.Builder androidx.wear.tiles.builders.DimensionBuilders.ImageDimension.Builder androidx.wear.tiles.builders.DimensionBuilders.SpacerDimension.Builder {
method public androidx.wear.tiles.builders.DimensionBuilders.DpProp build();
method public androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder setValue(@Dimension(unit=androidx.annotation.Dimension.DP) float);
}
+ public static final class DimensionBuilders.EmProp {
+ method public static androidx.wear.tiles.builders.DimensionBuilders.EmProp.Builder builder();
+ }
+
+ public static final class DimensionBuilders.EmProp.Builder {
+ method public androidx.wear.tiles.builders.DimensionBuilders.EmProp build();
+ method public androidx.wear.tiles.builders.DimensionBuilders.EmProp.Builder setValue(float);
+ }
+
public static final class DimensionBuilders.ExpandedDimensionProp implements androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension androidx.wear.tiles.builders.DimensionBuilders.ImageDimension {
method public static androidx.wear.tiles.builders.DimensionBuilders.ExpandedDimensionProp.Builder builder();
}
@@ -125,13 +141,6 @@
method public androidx.wear.tiles.builders.DimensionBuilders.ImageDimension build();
}
- public static interface DimensionBuilders.LinearOrAngularDimension {
- }
-
- public static interface DimensionBuilders.LinearOrAngularDimension.Builder {
- method public androidx.wear.tiles.builders.DimensionBuilders.LinearOrAngularDimension build();
- }
-
public static final class DimensionBuilders.ProportionalDimensionProp implements androidx.wear.tiles.builders.DimensionBuilders.ImageDimension {
method public static androidx.wear.tiles.builders.DimensionBuilders.ProportionalDimensionProp.Builder builder();
}
@@ -151,6 +160,13 @@
method public androidx.wear.tiles.builders.DimensionBuilders.SpProp.Builder setValue(@Dimension(unit=androidx.annotation.Dimension.SP) int);
}
+ public static interface DimensionBuilders.SpacerDimension {
+ }
+
+ public static interface DimensionBuilders.SpacerDimension.Builder {
+ method public androidx.wear.tiles.builders.DimensionBuilders.SpacerDimension build();
+ }
+
public static final class DimensionBuilders.WrappedDimensionProp implements androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension {
method public static androidx.wear.tiles.builders.DimensionBuilders.WrappedDimensionProp.Builder builder();
}
@@ -195,41 +211,76 @@
}
public static final class LayoutElementBuilders.Arc.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder addContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder addContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder addContent(androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder addContent(androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc build();
method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setAnchorAngle(androidx.wear.tiles.builders.DimensionBuilders.DegreesProp);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setAnchorAngle(androidx.wear.tiles.builders.DimensionBuilders.DegreesProp.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setAnchorType(int);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setLength(androidx.wear.tiles.builders.DimensionBuilders.DegreesProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setLength(androidx.wear.tiles.builders.DimensionBuilders.DegreesProp.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setRotateContents(boolean);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setThickness(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setThickness(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setVerticalAlign(int);
}
- public static final class LayoutElementBuilders.Audible implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.Audible.Builder builder();
+ public static final class LayoutElementBuilders.ArcAdapter implements androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement {
+ method public static androidx.wear.tiles.builders.LayoutElementBuilders.ArcAdapter.Builder builder();
}
- public static final class LayoutElementBuilders.Audible.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Audible build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Audible.Builder setAccessibilityLabel(String);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Audible.Builder setContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Audible.Builder setContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder);
+ public static final class LayoutElementBuilders.ArcAdapter.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement.Builder {
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcAdapter build();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcAdapter.Builder setContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcAdapter.Builder setContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcAdapter.Builder setRotateContents(boolean);
}
- public static final class LayoutElementBuilders.Border {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.Border.Builder builder();
+ public static interface LayoutElementBuilders.ArcLayoutElement {
}
- public static final class LayoutElementBuilders.Border.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Border build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Border.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Border.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Border.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Border.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ public static interface LayoutElementBuilders.ArcLayoutElement.Builder {
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement build();
+ }
+
+ public static final class LayoutElementBuilders.ArcLine implements androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement {
+ method public static androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine.Builder builder();
+ }
+
+ public static final class LayoutElementBuilders.ArcLine.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement.Builder {
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine build();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine.Builder setLength(androidx.wear.tiles.builders.DimensionBuilders.DegreesProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine.Builder setLength(androidx.wear.tiles.builders.DimensionBuilders.DegreesProp.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine.Builder setThickness(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine.Builder setThickness(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ }
+
+ public static final class LayoutElementBuilders.ArcSpacer implements androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement {
+ method public static androidx.wear.tiles.builders.LayoutElementBuilders.ArcSpacer.Builder builder();
+ }
+
+ public static final class LayoutElementBuilders.ArcSpacer.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement.Builder {
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcSpacer build();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcSpacer.Builder setLength(androidx.wear.tiles.builders.DimensionBuilders.DegreesProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcSpacer.Builder setLength(androidx.wear.tiles.builders.DimensionBuilders.DegreesProp.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcSpacer.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcSpacer.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcSpacer.Builder setThickness(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcSpacer.Builder setThickness(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ }
+
+ public static final class LayoutElementBuilders.ArcText implements androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement {
+ method public static androidx.wear.tiles.builders.LayoutElementBuilders.ArcText.Builder builder();
+ }
+
+ public static final class LayoutElementBuilders.ArcText.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement.Builder {
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcText build();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcText.Builder setFontStyle(androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcText.Builder setFontStyle(androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcText.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcText.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcText.Builder setText(String);
}
public static final class LayoutElementBuilders.Box implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement {
@@ -243,42 +294,13 @@
method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setHorizontalAlignment(int);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setStyle(androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setStyle(androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setVerticalAlignment(int);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension.Builder);
}
- public static final class LayoutElementBuilders.BoxStyle {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder builder();
- }
-
- public static final class LayoutElementBuilders.BoxStyle.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder setBackgroundColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder setBackgroundColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder setBorder(androidx.wear.tiles.builders.LayoutElementBuilders.Border);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder setBorder(androidx.wear.tiles.builders.LayoutElementBuilders.Border.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder setCorner(androidx.wear.tiles.builders.LayoutElementBuilders.Corner);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder setCorner(androidx.wear.tiles.builders.LayoutElementBuilders.Corner.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder setPadding(androidx.wear.tiles.builders.LayoutElementBuilders.Padding);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder setPadding(androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder);
- }
-
- public static final class LayoutElementBuilders.Clickable implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.Clickable.Builder builder();
- }
-
- public static final class LayoutElementBuilders.Clickable.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Clickable build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Clickable.Builder setContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Clickable.Builder setContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Clickable.Builder setId(String);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Clickable.Builder setOnClick(androidx.wear.tiles.builders.ActionBuilders.Action);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Clickable.Builder setOnClick(androidx.wear.tiles.builders.ActionBuilders.Action.Builder);
- }
-
public static final class LayoutElementBuilders.Column implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement {
method public static androidx.wear.tiles.builders.LayoutElementBuilders.Column.Builder builder();
}
@@ -290,30 +312,23 @@
method public androidx.wear.tiles.builders.LayoutElementBuilders.Column.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Column.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Column.Builder setHorizontalAlignment(int);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Column.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Column.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Column.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Column.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension.Builder);
}
- public static final class LayoutElementBuilders.Corner {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.Corner.Builder builder();
- }
-
- public static final class LayoutElementBuilders.Corner.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Corner build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Corner.Builder setRadius(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Corner.Builder setRadius(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
- }
-
public static final class LayoutElementBuilders.FontStyle {
method public static androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder builder();
}
public static final class LayoutElementBuilders.FontStyle.Builder {
method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle build();
- method @Deprecated public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder setBold(boolean);
method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp);
method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder setItalic(boolean);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder setLetterSpacing(androidx.wear.tiles.builders.DimensionBuilders.EmProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder setLetterSpacing(androidx.wear.tiles.builders.DimensionBuilders.EmProp.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder setSize(androidx.wear.tiles.builders.DimensionBuilders.SpProp);
method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder setSize(androidx.wear.tiles.builders.DimensionBuilders.SpProp.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder setUnderline(boolean);
@@ -321,17 +336,17 @@
}
public static class LayoutElementBuilders.FontStyles {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle body1();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle body2();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle button();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle caption1();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle caption2();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle display1();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle display2();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle display3();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle title1();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle title2();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle title3();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder body1();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder body2();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder button();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder caption1();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder caption2();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder display1();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder display2();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder display3();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder title1();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder title2();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder title3();
method public static androidx.wear.tiles.builders.LayoutElementBuilders.FontStyles withDeviceParameters(androidx.wear.tiles.readers.DeviceParametersReaders.DeviceParameters);
}
@@ -344,11 +359,23 @@
method public androidx.wear.tiles.builders.LayoutElementBuilders.Image.Builder setContentScaleMode(int);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Image.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.ImageDimension);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Image.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.ImageDimension.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Image.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Image.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Image.Builder setResourceId(String);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Image.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.ImageDimension);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Image.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.ImageDimension.Builder);
}
+ public static final class LayoutElementBuilders.Layout {
+ method public static androidx.wear.tiles.builders.LayoutElementBuilders.Layout.Builder builder();
+ }
+
+ public static final class LayoutElementBuilders.Layout.Builder {
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Layout build();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Layout.Builder setRoot(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Layout.Builder setRoot(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder);
+ }
+
public static interface LayoutElementBuilders.LayoutElement {
}
@@ -356,47 +383,6 @@
method public androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement build();
}
- public static final class LayoutElementBuilders.Line implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.Line.Builder builder();
- }
-
- public static final class LayoutElementBuilders.Line.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Line build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Line.Builder setLength(androidx.wear.tiles.builders.DimensionBuilders.LinearOrAngularDimension);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Line.Builder setLength(androidx.wear.tiles.builders.DimensionBuilders.LinearOrAngularDimension.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Line.Builder setStyle(androidx.wear.tiles.builders.LayoutElementBuilders.LineStyle);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Line.Builder setStyle(androidx.wear.tiles.builders.LayoutElementBuilders.LineStyle.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Line.Builder setThickness(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Line.Builder setThickness(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
- }
-
- public static final class LayoutElementBuilders.LineStyle {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.LineStyle.Builder builder();
- }
-
- public static final class LayoutElementBuilders.LineStyle.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.LineStyle build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.LineStyle.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.LineStyle.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp.Builder);
- }
-
- public static final class LayoutElementBuilders.Padding {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder builder();
- }
-
- public static final class LayoutElementBuilders.Padding.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder setBottom(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder setBottom(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder setEnd(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder setEnd(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder setRtlAware(boolean);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder setStart(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder setStart(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder setTop(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder setTop(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
- }
-
public static final class LayoutElementBuilders.Row implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement {
method public static androidx.wear.tiles.builders.LayoutElementBuilders.Row.Builder builder();
}
@@ -407,6 +393,8 @@
method public androidx.wear.tiles.builders.LayoutElementBuilders.Row build();
method public androidx.wear.tiles.builders.LayoutElementBuilders.Row.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Row.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Row.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Row.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Row.Builder setVerticalAlignment(int);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Row.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Row.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension.Builder);
@@ -418,10 +406,12 @@
public static final class LayoutElementBuilders.Spacer.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder {
method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.LinearOrAngularDimension);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.LinearOrAngularDimension.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.SpacerDimension);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.SpacerDimension.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.SpacerDimension);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.SpacerDimension.Builder);
}
public static interface LayoutElementBuilders.Span {
@@ -431,6 +421,34 @@
method public androidx.wear.tiles.builders.LayoutElementBuilders.Span build();
}
+ public static final class LayoutElementBuilders.SpanImage implements androidx.wear.tiles.builders.LayoutElementBuilders.Span {
+ method public static androidx.wear.tiles.builders.LayoutElementBuilders.SpanImage.Builder builder();
+ }
+
+ public static final class LayoutElementBuilders.SpanImage.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.Span.Builder {
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanImage build();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanImage.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanImage.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanImage.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.SpanModifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanImage.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.SpanModifiers.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanImage.Builder setResourceId(String);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanImage.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanImage.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ }
+
+ public static final class LayoutElementBuilders.SpanText implements androidx.wear.tiles.builders.LayoutElementBuilders.Span {
+ method public static androidx.wear.tiles.builders.LayoutElementBuilders.SpanText.Builder builder();
+ }
+
+ public static final class LayoutElementBuilders.SpanText.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.Span.Builder {
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanText build();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanText.Builder setFontStyle(androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanText.Builder setFontStyle(androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanText.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.SpanModifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanText.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.SpanModifiers.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanText.Builder setText(String);
+ }
+
public static final class LayoutElementBuilders.Spannable implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement {
method public static androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder builder();
}
@@ -439,45 +457,145 @@
method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder addSpan(androidx.wear.tiles.builders.LayoutElementBuilders.Span);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder addSpan(androidx.wear.tiles.builders.LayoutElementBuilders.Span.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder setStyle(androidx.wear.tiles.builders.LayoutElementBuilders.SpannableStyle);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder setStyle(androidx.wear.tiles.builders.LayoutElementBuilders.SpannableStyle.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder setLineSpacing(androidx.wear.tiles.builders.DimensionBuilders.SpProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder setLineSpacing(androidx.wear.tiles.builders.DimensionBuilders.SpProp.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder setMaxLines(@IntRange(from=1) int);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder setMultilineAlignment(int);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder setOverflow(int);
}
- public static final class LayoutElementBuilders.SpannableStyle {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.SpannableStyle.Builder builder();
- }
-
- public static final class LayoutElementBuilders.SpannableStyle.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.SpannableStyle build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.SpannableStyle.Builder setMaxLines(@IntRange(from=0) int);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.SpannableStyle.Builder setMultilineAlignment(int);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.SpannableStyle.Builder setOverflow(int);
- }
-
- public static final class LayoutElementBuilders.Text implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement androidx.wear.tiles.builders.LayoutElementBuilders.Span {
+ public static final class LayoutElementBuilders.Text implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement {
method public static androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder builder();
}
- public static final class LayoutElementBuilders.Text.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder androidx.wear.tiles.builders.LayoutElementBuilders.Span.Builder {
+ public static final class LayoutElementBuilders.Text.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder {
method public androidx.wear.tiles.builders.LayoutElementBuilders.Text build();
method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setFontStyle(androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setFontStyle(androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder);
- method @Deprecated public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setStyle(androidx.wear.tiles.builders.LayoutElementBuilders.TextStyle);
- method @Deprecated public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setStyle(androidx.wear.tiles.builders.LayoutElementBuilders.TextStyle.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setLineHeight(androidx.wear.tiles.builders.DimensionBuilders.SpProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setLineHeight(androidx.wear.tiles.builders.DimensionBuilders.SpProp.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setMaxLines(@IntRange(from=1) int);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setMultilineAlignment(int);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setOverflow(int);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setText(String);
}
- public static final class LayoutElementBuilders.TextStyle {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.TextStyle.Builder builder();
+ public final class ModifiersBuilders {
}
- public static final class LayoutElementBuilders.TextStyle.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.TextStyle build();
- method @Deprecated public androidx.wear.tiles.builders.LayoutElementBuilders.TextStyle.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp);
- method @Deprecated public androidx.wear.tiles.builders.LayoutElementBuilders.TextStyle.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.TextStyle.Builder setMaxLines(@IntRange(from=0) int);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.TextStyle.Builder setMultilineAlignment(int);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.TextStyle.Builder setOverflow(int);
+ public static final class ModifiersBuilders.ArcModifiers {
+ method public static androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers.Builder builder();
+ }
+
+ public static final class ModifiersBuilders.ArcModifiers.Builder {
+ method public androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers build();
+ method public androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers.Builder setClickable(androidx.wear.tiles.builders.ModifiersBuilders.Clickable);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers.Builder setClickable(androidx.wear.tiles.builders.ModifiersBuilders.Clickable.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers.Builder setSemantics(androidx.wear.tiles.builders.ModifiersBuilders.Semantics);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers.Builder setSemantics(androidx.wear.tiles.builders.ModifiersBuilders.Semantics.Builder);
+ }
+
+ public static final class ModifiersBuilders.Background {
+ method public static androidx.wear.tiles.builders.ModifiersBuilders.Background.Builder builder();
+ }
+
+ public static final class ModifiersBuilders.Background.Builder {
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Background build();
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Background.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Background.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Background.Builder setCorner(androidx.wear.tiles.builders.ModifiersBuilders.Corner);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Background.Builder setCorner(androidx.wear.tiles.builders.ModifiersBuilders.Corner.Builder);
+ }
+
+ public static final class ModifiersBuilders.Border {
+ method public static androidx.wear.tiles.builders.ModifiersBuilders.Border.Builder builder();
+ }
+
+ public static final class ModifiersBuilders.Border.Builder {
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Border build();
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Border.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Border.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Border.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Border.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ }
+
+ public static final class ModifiersBuilders.Clickable {
+ method public static androidx.wear.tiles.builders.ModifiersBuilders.Clickable.Builder builder();
+ }
+
+ public static final class ModifiersBuilders.Clickable.Builder {
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Clickable build();
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Clickable.Builder setId(String);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Clickable.Builder setOnClick(androidx.wear.tiles.builders.ActionBuilders.Action);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Clickable.Builder setOnClick(androidx.wear.tiles.builders.ActionBuilders.Action.Builder);
+ }
+
+ public static final class ModifiersBuilders.Corner {
+ method public static androidx.wear.tiles.builders.ModifiersBuilders.Corner.Builder builder();
+ }
+
+ public static final class ModifiersBuilders.Corner.Builder {
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Corner build();
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Corner.Builder setRadius(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Corner.Builder setRadius(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ }
+
+ public static final class ModifiersBuilders.Modifiers {
+ method public static androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder builder();
+ }
+
+ public static final class ModifiersBuilders.Modifiers.Builder {
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers build();
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setBackground(androidx.wear.tiles.builders.ModifiersBuilders.Background);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setBackground(androidx.wear.tiles.builders.ModifiersBuilders.Background.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setBorder(androidx.wear.tiles.builders.ModifiersBuilders.Border);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setBorder(androidx.wear.tiles.builders.ModifiersBuilders.Border.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setClickable(androidx.wear.tiles.builders.ModifiersBuilders.Clickable);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setClickable(androidx.wear.tiles.builders.ModifiersBuilders.Clickable.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setPadding(androidx.wear.tiles.builders.ModifiersBuilders.Padding);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setPadding(androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setSemantics(androidx.wear.tiles.builders.ModifiersBuilders.Semantics);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setSemantics(androidx.wear.tiles.builders.ModifiersBuilders.Semantics.Builder);
+ }
+
+ public static final class ModifiersBuilders.Padding {
+ method public static androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder builder();
+ }
+
+ public static final class ModifiersBuilders.Padding.Builder {
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding build();
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder setBottom(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder setBottom(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder setEnd(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder setEnd(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder setRtlAware(boolean);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder setStart(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder setStart(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder setTop(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder setTop(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ }
+
+ public static final class ModifiersBuilders.Semantics {
+ method public static androidx.wear.tiles.builders.ModifiersBuilders.Semantics.Builder builder();
+ }
+
+ public static final class ModifiersBuilders.Semantics.Builder {
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Semantics build();
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Semantics.Builder setContentDescription(String);
+ }
+
+ public static final class ModifiersBuilders.SpanModifiers {
+ method public static androidx.wear.tiles.builders.ModifiersBuilders.SpanModifiers.Builder builder();
+ }
+
+ public static final class ModifiersBuilders.SpanModifiers.Builder {
+ method public androidx.wear.tiles.builders.ModifiersBuilders.SpanModifiers build();
+ method public androidx.wear.tiles.builders.ModifiersBuilders.SpanModifiers.Builder setClickable(androidx.wear.tiles.builders.ModifiersBuilders.Clickable);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.SpanModifiers.Builder setClickable(androidx.wear.tiles.builders.ModifiersBuilders.Clickable.Builder);
}
public final class ResourceBuilders {
@@ -529,6 +647,19 @@
method public androidx.wear.tiles.builders.ResourceBuilders.Resources.Builder setVersion(String);
}
+ public final class StateBuilders {
+ }
+
+ public static final class StateBuilders.State {
+ method public static androidx.wear.tiles.builders.StateBuilders.State.Builder builder();
+ method public String getLastClickableId();
+ }
+
+ public static final class StateBuilders.State.Builder {
+ method public androidx.wear.tiles.builders.StateBuilders.State build();
+ method public androidx.wear.tiles.builders.StateBuilders.State.Builder setLastClickableId(String);
+ }
+
public final class TileBuilders {
}
@@ -538,6 +669,7 @@
public static final class TileBuilders.Tile.Builder {
method public androidx.wear.tiles.builders.TileBuilders.Tile build();
+ method public androidx.wear.tiles.builders.TileBuilders.Tile.Builder setFreshnessIntervalMillis(long);
method public androidx.wear.tiles.builders.TileBuilders.Tile.Builder setResourcesVersion(String);
method public androidx.wear.tiles.builders.TileBuilders.Tile.Builder setTimeline(androidx.wear.tiles.builders.TimelineBuilders.Timeline);
method public androidx.wear.tiles.builders.TileBuilders.Tile.Builder setTimeline(androidx.wear.tiles.builders.TimelineBuilders.Timeline.Builder);
@@ -572,8 +704,8 @@
public static final class TimelineBuilders.TimelineEntry.Builder {
method public androidx.wear.tiles.builders.TimelineBuilders.TimelineEntry build();
- method public androidx.wear.tiles.builders.TimelineBuilders.TimelineEntry.Builder setContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement);
- method public androidx.wear.tiles.builders.TimelineBuilders.TimelineEntry.Builder setContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder);
+ method public androidx.wear.tiles.builders.TimelineBuilders.TimelineEntry.Builder setLayout(androidx.wear.tiles.builders.LayoutElementBuilders.Layout);
+ method public androidx.wear.tiles.builders.TimelineBuilders.TimelineEntry.Builder setLayout(androidx.wear.tiles.builders.LayoutElementBuilders.Layout.Builder);
method public androidx.wear.tiles.builders.TimelineBuilders.TimelineEntry.Builder setValidity(androidx.wear.tiles.builders.TimelineBuilders.TimeInterval);
method public androidx.wear.tiles.builders.TimelineBuilders.TimelineEntry.Builder setValidity(androidx.wear.tiles.builders.TimelineBuilders.TimeInterval.Builder);
}
@@ -598,17 +730,39 @@
method @Dimension(unit=androidx.annotation.Dimension.DP) public int getScreenWidthDp();
}
+ public class EventReaders {
+ }
+
+ public static class EventReaders.TileAddEvent {
+ method public int getTileId();
+ }
+
+ public static class EventReaders.TileEnterEvent {
+ method public int getTileId();
+ }
+
+ public static class EventReaders.TileLeaveEvent {
+ method public int getTileId();
+ }
+
+ public static class EventReaders.TileRemoveEvent {
+ method public int getTileId();
+ }
+
public class RequestReaders {
}
public static class RequestReaders.ResourcesRequest {
+ method public androidx.wear.tiles.readers.DeviceParametersReaders.DeviceParameters getDeviceParameters();
method public java.util.List<java.lang.String!> getResourceIds();
+ method public int getTileId();
method public String getVersion();
}
public static class RequestReaders.TileRequest {
- method public String getClickableId();
- method public androidx.wear.tiles.readers.DeviceParametersReaders.DeviceParameters? getDeviceParameters();
+ method public androidx.wear.tiles.readers.DeviceParametersReaders.DeviceParameters getDeviceParameters();
+ method public androidx.wear.tiles.builders.StateBuilders.State getState();
+ method public int getTileId();
}
}
diff --git a/wear/wear-tiles/api/restricted_current.txt b/wear/wear-tiles/api/restricted_current.txt
index 85c4a7f..1a6fc42 100644
--- a/wear/wear-tiles/api/restricted_current.txt
+++ b/wear/wear-tiles/api/restricted_current.txt
@@ -12,6 +12,10 @@
method public static androidx.wear.tiles.TileUpdateRequester getUpdater(android.content.Context);
method public android.os.IBinder? onBind(android.content.Intent);
method @MainThread protected abstract com.google.common.util.concurrent.ListenableFuture<androidx.wear.tiles.builders.ResourceBuilders.Resources!> onResourcesRequest(androidx.wear.tiles.readers.RequestReaders.ResourcesRequest);
+ method @MainThread protected void onTileAddEvent(androidx.wear.tiles.readers.EventReaders.TileAddEvent);
+ method @MainThread protected void onTileEnterEvent(androidx.wear.tiles.readers.EventReaders.TileEnterEvent);
+ method @MainThread protected void onTileLeaveEvent(androidx.wear.tiles.readers.EventReaders.TileLeaveEvent);
+ method @MainThread protected void onTileRemoveEvent(androidx.wear.tiles.readers.EventReaders.TileRemoveEvent);
method @MainThread protected abstract com.google.common.util.concurrent.ListenableFuture<androidx.wear.tiles.builders.TileBuilders.Tile!> onTileRequest(androidx.wear.tiles.readers.RequestReaders.TileRequest);
field public static final String ACTION_BIND_TILE_PROVIDER = "androidx.wear.tiles.action.BIND_TILE_PROVIDER";
field public static final String EXTRA_CLICKABLE_ID = "androidx.wear.tiles.extra.CLICKABLE_ID";
@@ -30,6 +34,7 @@
}
public static interface ActionBuilders.Action {
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.ActionProto.Action toActionProto();
}
public static interface ActionBuilders.Action.Builder {
@@ -38,6 +43,8 @@
public static final class ActionBuilders.AndroidActivity {
method public static androidx.wear.tiles.builders.ActionBuilders.AndroidActivity.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.ActionBuilders.AndroidActivity fromProto(androidx.wear.tiles.proto.ActionProto.AndroidActivity);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.ActionProto.AndroidActivity toProto();
}
public static final class ActionBuilders.AndroidActivity.Builder {
@@ -48,6 +55,8 @@
public static final class ActionBuilders.LaunchAction implements androidx.wear.tiles.builders.ActionBuilders.Action {
method public static androidx.wear.tiles.builders.ActionBuilders.LaunchAction.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.ActionBuilders.LaunchAction fromProto(androidx.wear.tiles.proto.ActionProto.LaunchAction);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.ActionProto.Action toActionProto();
}
public static final class ActionBuilders.LaunchAction.Builder implements androidx.wear.tiles.builders.ActionBuilders.Action.Builder {
@@ -58,10 +67,14 @@
public static final class ActionBuilders.LoadAction implements androidx.wear.tiles.builders.ActionBuilders.Action {
method public static androidx.wear.tiles.builders.ActionBuilders.LoadAction.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.ActionBuilders.LoadAction fromProto(androidx.wear.tiles.proto.ActionProto.LoadAction);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.ActionProto.Action toActionProto();
}
public static final class ActionBuilders.LoadAction.Builder implements androidx.wear.tiles.builders.ActionBuilders.Action.Builder {
method public androidx.wear.tiles.builders.ActionBuilders.LoadAction build();
+ method public androidx.wear.tiles.builders.ActionBuilders.LoadAction.Builder setRequestState(androidx.wear.tiles.builders.StateBuilders.State);
+ method public androidx.wear.tiles.builders.ActionBuilders.LoadAction.Builder setRequestState(androidx.wear.tiles.builders.StateBuilders.State.Builder);
}
public final class ColorBuilders {
@@ -70,6 +83,8 @@
public static final class ColorBuilders.ColorProp {
method public static androidx.wear.tiles.builders.ColorBuilders.ColorProp.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.ColorBuilders.ColorProp fromProto(androidx.wear.tiles.proto.ColorProto.ColorProp);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.ColorProto.ColorProp toProto();
}
public static final class ColorBuilders.ColorProp.Builder {
@@ -80,38 +95,60 @@
public final class DimensionBuilders {
method public static androidx.wear.tiles.builders.DimensionBuilders.DegreesProp degrees(float);
method public static androidx.wear.tiles.builders.DimensionBuilders.DpProp dp(@Dimension(unit=androidx.annotation.Dimension.DP) float);
+ method public static androidx.wear.tiles.builders.DimensionBuilders.EmProp em(int);
method public static androidx.wear.tiles.builders.DimensionBuilders.ExpandedDimensionProp expand();
method public static androidx.wear.tiles.builders.DimensionBuilders.SpProp sp(@Dimension(unit=androidx.annotation.Dimension.SP) int);
method public static androidx.wear.tiles.builders.DimensionBuilders.WrappedDimensionProp wrap();
}
public static interface DimensionBuilders.ContainerDimension {
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.DimensionProto.ContainerDimension toContainerDimensionProto();
}
public static interface DimensionBuilders.ContainerDimension.Builder {
method public androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension build();
}
- public static final class DimensionBuilders.DegreesProp implements androidx.wear.tiles.builders.DimensionBuilders.LinearOrAngularDimension {
+ public static final class DimensionBuilders.DegreesProp {
method public static androidx.wear.tiles.builders.DimensionBuilders.DegreesProp.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.DimensionBuilders.DegreesProp fromProto(androidx.wear.tiles.proto.DimensionProto.DegreesProp);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.DimensionProto.DegreesProp toProto();
}
- public static final class DimensionBuilders.DegreesProp.Builder implements androidx.wear.tiles.builders.DimensionBuilders.LinearOrAngularDimension.Builder {
+ public static final class DimensionBuilders.DegreesProp.Builder {
method public androidx.wear.tiles.builders.DimensionBuilders.DegreesProp build();
method public androidx.wear.tiles.builders.DimensionBuilders.DegreesProp.Builder setValue(float);
}
- public static final class DimensionBuilders.DpProp implements androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension androidx.wear.tiles.builders.DimensionBuilders.ImageDimension androidx.wear.tiles.builders.DimensionBuilders.LinearOrAngularDimension {
+ public static final class DimensionBuilders.DpProp implements androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension androidx.wear.tiles.builders.DimensionBuilders.ImageDimension androidx.wear.tiles.builders.DimensionBuilders.SpacerDimension {
method public static androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.DimensionBuilders.DpProp fromProto(androidx.wear.tiles.proto.DimensionProto.DpProp);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.DimensionProto.ContainerDimension toContainerDimensionProto();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.DimensionProto.ImageDimension toImageDimensionProto();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.DimensionProto.SpacerDimension toSpacerDimensionProto();
}
- public static final class DimensionBuilders.DpProp.Builder implements androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension.Builder androidx.wear.tiles.builders.DimensionBuilders.ImageDimension.Builder androidx.wear.tiles.builders.DimensionBuilders.LinearOrAngularDimension.Builder {
+ public static final class DimensionBuilders.DpProp.Builder implements androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension.Builder androidx.wear.tiles.builders.DimensionBuilders.ImageDimension.Builder androidx.wear.tiles.builders.DimensionBuilders.SpacerDimension.Builder {
method public androidx.wear.tiles.builders.DimensionBuilders.DpProp build();
method public androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder setValue(@Dimension(unit=androidx.annotation.Dimension.DP) float);
}
+ public static final class DimensionBuilders.EmProp {
+ method public static androidx.wear.tiles.builders.DimensionBuilders.EmProp.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.DimensionBuilders.EmProp fromProto(androidx.wear.tiles.proto.DimensionProto.EmProp);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.DimensionProto.EmProp toProto();
+ }
+
+ public static final class DimensionBuilders.EmProp.Builder {
+ method public androidx.wear.tiles.builders.DimensionBuilders.EmProp build();
+ method public androidx.wear.tiles.builders.DimensionBuilders.EmProp.Builder setValue(float);
+ }
+
public static final class DimensionBuilders.ExpandedDimensionProp implements androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension androidx.wear.tiles.builders.DimensionBuilders.ImageDimension {
method public static androidx.wear.tiles.builders.DimensionBuilders.ExpandedDimensionProp.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.DimensionBuilders.ExpandedDimensionProp fromProto(androidx.wear.tiles.proto.DimensionProto.ExpandedDimensionProp);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.DimensionProto.ContainerDimension toContainerDimensionProto();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.DimensionProto.ImageDimension toImageDimensionProto();
}
public static final class DimensionBuilders.ExpandedDimensionProp.Builder implements androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension.Builder androidx.wear.tiles.builders.DimensionBuilders.ImageDimension.Builder {
@@ -119,21 +156,17 @@
}
public static interface DimensionBuilders.ImageDimension {
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.DimensionProto.ImageDimension toImageDimensionProto();
}
public static interface DimensionBuilders.ImageDimension.Builder {
method public androidx.wear.tiles.builders.DimensionBuilders.ImageDimension build();
}
- public static interface DimensionBuilders.LinearOrAngularDimension {
- }
-
- public static interface DimensionBuilders.LinearOrAngularDimension.Builder {
- method public androidx.wear.tiles.builders.DimensionBuilders.LinearOrAngularDimension build();
- }
-
public static final class DimensionBuilders.ProportionalDimensionProp implements androidx.wear.tiles.builders.DimensionBuilders.ImageDimension {
method public static androidx.wear.tiles.builders.DimensionBuilders.ProportionalDimensionProp.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.DimensionBuilders.ProportionalDimensionProp fromProto(androidx.wear.tiles.proto.DimensionProto.ProportionalDimensionProp);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.DimensionProto.ImageDimension toImageDimensionProto();
}
public static final class DimensionBuilders.ProportionalDimensionProp.Builder implements androidx.wear.tiles.builders.DimensionBuilders.ImageDimension.Builder {
@@ -144,6 +177,8 @@
public static final class DimensionBuilders.SpProp {
method public static androidx.wear.tiles.builders.DimensionBuilders.SpProp.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.DimensionBuilders.SpProp fromProto(androidx.wear.tiles.proto.DimensionProto.SpProp);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.DimensionProto.SpProp toProto();
}
public static final class DimensionBuilders.SpProp.Builder {
@@ -151,8 +186,18 @@
method public androidx.wear.tiles.builders.DimensionBuilders.SpProp.Builder setValue(@Dimension(unit=androidx.annotation.Dimension.SP) int);
}
+ public static interface DimensionBuilders.SpacerDimension {
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.DimensionProto.SpacerDimension toSpacerDimensionProto();
+ }
+
+ public static interface DimensionBuilders.SpacerDimension.Builder {
+ method public androidx.wear.tiles.builders.DimensionBuilders.SpacerDimension build();
+ }
+
public static final class DimensionBuilders.WrappedDimensionProp implements androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension {
method public static androidx.wear.tiles.builders.DimensionBuilders.WrappedDimensionProp.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.DimensionBuilders.WrappedDimensionProp fromProto(androidx.wear.tiles.proto.DimensionProto.WrappedDimensionProp);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.DimensionProto.ContainerDimension toContainerDimensionProto();
}
public static final class DimensionBuilders.WrappedDimensionProp.Builder implements androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension.Builder {
@@ -192,48 +237,96 @@
public static final class LayoutElementBuilders.Arc implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement {
method public static androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.LayoutElementBuilders.Arc fromProto(androidx.wear.tiles.proto.LayoutElementProto.Arc);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.LayoutElementProto.LayoutElement toLayoutElementProto();
}
public static final class LayoutElementBuilders.Arc.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder addContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder addContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder addContent(androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder addContent(androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc build();
method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setAnchorAngle(androidx.wear.tiles.builders.DimensionBuilders.DegreesProp);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setAnchorAngle(androidx.wear.tiles.builders.DimensionBuilders.DegreesProp.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setAnchorType(int);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setLength(androidx.wear.tiles.builders.DimensionBuilders.DegreesProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setLength(androidx.wear.tiles.builders.DimensionBuilders.DegreesProp.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setRotateContents(boolean);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setThickness(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setThickness(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Arc.Builder setVerticalAlign(int);
}
- public static final class LayoutElementBuilders.Audible implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.Audible.Builder builder();
+ public static final class LayoutElementBuilders.ArcAdapter implements androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement {
+ method public static androidx.wear.tiles.builders.LayoutElementBuilders.ArcAdapter.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.LayoutElementBuilders.ArcAdapter fromProto(androidx.wear.tiles.proto.LayoutElementProto.ArcAdapter);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.LayoutElementProto.ArcLayoutElement toArcLayoutElementProto();
}
- public static final class LayoutElementBuilders.Audible.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Audible build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Audible.Builder setAccessibilityLabel(String);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Audible.Builder setContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Audible.Builder setContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder);
+ public static final class LayoutElementBuilders.ArcAdapter.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement.Builder {
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcAdapter build();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcAdapter.Builder setContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcAdapter.Builder setContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcAdapter.Builder setRotateContents(boolean);
}
- public static final class LayoutElementBuilders.Border {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.Border.Builder builder();
+ public static interface LayoutElementBuilders.ArcLayoutElement {
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.LayoutElementProto.ArcLayoutElement toArcLayoutElementProto();
}
- public static final class LayoutElementBuilders.Border.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Border build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Border.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Border.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Border.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Border.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ public static interface LayoutElementBuilders.ArcLayoutElement.Builder {
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement build();
+ }
+
+ public static final class LayoutElementBuilders.ArcLine implements androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement {
+ method public static androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine fromProto(androidx.wear.tiles.proto.LayoutElementProto.ArcLine);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.LayoutElementProto.ArcLayoutElement toArcLayoutElementProto();
+ }
+
+ public static final class LayoutElementBuilders.ArcLine.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement.Builder {
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine build();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine.Builder setLength(androidx.wear.tiles.builders.DimensionBuilders.DegreesProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine.Builder setLength(androidx.wear.tiles.builders.DimensionBuilders.DegreesProp.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine.Builder setThickness(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcLine.Builder setThickness(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ }
+
+ public static final class LayoutElementBuilders.ArcSpacer implements androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement {
+ method public static androidx.wear.tiles.builders.LayoutElementBuilders.ArcSpacer.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.LayoutElementBuilders.ArcSpacer fromProto(androidx.wear.tiles.proto.LayoutElementProto.ArcSpacer);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.LayoutElementProto.ArcLayoutElement toArcLayoutElementProto();
+ }
+
+ public static final class LayoutElementBuilders.ArcSpacer.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement.Builder {
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcSpacer build();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcSpacer.Builder setLength(androidx.wear.tiles.builders.DimensionBuilders.DegreesProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcSpacer.Builder setLength(androidx.wear.tiles.builders.DimensionBuilders.DegreesProp.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcSpacer.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcSpacer.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcSpacer.Builder setThickness(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcSpacer.Builder setThickness(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ }
+
+ public static final class LayoutElementBuilders.ArcText implements androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement {
+ method public static androidx.wear.tiles.builders.LayoutElementBuilders.ArcText.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.LayoutElementBuilders.ArcText fromProto(androidx.wear.tiles.proto.LayoutElementProto.ArcText);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.LayoutElementProto.ArcLayoutElement toArcLayoutElementProto();
+ }
+
+ public static final class LayoutElementBuilders.ArcText.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.ArcLayoutElement.Builder {
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcText build();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcText.Builder setFontStyle(androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcText.Builder setFontStyle(androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcText.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcText.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.ArcText.Builder setText(String);
}
public static final class LayoutElementBuilders.Box implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement {
method public static androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.LayoutElementBuilders.Box fromProto(androidx.wear.tiles.proto.LayoutElementProto.Box);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.LayoutElementProto.LayoutElement toLayoutElementProto();
}
public static final class LayoutElementBuilders.Box.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder {
@@ -243,44 +336,17 @@
method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setHorizontalAlignment(int);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setStyle(androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setStyle(androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setVerticalAlignment(int);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Box.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension.Builder);
}
- public static final class LayoutElementBuilders.BoxStyle {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder builder();
- }
-
- public static final class LayoutElementBuilders.BoxStyle.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder setBackgroundColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder setBackgroundColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder setBorder(androidx.wear.tiles.builders.LayoutElementBuilders.Border);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder setBorder(androidx.wear.tiles.builders.LayoutElementBuilders.Border.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder setCorner(androidx.wear.tiles.builders.LayoutElementBuilders.Corner);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder setCorner(androidx.wear.tiles.builders.LayoutElementBuilders.Corner.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder setPadding(androidx.wear.tiles.builders.LayoutElementBuilders.Padding);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.BoxStyle.Builder setPadding(androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder);
- }
-
- public static final class LayoutElementBuilders.Clickable implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.Clickable.Builder builder();
- }
-
- public static final class LayoutElementBuilders.Clickable.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Clickable build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Clickable.Builder setContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Clickable.Builder setContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Clickable.Builder setId(String);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Clickable.Builder setOnClick(androidx.wear.tiles.builders.ActionBuilders.Action);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Clickable.Builder setOnClick(androidx.wear.tiles.builders.ActionBuilders.Action.Builder);
- }
-
public static final class LayoutElementBuilders.Column implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement {
method public static androidx.wear.tiles.builders.LayoutElementBuilders.Column.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.LayoutElementBuilders.Column fromProto(androidx.wear.tiles.proto.LayoutElementProto.Column);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.LayoutElementProto.LayoutElement toLayoutElementProto();
}
public static final class LayoutElementBuilders.Column.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder {
@@ -290,30 +356,25 @@
method public androidx.wear.tiles.builders.LayoutElementBuilders.Column.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Column.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Column.Builder setHorizontalAlignment(int);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Column.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Column.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Column.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Column.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension.Builder);
}
- public static final class LayoutElementBuilders.Corner {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.Corner.Builder builder();
- }
-
- public static final class LayoutElementBuilders.Corner.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Corner build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Corner.Builder setRadius(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Corner.Builder setRadius(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
- }
-
public static final class LayoutElementBuilders.FontStyle {
method public static androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle fromProto(androidx.wear.tiles.proto.LayoutElementProto.FontStyle);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.LayoutElementProto.FontStyle toProto();
}
public static final class LayoutElementBuilders.FontStyle.Builder {
method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle build();
- method @Deprecated public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder setBold(boolean);
method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp);
method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder setItalic(boolean);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder setLetterSpacing(androidx.wear.tiles.builders.DimensionBuilders.EmProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder setLetterSpacing(androidx.wear.tiles.builders.DimensionBuilders.EmProp.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder setSize(androidx.wear.tiles.builders.DimensionBuilders.SpProp);
method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder setSize(androidx.wear.tiles.builders.DimensionBuilders.SpProp.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder setUnderline(boolean);
@@ -321,22 +382,24 @@
}
public static class LayoutElementBuilders.FontStyles {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle body1();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle body2();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle button();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle caption1();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle caption2();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle display1();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle display2();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle display3();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle title1();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle title2();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle title3();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder body1();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder body2();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder button();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder caption1();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder caption2();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder display1();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder display2();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder display3();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder title1();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder title2();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder title3();
method public static androidx.wear.tiles.builders.LayoutElementBuilders.FontStyles withDeviceParameters(androidx.wear.tiles.readers.DeviceParametersReaders.DeviceParameters);
}
public static final class LayoutElementBuilders.Image implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement {
method public static androidx.wear.tiles.builders.LayoutElementBuilders.Image.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.LayoutElementBuilders.Image fromProto(androidx.wear.tiles.proto.LayoutElementProto.Image);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.LayoutElementProto.LayoutElement toLayoutElementProto();
}
public static final class LayoutElementBuilders.Image.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder {
@@ -344,61 +407,37 @@
method public androidx.wear.tiles.builders.LayoutElementBuilders.Image.Builder setContentScaleMode(int);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Image.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.ImageDimension);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Image.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.ImageDimension.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Image.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Image.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Image.Builder setResourceId(String);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Image.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.ImageDimension);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Image.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.ImageDimension.Builder);
}
+ public static final class LayoutElementBuilders.Layout {
+ method public static androidx.wear.tiles.builders.LayoutElementBuilders.Layout.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.LayoutElementBuilders.Layout fromProto(androidx.wear.tiles.proto.LayoutElementProto.Layout);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.LayoutElementProto.Layout toProto();
+ }
+
+ public static final class LayoutElementBuilders.Layout.Builder {
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Layout build();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Layout.Builder setRoot(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Layout.Builder setRoot(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder);
+ }
+
public static interface LayoutElementBuilders.LayoutElement {
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.LayoutElementProto.LayoutElement toLayoutElementProto();
}
public static interface LayoutElementBuilders.LayoutElement.Builder {
method public androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement build();
}
- public static final class LayoutElementBuilders.Line implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.Line.Builder builder();
- }
-
- public static final class LayoutElementBuilders.Line.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Line build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Line.Builder setLength(androidx.wear.tiles.builders.DimensionBuilders.LinearOrAngularDimension);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Line.Builder setLength(androidx.wear.tiles.builders.DimensionBuilders.LinearOrAngularDimension.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Line.Builder setStyle(androidx.wear.tiles.builders.LayoutElementBuilders.LineStyle);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Line.Builder setStyle(androidx.wear.tiles.builders.LayoutElementBuilders.LineStyle.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Line.Builder setThickness(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Line.Builder setThickness(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
- }
-
- public static final class LayoutElementBuilders.LineStyle {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.LineStyle.Builder builder();
- }
-
- public static final class LayoutElementBuilders.LineStyle.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.LineStyle build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.LineStyle.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.LineStyle.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp.Builder);
- }
-
- public static final class LayoutElementBuilders.Padding {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder builder();
- }
-
- public static final class LayoutElementBuilders.Padding.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder setBottom(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder setBottom(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder setEnd(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder setEnd(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder setRtlAware(boolean);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder setStart(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder setStart(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder setTop(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Padding.Builder setTop(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
- }
-
public static final class LayoutElementBuilders.Row implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement {
method public static androidx.wear.tiles.builders.LayoutElementBuilders.Row.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.LayoutElementBuilders.Row fromProto(androidx.wear.tiles.proto.LayoutElementProto.Row);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.LayoutElementProto.LayoutElement toLayoutElementProto();
}
public static final class LayoutElementBuilders.Row.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder {
@@ -407,6 +446,8 @@
method public androidx.wear.tiles.builders.LayoutElementBuilders.Row build();
method public androidx.wear.tiles.builders.LayoutElementBuilders.Row.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Row.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Row.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Row.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Row.Builder setVerticalAlignment(int);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Row.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Row.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension.Builder);
@@ -414,70 +455,229 @@
public static final class LayoutElementBuilders.Spacer implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement {
method public static androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.LayoutElementBuilders.Spacer fromProto(androidx.wear.tiles.proto.LayoutElementProto.Spacer);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.LayoutElementProto.LayoutElement toLayoutElementProto();
}
public static final class LayoutElementBuilders.Spacer.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder {
method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.LinearOrAngularDimension);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.LinearOrAngularDimension.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.SpacerDimension);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.SpacerDimension.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.SpacerDimension);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spacer.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.SpacerDimension.Builder);
}
public static interface LayoutElementBuilders.Span {
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.LayoutElementProto.Span toSpanProto();
}
public static interface LayoutElementBuilders.Span.Builder {
method public androidx.wear.tiles.builders.LayoutElementBuilders.Span build();
}
+ public static final class LayoutElementBuilders.SpanImage implements androidx.wear.tiles.builders.LayoutElementBuilders.Span {
+ method public static androidx.wear.tiles.builders.LayoutElementBuilders.SpanImage.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.LayoutElementBuilders.SpanImage fromProto(androidx.wear.tiles.proto.LayoutElementProto.SpanImage);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.LayoutElementProto.Span toSpanProto();
+ }
+
+ public static final class LayoutElementBuilders.SpanImage.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.Span.Builder {
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanImage build();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanImage.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanImage.Builder setHeight(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanImage.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.SpanModifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanImage.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.SpanModifiers.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanImage.Builder setResourceId(String);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanImage.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanImage.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ }
+
+ public static final class LayoutElementBuilders.SpanText implements androidx.wear.tiles.builders.LayoutElementBuilders.Span {
+ method public static androidx.wear.tiles.builders.LayoutElementBuilders.SpanText.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.LayoutElementBuilders.SpanText fromProto(androidx.wear.tiles.proto.LayoutElementProto.SpanText);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.LayoutElementProto.Span toSpanProto();
+ }
+
+ public static final class LayoutElementBuilders.SpanText.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.Span.Builder {
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanText build();
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanText.Builder setFontStyle(androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanText.Builder setFontStyle(androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanText.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.SpanModifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanText.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.SpanModifiers.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.SpanText.Builder setText(String);
+ }
+
public static final class LayoutElementBuilders.Spannable implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement {
method public static androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.LayoutElementBuilders.Spannable fromProto(androidx.wear.tiles.proto.LayoutElementProto.Spannable);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.LayoutElementProto.LayoutElement toLayoutElementProto();
}
public static final class LayoutElementBuilders.Spannable.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder {
method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder addSpan(androidx.wear.tiles.builders.LayoutElementBuilders.Span);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder addSpan(androidx.wear.tiles.builders.LayoutElementBuilders.Span.Builder);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder setStyle(androidx.wear.tiles.builders.LayoutElementBuilders.SpannableStyle);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder setStyle(androidx.wear.tiles.builders.LayoutElementBuilders.SpannableStyle.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder setLineSpacing(androidx.wear.tiles.builders.DimensionBuilders.SpProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder setLineSpacing(androidx.wear.tiles.builders.DimensionBuilders.SpProp.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder setMaxLines(@IntRange(from=1) int);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder setMultilineAlignment(int);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Spannable.Builder setOverflow(int);
}
- public static final class LayoutElementBuilders.SpannableStyle {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.SpannableStyle.Builder builder();
- }
-
- public static final class LayoutElementBuilders.SpannableStyle.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.SpannableStyle build();
- method public androidx.wear.tiles.builders.LayoutElementBuilders.SpannableStyle.Builder setMaxLines(@IntRange(from=0) int);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.SpannableStyle.Builder setMultilineAlignment(int);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.SpannableStyle.Builder setOverflow(int);
- }
-
- public static final class LayoutElementBuilders.Text implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement androidx.wear.tiles.builders.LayoutElementBuilders.Span {
+ public static final class LayoutElementBuilders.Text implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement {
method public static androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.LayoutElementBuilders.Text fromProto(androidx.wear.tiles.proto.LayoutElementProto.Text);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.LayoutElementProto.LayoutElement toLayoutElementProto();
}
- public static final class LayoutElementBuilders.Text.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder androidx.wear.tiles.builders.LayoutElementBuilders.Span.Builder {
+ public static final class LayoutElementBuilders.Text.Builder implements androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder {
method public androidx.wear.tiles.builders.LayoutElementBuilders.Text build();
method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setFontStyle(androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setFontStyle(androidx.wear.tiles.builders.LayoutElementBuilders.FontStyle.Builder);
- method @Deprecated public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setStyle(androidx.wear.tiles.builders.LayoutElementBuilders.TextStyle);
- method @Deprecated public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setStyle(androidx.wear.tiles.builders.LayoutElementBuilders.TextStyle.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setLineHeight(androidx.wear.tiles.builders.DimensionBuilders.SpProp);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setLineHeight(androidx.wear.tiles.builders.DimensionBuilders.SpProp.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setMaxLines(@IntRange(from=1) int);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setModifiers(androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setMultilineAlignment(int);
+ method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setOverflow(int);
method public androidx.wear.tiles.builders.LayoutElementBuilders.Text.Builder setText(String);
}
- public static final class LayoutElementBuilders.TextStyle {
- method public static androidx.wear.tiles.builders.LayoutElementBuilders.TextStyle.Builder builder();
+ public final class ModifiersBuilders {
}
- public static final class LayoutElementBuilders.TextStyle.Builder {
- method public androidx.wear.tiles.builders.LayoutElementBuilders.TextStyle build();
- method @Deprecated public androidx.wear.tiles.builders.LayoutElementBuilders.TextStyle.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp);
- method @Deprecated public androidx.wear.tiles.builders.LayoutElementBuilders.TextStyle.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp.Builder);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.TextStyle.Builder setMaxLines(@IntRange(from=0) int);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.TextStyle.Builder setMultilineAlignment(int);
- method public androidx.wear.tiles.builders.LayoutElementBuilders.TextStyle.Builder setOverflow(int);
+ public static final class ModifiersBuilders.ArcModifiers {
+ method public static androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers fromProto(androidx.wear.tiles.proto.ModifiersProto.ArcModifiers);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.ModifiersProto.ArcModifiers toProto();
+ }
+
+ public static final class ModifiersBuilders.ArcModifiers.Builder {
+ method public androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers build();
+ method public androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers.Builder setClickable(androidx.wear.tiles.builders.ModifiersBuilders.Clickable);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers.Builder setClickable(androidx.wear.tiles.builders.ModifiersBuilders.Clickable.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers.Builder setSemantics(androidx.wear.tiles.builders.ModifiersBuilders.Semantics);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers.Builder setSemantics(androidx.wear.tiles.builders.ModifiersBuilders.Semantics.Builder);
+ }
+
+ public static final class ModifiersBuilders.Background {
+ method public static androidx.wear.tiles.builders.ModifiersBuilders.Background.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.ModifiersBuilders.Background fromProto(androidx.wear.tiles.proto.ModifiersProto.Background);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.ModifiersProto.Background toProto();
+ }
+
+ public static final class ModifiersBuilders.Background.Builder {
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Background build();
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Background.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Background.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Background.Builder setCorner(androidx.wear.tiles.builders.ModifiersBuilders.Corner);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Background.Builder setCorner(androidx.wear.tiles.builders.ModifiersBuilders.Corner.Builder);
+ }
+
+ public static final class ModifiersBuilders.Border {
+ method public static androidx.wear.tiles.builders.ModifiersBuilders.Border.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.ModifiersBuilders.Border fromProto(androidx.wear.tiles.proto.ModifiersProto.Border);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.ModifiersProto.Border toProto();
+ }
+
+ public static final class ModifiersBuilders.Border.Builder {
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Border build();
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Border.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Border.Builder setColor(androidx.wear.tiles.builders.ColorBuilders.ColorProp.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Border.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Border.Builder setWidth(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ }
+
+ public static final class ModifiersBuilders.Clickable {
+ method public static androidx.wear.tiles.builders.ModifiersBuilders.Clickable.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.ModifiersBuilders.Clickable fromProto(androidx.wear.tiles.proto.ModifiersProto.Clickable);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.ModifiersProto.Clickable toProto();
+ }
+
+ public static final class ModifiersBuilders.Clickable.Builder {
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Clickable build();
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Clickable.Builder setId(String);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Clickable.Builder setOnClick(androidx.wear.tiles.builders.ActionBuilders.Action);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Clickable.Builder setOnClick(androidx.wear.tiles.builders.ActionBuilders.Action.Builder);
+ }
+
+ public static final class ModifiersBuilders.Corner {
+ method public static androidx.wear.tiles.builders.ModifiersBuilders.Corner.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.ModifiersBuilders.Corner fromProto(androidx.wear.tiles.proto.ModifiersProto.Corner);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.ModifiersProto.Corner toProto();
+ }
+
+ public static final class ModifiersBuilders.Corner.Builder {
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Corner build();
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Corner.Builder setRadius(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Corner.Builder setRadius(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ }
+
+ public static final class ModifiersBuilders.Modifiers {
+ method public static androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.ModifiersBuilders.Modifiers fromProto(androidx.wear.tiles.proto.ModifiersProto.Modifiers);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.ModifiersProto.Modifiers toProto();
+ }
+
+ public static final class ModifiersBuilders.Modifiers.Builder {
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers build();
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setBackground(androidx.wear.tiles.builders.ModifiersBuilders.Background);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setBackground(androidx.wear.tiles.builders.ModifiersBuilders.Background.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setBorder(androidx.wear.tiles.builders.ModifiersBuilders.Border);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setBorder(androidx.wear.tiles.builders.ModifiersBuilders.Border.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setClickable(androidx.wear.tiles.builders.ModifiersBuilders.Clickable);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setClickable(androidx.wear.tiles.builders.ModifiersBuilders.Clickable.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setPadding(androidx.wear.tiles.builders.ModifiersBuilders.Padding);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setPadding(androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setSemantics(androidx.wear.tiles.builders.ModifiersBuilders.Semantics);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Modifiers.Builder setSemantics(androidx.wear.tiles.builders.ModifiersBuilders.Semantics.Builder);
+ }
+
+ public static final class ModifiersBuilders.Padding {
+ method public static androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.ModifiersBuilders.Padding fromProto(androidx.wear.tiles.proto.ModifiersProto.Padding);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.ModifiersProto.Padding toProto();
+ }
+
+ public static final class ModifiersBuilders.Padding.Builder {
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding build();
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder setBottom(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder setBottom(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder setEnd(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder setEnd(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder setRtlAware(boolean);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder setStart(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder setStart(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder setTop(androidx.wear.tiles.builders.DimensionBuilders.DpProp);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Padding.Builder setTop(androidx.wear.tiles.builders.DimensionBuilders.DpProp.Builder);
+ }
+
+ public static final class ModifiersBuilders.Semantics {
+ method public static androidx.wear.tiles.builders.ModifiersBuilders.Semantics.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.ModifiersBuilders.Semantics fromProto(androidx.wear.tiles.proto.ModifiersProto.Semantics);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.ModifiersProto.Semantics toProto();
+ }
+
+ public static final class ModifiersBuilders.Semantics.Builder {
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Semantics build();
+ method public androidx.wear.tiles.builders.ModifiersBuilders.Semantics.Builder setContentDescription(String);
+ }
+
+ public static final class ModifiersBuilders.SpanModifiers {
+ method public static androidx.wear.tiles.builders.ModifiersBuilders.SpanModifiers.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.ModifiersBuilders.SpanModifiers fromProto(androidx.wear.tiles.proto.ModifiersProto.SpanModifiers);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.ModifiersProto.SpanModifiers toProto();
+ }
+
+ public static final class ModifiersBuilders.SpanModifiers.Builder {
+ method public androidx.wear.tiles.builders.ModifiersBuilders.SpanModifiers build();
+ method public androidx.wear.tiles.builders.ModifiersBuilders.SpanModifiers.Builder setClickable(androidx.wear.tiles.builders.ModifiersBuilders.Clickable);
+ method public androidx.wear.tiles.builders.ModifiersBuilders.SpanModifiers.Builder setClickable(androidx.wear.tiles.builders.ModifiersBuilders.Clickable.Builder);
}
public final class ResourceBuilders {
@@ -487,6 +687,8 @@
public static final class ResourceBuilders.AndroidImageResourceByResId {
method public static androidx.wear.tiles.builders.ResourceBuilders.AndroidImageResourceByResId.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.ResourceBuilders.AndroidImageResourceByResId fromProto(androidx.wear.tiles.proto.ResourceProto.AndroidImageResourceByResId);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.ResourceProto.AndroidImageResourceByResId toProto();
}
public static final class ResourceBuilders.AndroidImageResourceByResId.Builder {
@@ -496,6 +698,8 @@
public static final class ResourceBuilders.ImageResource {
method public static androidx.wear.tiles.builders.ResourceBuilders.ImageResource.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.ResourceBuilders.ImageResource fromProto(androidx.wear.tiles.proto.ResourceProto.ImageResource);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.ResourceProto.ImageResource toProto();
}
public static final class ResourceBuilders.ImageResource.Builder {
@@ -508,6 +712,8 @@
public static final class ResourceBuilders.InlineImageResource {
method public static androidx.wear.tiles.builders.ResourceBuilders.InlineImageResource.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.ResourceBuilders.InlineImageResource fromProto(androidx.wear.tiles.proto.ResourceProto.InlineImageResource);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.ResourceProto.InlineImageResource toProto();
}
public static final class ResourceBuilders.InlineImageResource.Builder {
@@ -520,6 +726,8 @@
public static final class ResourceBuilders.Resources {
method public static androidx.wear.tiles.builders.ResourceBuilders.Resources.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.ResourceBuilders.Resources fromProto(androidx.wear.tiles.proto.ResourceProto.Resources);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.ResourceProto.Resources toProto();
}
public static final class ResourceBuilders.Resources.Builder {
@@ -529,15 +737,33 @@
method public androidx.wear.tiles.builders.ResourceBuilders.Resources.Builder setVersion(String);
}
+ public final class StateBuilders {
+ }
+
+ public static final class StateBuilders.State {
+ method public static androidx.wear.tiles.builders.StateBuilders.State.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.StateBuilders.State fromProto(androidx.wear.tiles.proto.StateProto.State);
+ method public String getLastClickableId();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.StateProto.State toProto();
+ }
+
+ public static final class StateBuilders.State.Builder {
+ method public androidx.wear.tiles.builders.StateBuilders.State build();
+ method public androidx.wear.tiles.builders.StateBuilders.State.Builder setLastClickableId(String);
+ }
+
public final class TileBuilders {
}
public static final class TileBuilders.Tile {
method public static androidx.wear.tiles.builders.TileBuilders.Tile.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.TileBuilders.Tile fromProto(androidx.wear.tiles.proto.TileProto.Tile);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.TileProto.Tile toProto();
}
public static final class TileBuilders.Tile.Builder {
method public androidx.wear.tiles.builders.TileBuilders.Tile build();
+ method public androidx.wear.tiles.builders.TileBuilders.Tile.Builder setFreshnessIntervalMillis(long);
method public androidx.wear.tiles.builders.TileBuilders.Tile.Builder setResourcesVersion(String);
method public androidx.wear.tiles.builders.TileBuilders.Tile.Builder setTimeline(androidx.wear.tiles.builders.TimelineBuilders.Timeline);
method public androidx.wear.tiles.builders.TileBuilders.Tile.Builder setTimeline(androidx.wear.tiles.builders.TimelineBuilders.Timeline.Builder);
@@ -548,6 +774,8 @@
public static final class TimelineBuilders.TimeInterval {
method public static androidx.wear.tiles.builders.TimelineBuilders.TimeInterval.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.TimelineBuilders.TimeInterval fromProto(androidx.wear.tiles.proto.TimelineProto.TimeInterval);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.TimelineProto.TimeInterval toProto();
}
public static final class TimelineBuilders.TimeInterval.Builder {
@@ -558,6 +786,8 @@
public static final class TimelineBuilders.Timeline {
method public static androidx.wear.tiles.builders.TimelineBuilders.Timeline.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.TimelineBuilders.Timeline fromProto(androidx.wear.tiles.proto.TimelineProto.Timeline);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.TimelineProto.Timeline toProto();
}
public static final class TimelineBuilders.Timeline.Builder {
@@ -568,12 +798,14 @@
public static final class TimelineBuilders.TimelineEntry {
method public static androidx.wear.tiles.builders.TimelineBuilders.TimelineEntry.Builder builder();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public static androidx.wear.tiles.builders.TimelineBuilders.TimelineEntry fromProto(androidx.wear.tiles.proto.TimelineProto.TimelineEntry);
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP) public androidx.wear.tiles.proto.TimelineProto.TimelineEntry toProto();
}
public static final class TimelineBuilders.TimelineEntry.Builder {
method public androidx.wear.tiles.builders.TimelineBuilders.TimelineEntry build();
- method public androidx.wear.tiles.builders.TimelineBuilders.TimelineEntry.Builder setContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement);
- method public androidx.wear.tiles.builders.TimelineBuilders.TimelineEntry.Builder setContent(androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement.Builder);
+ method public androidx.wear.tiles.builders.TimelineBuilders.TimelineEntry.Builder setLayout(androidx.wear.tiles.builders.LayoutElementBuilders.Layout);
+ method public androidx.wear.tiles.builders.TimelineBuilders.TimelineEntry.Builder setLayout(androidx.wear.tiles.builders.LayoutElementBuilders.Layout.Builder);
method public androidx.wear.tiles.builders.TimelineBuilders.TimelineEntry.Builder setValidity(androidx.wear.tiles.builders.TimelineBuilders.TimeInterval);
method public androidx.wear.tiles.builders.TimelineBuilders.TimelineEntry.Builder setValidity(androidx.wear.tiles.builders.TimelineBuilders.TimeInterval.Builder);
}
@@ -598,17 +830,39 @@
method @Dimension(unit=androidx.annotation.Dimension.DP) public int getScreenWidthDp();
}
+ public class EventReaders {
+ }
+
+ public static class EventReaders.TileAddEvent {
+ method public int getTileId();
+ }
+
+ public static class EventReaders.TileEnterEvent {
+ method public int getTileId();
+ }
+
+ public static class EventReaders.TileLeaveEvent {
+ method public int getTileId();
+ }
+
+ public static class EventReaders.TileRemoveEvent {
+ method public int getTileId();
+ }
+
public class RequestReaders {
}
public static class RequestReaders.ResourcesRequest {
+ method public androidx.wear.tiles.readers.DeviceParametersReaders.DeviceParameters getDeviceParameters();
method public java.util.List<java.lang.String!> getResourceIds();
+ method public int getTileId();
method public String getVersion();
}
public static class RequestReaders.TileRequest {
- method public String getClickableId();
- method public androidx.wear.tiles.readers.DeviceParametersReaders.DeviceParameters? getDeviceParameters();
+ method public androidx.wear.tiles.readers.DeviceParametersReaders.DeviceParameters getDeviceParameters();
+ method public androidx.wear.tiles.builders.StateBuilders.State getState();
+ method public int getTileId();
}
}
diff --git a/wear/wear-tiles/src/main/aidl/androidx/wear/tiles/ResourcesCallback.aidl b/wear/wear-tiles/src/main/aidl/androidx/wear/tiles/ResourcesCallback.aidl
index 468a4e6..e247877 100644
--- a/wear/wear-tiles/src/main/aidl/androidx/wear/tiles/ResourcesCallback.aidl
+++ b/wear/wear-tiles/src/main/aidl/androidx/wear/tiles/ResourcesCallback.aidl
@@ -25,6 +25,7 @@
* by standard proto version compatibility in the underlying payload. Any significant changes to
* this interface will be handled by instead adding new calls into TileProvider.
*
+ *
* @hide
*/
interface ResourcesCallback {
diff --git a/wear/wear-tiles/src/main/aidl/androidx/wear/tiles/TileAddEventData.aidl b/wear/wear-tiles/src/main/aidl/androidx/wear/tiles/TileAddEventData.aidl
new file mode 100644
index 0000000..4afe068
--- /dev/null
+++ b/wear/wear-tiles/src/main/aidl/androidx/wear/tiles/TileAddEventData.aidl
@@ -0,0 +1,19 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.wear.tiles;
+
+parcelable TileAddEventData;
diff --git a/wear/wear-tiles/src/main/aidl/androidx/wear/tiles/TileCallback.aidl b/wear/wear-tiles/src/main/aidl/androidx/wear/tiles/TileCallback.aidl
index 19414da..f7aff63 100644
--- a/wear/wear-tiles/src/main/aidl/androidx/wear/tiles/TileCallback.aidl
+++ b/wear/wear-tiles/src/main/aidl/androidx/wear/tiles/TileCallback.aidl
@@ -25,6 +25,7 @@
* by standard proto version compatibility in the underlying payload. Any significant changes to
* this interface will be handled by instead adding new calls into TileProvider.
*
+ *
* @hide
*/
interface TileCallback {
diff --git a/wear/wear-tiles/src/main/aidl/androidx/wear/tiles/TileEnterEventData.aidl b/wear/wear-tiles/src/main/aidl/androidx/wear/tiles/TileEnterEventData.aidl
new file mode 100644
index 0000000..6321342
--- /dev/null
+++ b/wear/wear-tiles/src/main/aidl/androidx/wear/tiles/TileEnterEventData.aidl
@@ -0,0 +1,19 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.wear.tiles;
+
+parcelable TileEnterEventData;
diff --git a/wear/wear-tiles/src/main/aidl/androidx/wear/tiles/TileLeaveEventData.aidl b/wear/wear-tiles/src/main/aidl/androidx/wear/tiles/TileLeaveEventData.aidl
new file mode 100644
index 0000000..4c16f91
--- /dev/null
+++ b/wear/wear-tiles/src/main/aidl/androidx/wear/tiles/TileLeaveEventData.aidl
@@ -0,0 +1,19 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.wear.tiles;
+
+parcelable TileLeaveEventData;
diff --git a/wear/wear-tiles/src/main/aidl/androidx/wear/tiles/TileProvider.aidl b/wear/wear-tiles/src/main/aidl/androidx/wear/tiles/TileProvider.aidl
index 8fe1393..a1b3967 100644
--- a/wear/wear-tiles/src/main/aidl/androidx/wear/tiles/TileProvider.aidl
+++ b/wear/wear-tiles/src/main/aidl/androidx/wear/tiles/TileProvider.aidl
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 The Android Open Source Project
+ * Copyright 2021 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,7 +18,11 @@
import android.widget.RemoteViews;
import androidx.wear.tiles.TileCallback;
+import androidx.wear.tiles.TileAddEventData;
+import androidx.wear.tiles.TileEnterEventData;
+import androidx.wear.tiles.TileLeaveEventData;
import androidx.wear.tiles.TileRequestData;
+import androidx.wear.tiles.TileRemoveEventData;
import androidx.wear.tiles.ResourcesCallback;
import androidx.wear.tiles.ResourcesRequestData;
@@ -66,12 +70,26 @@
*
* @since version 1
*/
- oneway void onTileAdd(int id) = 3;
+ oneway void onTileAddEvent(in TileAddEventData requestData) = 5;
/**
* Called when the Tile is removed from the carousel.
*
* @since version 1
*/
- oneway void onTileRemove(int id) = 4;
+ oneway void onTileRemoveEvent(in TileRemoveEventData requestData) = 6;
+
+ /**
+ * Called when the Tile is entered (i.e. the user browses to it).
+ *
+ * @since version 1
+ */
+ oneway void onTileEnterEvent(in TileEnterEventData requestData) = 7;
+
+ /**
+ * Called when the Tile is left (i.e. the user browses away from it).
+ *
+ * @since version 1
+ */
+ oneway void onTileLeaveEvent(in TileLeaveEventData requestData) = 8;
}
diff --git a/wear/wear-tiles/src/main/aidl/androidx/wear/tiles/TileRemoveEventData.aidl b/wear/wear-tiles/src/main/aidl/androidx/wear/tiles/TileRemoveEventData.aidl
new file mode 100644
index 0000000..4590657
--- /dev/null
+++ b/wear/wear-tiles/src/main/aidl/androidx/wear/tiles/TileRemoveEventData.aidl
@@ -0,0 +1,19 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.wear.tiles;
+
+parcelable TileRemoveEventData;
diff --git a/wear/wear-tiles/src/main/java/androidx/wear/tiles/SysUiTileUpdateRequester.java b/wear/wear-tiles/src/main/java/androidx/wear/tiles/SysUiTileUpdateRequester.java
index effad77..6e2c156 100644
--- a/wear/wear-tiles/src/main/java/androidx/wear/tiles/SysUiTileUpdateRequester.java
+++ b/wear/wear-tiles/src/main/java/androidx/wear/tiles/SysUiTileUpdateRequester.java
@@ -26,12 +26,14 @@
import android.content.pm.ServiceInfo;
import android.os.IBinder;
import android.os.RemoteException;
+import android.provider.Settings;
import android.util.Log;
import androidx.annotation.GuardedBy;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -41,20 +43,17 @@
public class SysUiTileUpdateRequester implements TileUpdateRequester {
private static final String TAG = "HTUpdateRequester";
- // TODO(b/174002885): Stop hardcoding Home package name.
- private static final String TARGET_SYSUI = "com.google.android.wearable.app";
+ private static final String DEFAULT_TARGET_SYSUI = "com.google.android.wearable.app";
+ private static final String SYSUI_SETTINGS_KEY = "clockwork_sysui_package";
public static final String ACTION_BIND_UPDATE_REQUESTER =
"androidx.wear.tiles.action.BIND_UPDATE_REQUESTER";
- private final Context mAppContext;
+ final Context mAppContext;
final Object mLock = new Object();
@GuardedBy("mLock")
- TileUpdateRequesterService mUpdateRequestService;
-
- @GuardedBy("mLock")
boolean mBindInProgress = false;
@GuardedBy("mLock")
@@ -67,21 +66,16 @@
@Override
public void requestUpdate(@NonNull Class<? extends Service> tileProvider) {
synchronized (mLock) {
- if (mUpdateRequestService != null && mUpdateRequestService.asBinder().isBinderAlive()) {
- sendTileUpdateRequest(tileProvider);
- return;
- } else if (mBindInProgress) {
- // Update scheduled anyway, skip.
- mPendingServices.add(tileProvider);
+ mPendingServices.add(tileProvider);
+
+ if (mBindInProgress) {
+ // Something else kicked off the bind; let that carry on binding.
return;
} else {
- // Can release the lock after this
- mPendingServices.add(tileProvider);
mBindInProgress = true;
}
}
- // Something was wrong with the binder, trigger a request.
Intent bindIntent = buildUpdateBindIntent();
if (bindIntent == null) {
@@ -95,10 +89,21 @@
bindAndUpdate(bindIntent);
}
+ private String getSysUiPackageName() {
+ String sysUiPackageName =
+ Settings.Global.getString(mAppContext.getContentResolver(), SYSUI_SETTINGS_KEY);
+
+ if (sysUiPackageName == null || sysUiPackageName.isEmpty()) {
+ return DEFAULT_TARGET_SYSUI;
+ } else {
+ return sysUiPackageName;
+ }
+ }
+
@Nullable
private Intent buildUpdateBindIntent() {
Intent bindIntent = new Intent(ACTION_BIND_UPDATE_REQUESTER);
- bindIntent.setPackage(TARGET_SYSUI);
+ bindIntent.setPackage(getSysUiPackageName());
// Find the concrete ComponentName of the service that implements what we need.
PackageManager pm = mAppContext.getPackageManager();
@@ -114,47 +119,55 @@
}
ServiceInfo serviceInfo = services.get(0).serviceInfo;
-
bindIntent.setClassName(serviceInfo.packageName, serviceInfo.name);
return bindIntent;
}
- // TODO(b/174002003): Make this unbind from the service.
private void bindAndUpdate(Intent i) {
mAppContext.bindService(
i,
new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
+ // Copy so we can shorten the lock duration.
+ List<Class<? extends Service>> pendingServicesCopy;
+
synchronized (mLock) {
- mUpdateRequestService =
- TileUpdateRequesterService.Stub.asInterface(service);
- mBindInProgress = false;
-
- for (Class<? extends Service> tileProvider : mPendingServices) {
- sendTileUpdateRequest(tileProvider);
- }
-
+ pendingServicesCopy = new ArrayList<>(mPendingServices);
mPendingServices.clear();
+ mBindInProgress = false;
}
+
+ // This is a little suboptimal, as if an update is requested in this lock,
+ // we'll
+ // unbind, then immediately rebind. That said, this class should be used
+ // pretty rarely
+ // (and it'll be rare to have two in-flight update requests at once
+ // regardless), so
+ // it's probably fine.
+ TileUpdateRequesterService updateRequesterService =
+ TileUpdateRequesterService.Stub.asInterface(service);
+
+ for (Class<? extends Service> tileProvider : pendingServicesCopy) {
+ sendTileUpdateRequest(tileProvider, updateRequesterService);
+ }
+
+ mAppContext.unbindService(this);
}
@Override
- public void onServiceDisconnected(ComponentName name) {
- synchronized (mLock) {
- mUpdateRequestService = null;
- }
- }
+ public void onServiceDisconnected(ComponentName name) {}
},
Context.BIND_AUTO_CREATE);
}
- @GuardedBy("mLock")
- void sendTileUpdateRequest(Class<? extends Service> tileProvider) {
+ void sendTileUpdateRequest(
+ Class<? extends Service> tileProvider,
+ TileUpdateRequesterService updateRequesterService) {
try {
ComponentName cn = new ComponentName(mAppContext, tileProvider);
- mUpdateRequestService.requestUpdate(cn, new TileUpdateRequestData());
+ updateRequesterService.requestUpdate(cn, new TileUpdateRequestData());
} catch (RemoteException ex) {
Log.w(TAG, "RemoteException while requesting tile update");
}
diff --git a/wear/wear-tiles/src/main/java/androidx/wear/tiles/TileAddEventData.java b/wear/wear-tiles/src/main/java/androidx/wear/tiles/TileAddEventData.java
new file mode 100644
index 0000000..a93e91c
--- /dev/null
+++ b/wear/wear-tiles/src/main/java/androidx/wear/tiles/TileAddEventData.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.wear.tiles;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.RestrictTo;
+
+/**
+ * Holder for ProtoTiles' TileAddEvent class, to be parceled and transferred to a tile provider.
+ *
+ * <p>All this does is to serialize TileAddEvent as a protobuf and transmit it.
+ *
+ * @hide
+ */
+@RestrictTo(RestrictTo.Scope.LIBRARY)
+public final class TileAddEventData extends ProtoParcelable {
+ public static final int VERSION_PROTOBUF = 1;
+ public static final Creator<TileAddEventData> CREATOR =
+ newCreator(TileAddEventData.class, TileAddEventData::new);
+
+ public TileAddEventData(@NonNull byte[] params, int version) {
+ super(params, version);
+ }
+}
diff --git a/wear/wear-tiles/src/main/java/androidx/wear/tiles/TileEnterEventData.java b/wear/wear-tiles/src/main/java/androidx/wear/tiles/TileEnterEventData.java
new file mode 100644
index 0000000..a2892cb
--- /dev/null
+++ b/wear/wear-tiles/src/main/java/androidx/wear/tiles/TileEnterEventData.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.wear.tiles;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.RestrictTo;
+
+/**
+ * Holder for ProtoTiles' TileEnterEvent class, to be parceled and transferred to a tile provider.
+ *
+ * <p>All this does is to serialize TileEnterEvent as a protobuf and transmit it.
+ *
+ * @hide
+ */
+@RestrictTo(RestrictTo.Scope.LIBRARY)
+public final class TileEnterEventData extends ProtoParcelable {
+ public static final int VERSION_PROTOBUF = 1;
+ public static final Creator<TileEnterEventData> CREATOR =
+ newCreator(TileEnterEventData.class, TileEnterEventData::new);
+
+ public TileEnterEventData(@NonNull byte[] params, int version) {
+ super(params, version);
+ }
+}
diff --git a/wear/wear-tiles/src/main/java/androidx/wear/tiles/TileLeaveEventData.java b/wear/wear-tiles/src/main/java/androidx/wear/tiles/TileLeaveEventData.java
new file mode 100644
index 0000000..a288dd1
--- /dev/null
+++ b/wear/wear-tiles/src/main/java/androidx/wear/tiles/TileLeaveEventData.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.wear.tiles;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.RestrictTo;
+
+/**
+ * Holder for ProtoTiles' TileLeaveEvent class, to be parceled and transferred to a tile provider.
+ *
+ * <p>All this does is to serialize TileLeaveEvent as a protobuf and transmit it.
+ *
+ * @hide
+ */
+@RestrictTo(RestrictTo.Scope.LIBRARY)
+public final class TileLeaveEventData extends ProtoParcelable {
+ public static final int VERSION_PROTOBUF = 1;
+ public static final Creator<TileLeaveEventData> CREATOR =
+ newCreator(TileLeaveEventData.class, TileLeaveEventData::new);
+
+ public TileLeaveEventData(@NonNull byte[] params, int version) {
+ super(params, version);
+ }
+}
diff --git a/wear/wear-tiles/src/main/java/androidx/wear/tiles/TileProviderService.java b/wear/wear-tiles/src/main/java/androidx/wear/tiles/TileProviderService.java
index d7aedcc..e50c667 100644
--- a/wear/wear-tiles/src/main/java/androidx/wear/tiles/TileProviderService.java
+++ b/wear/wear-tiles/src/main/java/androidx/wear/tiles/TileProviderService.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2020 The Android Open Source Project
+ * Copyright 2021 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -29,6 +29,12 @@
import androidx.annotation.Nullable;
import androidx.wear.tiles.builders.ResourceBuilders.Resources;
import androidx.wear.tiles.builders.TileBuilders.Tile;
+import androidx.wear.tiles.builders.TileBuilders.Version;
+import androidx.wear.tiles.proto.TileProto;
+import androidx.wear.tiles.readers.EventReaders.TileAddEvent;
+import androidx.wear.tiles.readers.EventReaders.TileEnterEvent;
+import androidx.wear.tiles.readers.EventReaders.TileLeaveEvent;
+import androidx.wear.tiles.readers.EventReaders.TileRemoveEvent;
import androidx.wear.tiles.readers.RequestReaders.ResourcesRequest;
import androidx.wear.tiles.readers.RequestReaders.TileRequest;
@@ -93,6 +99,46 @@
@NonNull ResourcesRequest requestParams);
/**
+ * Called when a tile provided by this Tile Provider is added to the carousel. Note that this
+ * may be called from a background thread.
+ *
+ * @param requestParams Parameters about the request. See {@link TileAddEventData} for more
+ * info.
+ */
+ @MainThread
+ protected void onTileAddEvent(@NonNull TileAddEvent requestParams) {}
+
+ /**
+ * Called when a tile provided by this Tile Provider is removed from the carousel. Note that
+ * this may be called from a background thread.
+ *
+ * @param requestParams Parameters about the request. See {@link TileRemoveEventData} for more
+ * info.
+ */
+ @MainThread
+ protected void onTileRemoveEvent(@NonNull TileRemoveEvent requestParams) {}
+
+ /**
+ * Called when a tile provided by this Tile Provider becomes into view, on screen. Note that
+ * this may be called from a background thread.
+ *
+ * @param requestParams Parameters about the request. See {@link TileEnterEventData} for more
+ * info.
+ */
+ @MainThread
+ protected void onTileEnterEvent(@NonNull TileEnterEvent requestParams) {}
+
+ /**
+ * Called when a tile provided by this Tile Provider goes out of view, on screen. Note that this
+ * may be called from a background thread.
+ *
+ * @param requestParams Parameters about the request. See {@link TileLeaveEventData} for more
+ * info.
+ */
+ @MainThread
+ protected void onTileLeaveEvent(@NonNull TileLeaveEvent requestParams) {}
+
+ /**
* Gets an instance of {@link TileUpdateRequester} to allow a Tile Provider to notify the tile's
* renderer that it should request a new Timeline from this {@link TileProviderService}.
*
@@ -151,17 +197,20 @@
// TODO(b/166074385): Add tileId to TileRequest
ListenableFuture<Tile> tileFuture =
tileProviderService.onTileRequest(
- TileRequest.fromParcelable(requestParams));
+ TileRequest.fromParcelable(requestParams, tileId));
tileFuture.addListener(
() -> {
try {
+ // Inject the current schema version.
+ TileProto.Tile tile =
+ tileFuture.get().toProto().toBuilder()
+ .setSchemaVersion(Version.CURRENT)
+ .build();
+
callback.updateTileData(
new TileData(
- tileFuture
- .get()
- .toProto()
- .toByteArray(),
+ tile.toByteArray(),
TileData.VERSION_PROTOBUF));
} catch (ExecutionException | InterruptedException ex) {
Log.e(TAG, "onTileRequest Future failed", ex);
@@ -196,7 +245,7 @@
// TODO(b/166074385): Add tileId to ResourcesRequest
ListenableFuture<Resources> resourcesFuture =
tileProviderService.onResourcesRequest(
- ResourcesRequest.fromParcelable(requestParams));
+ ResourcesRequest.fromParcelable(requestParams, tileId));
resourcesFuture.addListener(
() -> {
@@ -214,7 +263,7 @@
Log.e(
TAG,
"RemoteException while returning resources"
- + " payload",
+ + " payload",
ex);
}
},
@@ -224,9 +273,86 @@
}
@Override
- public void onTileAdd(int id) {}
+ public void onTileAddEvent(TileAddEventData data) {
+ mHandler.post(
+ () -> {
+ TileProviderService tileProviderService = mServiceRef.get();
+
+ if (tileProviderService != null) {
+ if (data.getVersion() != TileAddEventData.VERSION_PROTOBUF) {
+ Log.e(
+ TAG,
+ "TileAddEventData had unexpected version: "
+ + data.getVersion());
+ return;
+ }
+
+ tileProviderService.onTileAddEvent(TileAddEvent.fromParcelable(data));
+ }
+ });
+ }
@Override
- public void onTileRemove(int id) {}
+ public void onTileRemoveEvent(TileRemoveEventData data) {
+ mHandler.post(
+ () -> {
+ TileProviderService tileProviderService = mServiceRef.get();
+
+ if (tileProviderService != null) {
+ if (data.getVersion() != TileRemoveEventData.VERSION_PROTOBUF) {
+ Log.e(
+ TAG,
+ "TileRemoveEventData had unexpected version: "
+ + data.getVersion());
+ return;
+ }
+
+ tileProviderService.onTileRemoveEvent(
+ TileRemoveEvent.fromParcelable(data));
+ }
+ });
+ }
+
+ @Override
+ public void onTileEnterEvent(TileEnterEventData data) {
+ mHandler.post(
+ () -> {
+ TileProviderService tileProviderService = mServiceRef.get();
+
+ if (tileProviderService != null) {
+ if (data.getVersion() != TileEnterEventData.VERSION_PROTOBUF) {
+ Log.e(
+ TAG,
+ "TileEnterEventData had unexpected version: "
+ + data.getVersion());
+ return;
+ }
+
+ tileProviderService.onTileEnterEvent(
+ TileEnterEvent.fromParcelable(data));
+ }
+ });
+ }
+
+ @Override
+ public void onTileLeaveEvent(TileLeaveEventData data) {
+ mHandler.post(
+ () -> {
+ TileProviderService tileProviderService = mServiceRef.get();
+
+ if (tileProviderService != null) {
+ if (data.getVersion() != TileLeaveEventData.VERSION_PROTOBUF) {
+ Log.e(
+ TAG,
+ "TileLeaveEventData had unexpected version: "
+ + data.getVersion());
+ return;
+ }
+
+ tileProviderService.onTileLeaveEvent(
+ TileLeaveEvent.fromParcelable(data));
+ }
+ });
+ }
}
}
diff --git a/wear/wear-tiles/src/main/java/androidx/wear/tiles/TileRemoveEventData.java b/wear/wear-tiles/src/main/java/androidx/wear/tiles/TileRemoveEventData.java
new file mode 100644
index 0000000..956769a
--- /dev/null
+++ b/wear/wear-tiles/src/main/java/androidx/wear/tiles/TileRemoveEventData.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.wear.tiles;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.RestrictTo;
+
+/**
+ * Holder for ProtoTiles' TileRemoveEvent class, to be parceled and transferred to a tile provider.
+ *
+ * <p>All this does is to serialize TileRemoveEvent as a protobuf and transmit it.
+ *
+ * @hide
+ */
+@RestrictTo(RestrictTo.Scope.LIBRARY)
+public final class TileRemoveEventData extends ProtoParcelable {
+ public static final int VERSION_PROTOBUF = 1;
+ public static final Creator<TileRemoveEventData> CREATOR =
+ newCreator(TileRemoveEventData.class, TileRemoveEventData::new);
+
+ public TileRemoveEventData(@NonNull byte[] params, int version) {
+ super(params, version);
+ }
+}
diff --git a/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/ActionBuilders.java b/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/ActionBuilders.java
index e812996..81f94ab 100644
--- a/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/ActionBuilders.java
+++ b/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/ActionBuilders.java
@@ -21,6 +21,7 @@
import androidx.annotation.NonNull;
import androidx.annotation.RestrictTo;
import androidx.annotation.RestrictTo.Scope;
+import androidx.wear.tiles.builders.StateBuilders.State;
import androidx.wear.tiles.proto.ActionProto;
/** Builders for actions that can be performed when a user interacts with layout elements. */
@@ -31,7 +32,7 @@
public static final class AndroidActivity {
private final ActionProto.AndroidActivity mImpl;
- AndroidActivity(ActionProto.AndroidActivity impl) {
+ private AndroidActivity(ActionProto.AndroidActivity impl) {
this.mImpl = impl;
}
@@ -41,12 +42,15 @@
return new Builder();
}
- /**
- * Get the protocol buffer representation of this object.
- *
- * @hide
- */
- @RestrictTo(Scope.LIBRARY)
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static AndroidActivity fromProto(@NonNull ActionProto.AndroidActivity proto) {
+ return new AndroidActivity(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public ActionProto.AndroidActivity toProto() {
return mImpl;
@@ -81,7 +85,7 @@
/** Builds an instance from accumulated values. */
@NonNull
public AndroidActivity build() {
- return new AndroidActivity(mImpl.build());
+ return AndroidActivity.fromProto(mImpl.build());
}
}
}
@@ -94,7 +98,7 @@
public static final class LaunchAction implements Action {
private final ActionProto.LaunchAction mImpl;
- LaunchAction(ActionProto.LaunchAction impl) {
+ private LaunchAction(ActionProto.LaunchAction impl) {
this.mImpl = impl;
}
@@ -105,7 +109,14 @@
}
/** @hide */
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static LaunchAction fromProto(@NonNull ActionProto.LaunchAction proto) {
+ return new LaunchAction(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
ActionProto.LaunchAction toProto() {
return mImpl;
@@ -113,7 +124,7 @@
/** @hide */
@Override
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public ActionProto.Action toActionProto() {
return ActionProto.Action.newBuilder().setLaunchAction(mImpl).build();
@@ -146,7 +157,7 @@
@Override
@NonNull
public LaunchAction build() {
- return new LaunchAction(mImpl.build());
+ return LaunchAction.fromProto(mImpl.build());
}
}
}
@@ -155,7 +166,7 @@
public static final class LoadAction implements Action {
private final ActionProto.LoadAction mImpl;
- LoadAction(ActionProto.LoadAction impl) {
+ private LoadAction(ActionProto.LoadAction impl) {
this.mImpl = impl;
}
@@ -166,7 +177,14 @@
}
/** @hide */
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static LoadAction fromProto(@NonNull ActionProto.LoadAction proto) {
+ return new LoadAction(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
ActionProto.LoadAction toProto() {
return mImpl;
@@ -174,7 +192,7 @@
/** @hide */
@Override
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public ActionProto.Action toActionProto() {
return ActionProto.Action.newBuilder().setLoadAction(mImpl).build();
@@ -187,10 +205,34 @@
Builder() {}
+ /**
+ * Sets the state to load the next tile with. This will be included in the TileRequest
+ * sent after this action is invoked by a {@link
+ * androidx.wear.tiles.builders.ModifiersBuilders.Clickable}.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setRequestState(@NonNull State requestState) {
+ mImpl.setRequestState(requestState.toProto());
+ return this;
+ }
+
+ /**
+ * Sets the state to load the next tile with. This will be included in the TileRequest
+ * sent after this action is invoked by a {@link
+ * androidx.wear.tiles.builders.ModifiersBuilders.Clickable}.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setRequestState(@NonNull State.Builder requestStateBuilder) {
+ mImpl.setRequestState(requestStateBuilder.build().toProto());
+ return this;
+ }
+
@Override
@NonNull
public LoadAction build() {
- return new LoadAction(mImpl.build());
+ return LoadAction.fromProto(mImpl.build());
}
}
}
@@ -202,7 +244,7 @@
*
* @hide
*/
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
ActionProto.Action toActionProto();
diff --git a/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/ColorBuilders.java b/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/ColorBuilders.java
index 12bba94..55ce699 100644
--- a/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/ColorBuilders.java
+++ b/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/ColorBuilders.java
@@ -38,7 +38,7 @@
public static final class ColorProp {
private final ColorProto.ColorProp mImpl;
- ColorProp(ColorProto.ColorProp impl) {
+ private ColorProp(ColorProto.ColorProp impl) {
this.mImpl = impl;
}
@@ -48,12 +48,15 @@
return new Builder();
}
- /**
- * Get the protocol buffer representation of this object.
- *
- * @hide
- */
- @RestrictTo(Scope.LIBRARY)
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static ColorProp fromProto(@NonNull ColorProto.ColorProp proto) {
+ return new ColorProp(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public ColorProto.ColorProp toProto() {
return mImpl;
@@ -76,7 +79,7 @@
/** Builds an instance from accumulated values. */
@NonNull
public ColorProp build() {
- return new ColorProp(mImpl.build());
+ return ColorProp.fromProto(mImpl.build());
}
}
}
diff --git a/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/DimensionBuilders.java b/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/DimensionBuilders.java
index 24a6277..051c95e 100644
--- a/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/DimensionBuilders.java
+++ b/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/DimensionBuilders.java
@@ -47,6 +47,12 @@
return SpProp.builder().setValue(valueSp).build();
}
+ /** Shortcut for building a {@link EmProp} using a measurement in EM. */
+ @NonNull
+ public static EmProp em(int valueEm) {
+ return EmProp.builder().setValue(valueEm).build();
+ }
+
/** Shortcut for building an {@link DegreesProp} using a measurement in degrees. */
@NonNull
public static DegreesProp degrees(float valueDegrees) {
@@ -73,10 +79,10 @@
/** A type for linear dimensions, measured in dp. */
public static final class DpProp
- implements LinearOrAngularDimension, ContainerDimension, ImageDimension {
+ implements ContainerDimension, ImageDimension, SpacerDimension {
private final DimensionProto.DpProp mImpl;
- DpProp(DimensionProto.DpProp impl) {
+ private DpProp(DimensionProto.DpProp impl) {
this.mImpl = impl;
}
@@ -87,7 +93,14 @@
}
/** @hide */
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static DpProp fromProto(@NonNull DimensionProto.DpProp proto) {
+ return new DpProp(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
DimensionProto.DpProp toProto() {
return mImpl;
@@ -95,17 +108,7 @@
/** @hide */
@Override
- @RestrictTo(Scope.LIBRARY)
- @NonNull
- public DimensionProto.LinearOrAngularDimension toLinearOrAngularDimensionProto() {
- return DimensionProto.LinearOrAngularDimension.newBuilder()
- .setLinearDimension(mImpl)
- .build();
- }
-
- /** @hide */
- @Override
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public DimensionProto.ContainerDimension toContainerDimensionProto() {
return DimensionProto.ContainerDimension.newBuilder().setLinearDimension(mImpl).build();
@@ -113,17 +116,25 @@
/** @hide */
@Override
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public DimensionProto.ImageDimension toImageDimensionProto() {
return DimensionProto.ImageDimension.newBuilder().setLinearDimension(mImpl).build();
}
+ /** @hide */
+ @Override
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public DimensionProto.SpacerDimension toSpacerDimensionProto() {
+ return DimensionProto.SpacerDimension.newBuilder().setLinearDimension(mImpl).build();
+ }
+
/** Builder for {@link DpProp}. */
public static final class Builder
- implements LinearOrAngularDimension.Builder,
- ContainerDimension.Builder,
- ImageDimension.Builder {
+ implements ContainerDimension.Builder,
+ ImageDimension.Builder,
+ SpacerDimension.Builder {
private final DimensionProto.DpProp.Builder mImpl = DimensionProto.DpProp.newBuilder();
Builder() {}
@@ -139,7 +150,7 @@
@Override
@NonNull
public DpProp build() {
- return new DpProp(mImpl.build());
+ return DpProp.fromProto(mImpl.build());
}
}
}
@@ -148,7 +159,7 @@
public static final class SpProp {
private final DimensionProto.SpProp mImpl;
- SpProp(DimensionProto.SpProp impl) {
+ private SpProp(DimensionProto.SpProp impl) {
this.mImpl = impl;
}
@@ -158,12 +169,15 @@
return new Builder();
}
- /**
- * Get the protocol buffer representation of this object.
- *
- * @hide
- */
- @RestrictTo(Scope.LIBRARY)
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static SpProp fromProto(@NonNull DimensionProto.SpProp proto) {
+ return new SpProp(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public DimensionProto.SpProp toProto() {
return mImpl;
@@ -186,16 +200,16 @@
/** Builds an instance from accumulated values. */
@NonNull
public SpProp build() {
- return new SpProp(mImpl.build());
+ return SpProp.fromProto(mImpl.build());
}
}
}
- /** A type for angular dimensions, measured in degrees. */
- public static final class DegreesProp implements LinearOrAngularDimension {
- private final DimensionProto.DegreesProp mImpl;
+ /** A type for font spacing, measured in em. */
+ public static final class EmProp {
+ private final DimensionProto.EmProp mImpl;
- DegreesProp(DimensionProto.DegreesProp impl) {
+ private EmProp(DimensionProto.EmProp impl) {
this.mImpl = impl;
}
@@ -206,24 +220,71 @@
}
/** @hide */
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
- DimensionProto.DegreesProp toProto() {
- return mImpl;
+ public static EmProp fromProto(@NonNull DimensionProto.EmProp proto) {
+ return new EmProp(proto);
}
/** @hide */
- @Override
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
- public DimensionProto.LinearOrAngularDimension toLinearOrAngularDimensionProto() {
- return DimensionProto.LinearOrAngularDimension.newBuilder()
- .setAngularDimension(mImpl)
- .build();
+ public DimensionProto.EmProp toProto() {
+ return mImpl;
}
- /** Builder for {@link DegreesProp}. */
- public static final class Builder implements LinearOrAngularDimension.Builder {
+ /** Builder for {@link EmProp} */
+ public static final class Builder {
+ private final DimensionProto.EmProp.Builder mImpl = DimensionProto.EmProp.newBuilder();
+
+ Builder() {}
+
+ /** Sets the value, in em. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setValue(float value) {
+ mImpl.setValue(value);
+ return this;
+ }
+
+ /** Builds an instance from accumulated values. */
+ @NonNull
+ public EmProp build() {
+ return EmProp.fromProto(mImpl.build());
+ }
+ }
+ }
+
+ /** A type for angular dimensions, measured in degrees. */
+ public static final class DegreesProp {
+ private final DimensionProto.DegreesProp mImpl;
+
+ private DegreesProp(DimensionProto.DegreesProp impl) {
+ this.mImpl = impl;
+ }
+
+ /** Returns a new {@link Builder}. */
+ @NonNull
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static DegreesProp fromProto(@NonNull DimensionProto.DegreesProp proto) {
+ return new DegreesProp(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public DimensionProto.DegreesProp toProto() {
+ return mImpl;
+ }
+
+ /** Builder for {@link DegreesProp} */
+ public static final class Builder {
private final DimensionProto.DegreesProp.Builder mImpl =
DimensionProto.DegreesProp.newBuilder();
@@ -237,10 +298,10 @@
return this;
}
- @Override
+ /** Builds an instance from accumulated values. */
@NonNull
public DegreesProp build() {
- return new DegreesProp(mImpl.build());
+ return DegreesProp.fromProto(mImpl.build());
}
}
}
@@ -252,7 +313,7 @@
public static final class ExpandedDimensionProp implements ContainerDimension, ImageDimension {
private final DimensionProto.ExpandedDimensionProp mImpl;
- ExpandedDimensionProp(DimensionProto.ExpandedDimensionProp impl) {
+ private ExpandedDimensionProp(DimensionProto.ExpandedDimensionProp impl) {
this.mImpl = impl;
}
@@ -263,7 +324,15 @@
}
/** @hide */
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static ExpandedDimensionProp fromProto(
+ @NonNull DimensionProto.ExpandedDimensionProp proto) {
+ return new ExpandedDimensionProp(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
DimensionProto.ExpandedDimensionProp toProto() {
return mImpl;
@@ -271,7 +340,7 @@
/** @hide */
@Override
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public DimensionProto.ContainerDimension toContainerDimensionProto() {
return DimensionProto.ContainerDimension.newBuilder()
@@ -281,7 +350,7 @@
/** @hide */
@Override
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public DimensionProto.ImageDimension toImageDimensionProto() {
return DimensionProto.ImageDimension.newBuilder().setExpandedDimension(mImpl).build();
@@ -298,7 +367,7 @@
@Override
@NonNull
public ExpandedDimensionProp build() {
- return new ExpandedDimensionProp(mImpl.build());
+ return ExpandedDimensionProp.fromProto(mImpl.build());
}
}
}
@@ -310,7 +379,7 @@
public static final class WrappedDimensionProp implements ContainerDimension {
private final DimensionProto.WrappedDimensionProp mImpl;
- WrappedDimensionProp(DimensionProto.WrappedDimensionProp impl) {
+ private WrappedDimensionProp(DimensionProto.WrappedDimensionProp impl) {
this.mImpl = impl;
}
@@ -321,7 +390,15 @@
}
/** @hide */
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static WrappedDimensionProp fromProto(
+ @NonNull DimensionProto.WrappedDimensionProp proto) {
+ return new WrappedDimensionProp(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
DimensionProto.WrappedDimensionProp toProto() {
return mImpl;
@@ -329,7 +406,7 @@
/** @hide */
@Override
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public DimensionProto.ContainerDimension toContainerDimensionProto() {
return DimensionProto.ContainerDimension.newBuilder()
@@ -347,7 +424,7 @@
@Override
@NonNull
public WrappedDimensionProp build() {
- return new WrappedDimensionProp(mImpl.build());
+ return WrappedDimensionProp.fromProto(mImpl.build());
}
}
}
@@ -364,7 +441,7 @@
public static final class ProportionalDimensionProp implements ImageDimension {
private final DimensionProto.ProportionalDimensionProp mImpl;
- ProportionalDimensionProp(DimensionProto.ProportionalDimensionProp impl) {
+ private ProportionalDimensionProp(DimensionProto.ProportionalDimensionProp impl) {
this.mImpl = impl;
}
@@ -375,7 +452,15 @@
}
/** @hide */
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static ProportionalDimensionProp fromProto(
+ @NonNull DimensionProto.ProportionalDimensionProp proto) {
+ return new ProportionalDimensionProp(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
DimensionProto.ProportionalDimensionProp toProto() {
return mImpl;
@@ -383,7 +468,7 @@
/** @hide */
@Override
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public DimensionProto.ImageDimension toImageDimensionProto() {
return DimensionProto.ImageDimension.newBuilder()
@@ -417,32 +502,11 @@
@Override
@NonNull
public ProportionalDimensionProp build() {
- return new ProportionalDimensionProp(mImpl.build());
+ return ProportionalDimensionProp.fromProto(mImpl.build());
}
}
}
- /** Interface defining a dimension that can be linear or angular. */
- public interface LinearOrAngularDimension {
- /**
- * Get the protocol buffer representation of this object.
- *
- * @hide
- */
- @RestrictTo(Scope.LIBRARY)
- @NonNull
- DimensionProto.LinearOrAngularDimension toLinearOrAngularDimensionProto();
-
- /** Builder to create {@link LinearOrAngularDimension} objects. */
- @SuppressLint("StaticFinalBuilder")
- interface Builder {
-
- /** Builds an instance with values accumulated in this Builder. */
- @NonNull
- LinearOrAngularDimension build();
- }
- }
-
/** Interface defining a dimension that can be applied to a container. */
public interface ContainerDimension {
/**
@@ -450,7 +514,7 @@
*
* @hide
*/
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
DimensionProto.ContainerDimension toContainerDimensionProto();
@@ -471,7 +535,7 @@
*
* @hide
*/
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
DimensionProto.ImageDimension toImageDimensionProto();
@@ -484,4 +548,25 @@
ImageDimension build();
}
}
+
+ /** Interface defining a dimension that can be applied to a spacer. */
+ public interface SpacerDimension {
+ /**
+ * Get the protocol buffer representation of this object.
+ *
+ * @hide
+ */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ DimensionProto.SpacerDimension toSpacerDimensionProto();
+
+ /** Builder to create {@link SpacerDimension} objects. */
+ @SuppressLint("StaticFinalBuilder")
+ interface Builder {
+
+ /** Builds an instance with values accumulated in this Builder. */
+ @NonNull
+ SpacerDimension build();
+ }
+ }
}
diff --git a/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/LayoutElementBuilders.java b/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/LayoutElementBuilders.java
index 75028ba..1debd10 100644
--- a/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/LayoutElementBuilders.java
+++ b/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/LayoutElementBuilders.java
@@ -23,14 +23,17 @@
import androidx.annotation.NonNull;
import androidx.annotation.RestrictTo;
import androidx.annotation.RestrictTo.Scope;
-import androidx.wear.tiles.builders.ActionBuilders.Action;
import androidx.wear.tiles.builders.ColorBuilders.ColorProp;
import androidx.wear.tiles.builders.DimensionBuilders.ContainerDimension;
import androidx.wear.tiles.builders.DimensionBuilders.DegreesProp;
import androidx.wear.tiles.builders.DimensionBuilders.DpProp;
+import androidx.wear.tiles.builders.DimensionBuilders.EmProp;
import androidx.wear.tiles.builders.DimensionBuilders.ImageDimension;
-import androidx.wear.tiles.builders.DimensionBuilders.LinearOrAngularDimension;
import androidx.wear.tiles.builders.DimensionBuilders.SpProp;
+import androidx.wear.tiles.builders.DimensionBuilders.SpacerDimension;
+import androidx.wear.tiles.builders.ModifiersBuilders.ArcModifiers;
+import androidx.wear.tiles.builders.ModifiersBuilders.Modifiers;
+import androidx.wear.tiles.builders.ModifiersBuilders.SpanModifiers;
import androidx.wear.tiles.proto.LayoutElementProto;
import androidx.wear.tiles.proto.TypesProto;
import androidx.wear.tiles.readers.DeviceParametersReaders.DeviceParameters;
@@ -262,7 +265,7 @@
public static final class FontStyle {
private final LayoutElementProto.FontStyle mImpl;
- FontStyle(LayoutElementProto.FontStyle impl) {
+ private FontStyle(LayoutElementProto.FontStyle impl) {
this.mImpl = impl;
}
@@ -272,12 +275,15 @@
return new Builder();
}
- /**
- * Get the protocol buffer representation of this object.
- *
- * @hide
- */
- @RestrictTo(Scope.LIBRARY)
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static FontStyle fromProto(@NonNull LayoutElementProto.FontStyle proto) {
+ return new FontStyle(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public LayoutElementProto.FontStyle toProto() {
return mImpl;
@@ -313,20 +319,6 @@
}
/**
- * Sets whether the text should be rendered in a bold typeface. If not specified,
- * defaults to "false".
- *
- * @deprecated Use weight instead.
- */
- @SuppressLint("MissingGetterMatchingBuilder")
- @Deprecated
- @NonNull
- public Builder setBold(boolean bold) {
- mImpl.setBold(TypesProto.BoolProp.newBuilder().setValue(bold));
- return this;
- }
-
- /**
* Sets whether the text should be rendered in a italic typeface. If not specified,
* defaults to "false".
*/
@@ -378,659 +370,41 @@
return this;
}
- /** Builds an instance from accumulated values. */
- @NonNull
- public FontStyle build() {
- return new FontStyle(mImpl.build());
- }
- }
- }
-
- /** The padding around a {@link Box} element. */
- public static final class Padding {
- private final LayoutElementProto.Padding mImpl;
-
- Padding(LayoutElementProto.Padding impl) {
- this.mImpl = impl;
- }
-
- /** Returns a new {@link Builder}. */
- @NonNull
- public static Builder builder() {
- return new Builder();
- }
-
- /**
- * Get the protocol buffer representation of this object.
- *
- * @hide
- */
- @RestrictTo(Scope.LIBRARY)
- @NonNull
- public LayoutElementProto.Padding toProto() {
- return mImpl;
- }
-
- /** Builder for {@link Padding} */
- public static final class Builder {
- private final LayoutElementProto.Padding.Builder mImpl =
- LayoutElementProto.Padding.newBuilder();
-
- Builder() {}
-
/**
- * Sets the padding on the end of the content, depending on the layout direction, in DP
- * and the value of "rtl_aware".
+ * Sets the text letter-spacing. Positive numbers increase the space between letters
+ * while negative numbers tighten the space. If not specified, defaults to 0.
*/
@SuppressLint("MissingGetterMatchingBuilder")
@NonNull
- public Builder setEnd(@NonNull DpProp end) {
- mImpl.setEnd(end.toProto());
+ public Builder setLetterSpacing(@NonNull EmProp letterSpacing) {
+ mImpl.setLetterSpacing(letterSpacing.toProto());
return this;
}
/**
- * Sets the padding on the end of the content, depending on the layout direction, in DP
- * and the value of "rtl_aware".
+ * Sets the text letter-spacing. Positive numbers increase the space between letters
+ * while negative numbers tighten the space. If not specified, defaults to 0.
*/
@SuppressLint("MissingGetterMatchingBuilder")
@NonNull
- public Builder setEnd(@NonNull DpProp.Builder endBuilder) {
- mImpl.setEnd(endBuilder.build().toProto());
- return this;
- }
-
- /**
- * Sets the padding on the start of the content, depending on the layout direction, in
- * DP and the value of "rtl_aware".
- */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setStart(@NonNull DpProp start) {
- mImpl.setStart(start.toProto());
- return this;
- }
-
- /**
- * Sets the padding on the start of the content, depending on the layout direction, in
- * DP and the value of "rtl_aware".
- */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setStart(@NonNull DpProp.Builder startBuilder) {
- mImpl.setStart(startBuilder.build().toProto());
- return this;
- }
-
- /** Sets the padding at the top, in DP. */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setTop(@NonNull DpProp top) {
- mImpl.setTop(top.toProto());
- return this;
- }
-
- /** Sets the padding at the top, in DP. */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setTop(@NonNull DpProp.Builder topBuilder) {
- mImpl.setTop(topBuilder.build().toProto());
- return this;
- }
-
- /** Sets the padding at the bottom, in DP. */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setBottom(@NonNull DpProp bottom) {
- mImpl.setBottom(bottom.toProto());
- return this;
- }
-
- /** Sets the padding at the bottom, in DP. */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setBottom(@NonNull DpProp.Builder bottomBuilder) {
- mImpl.setBottom(bottomBuilder.build().toProto());
- return this;
- }
-
- /**
- * Sets whether the start/end padding is aware of RTL support. If true, the values for
- * start/end will follow the layout direction (i.e. start will refer to the right hand
- * side of the container if the device is using an RTL locale). If false, start/end will
- * always map to left/right, accordingly.
- */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setRtlAware(boolean rtlAware) {
- mImpl.setRtlAware(TypesProto.BoolProp.newBuilder().setValue(rtlAware));
+ public Builder setLetterSpacing(@NonNull EmProp.Builder letterSpacingBuilder) {
+ mImpl.setLetterSpacing(letterSpacingBuilder.build().toProto());
return this;
}
/** Builds an instance from accumulated values. */
@NonNull
- public Padding build() {
- return new Padding(mImpl.build());
- }
- }
- }
-
- /** The border around a {@link Box} element. */
- public static final class Border {
- private final LayoutElementProto.Border mImpl;
-
- Border(LayoutElementProto.Border impl) {
- this.mImpl = impl;
- }
-
- /** Returns a new {@link Builder}. */
- @NonNull
- public static Builder builder() {
- return new Builder();
- }
-
- /**
- * Get the protocol buffer representation of this object.
- *
- * @hide
- */
- @RestrictTo(Scope.LIBRARY)
- @NonNull
- public LayoutElementProto.Border toProto() {
- return mImpl;
- }
-
- /** Builder for {@link Border} */
- public static final class Builder {
- private final LayoutElementProto.Border.Builder mImpl =
- LayoutElementProto.Border.newBuilder();
-
- Builder() {}
-
- /** Sets the width of the border, in DP. */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setWidth(@NonNull DpProp width) {
- mImpl.setWidth(width.toProto());
- return this;
- }
-
- /** Sets the width of the border, in DP. */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setWidth(@NonNull DpProp.Builder widthBuilder) {
- mImpl.setWidth(widthBuilder.build().toProto());
- return this;
- }
-
- /** Sets the color of the border. */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setColor(@NonNull ColorProp color) {
- mImpl.setColor(color.toProto());
- return this;
- }
-
- /** Sets the color of the border. */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setColor(@NonNull ColorProp.Builder colorBuilder) {
- mImpl.setColor(colorBuilder.build().toProto());
- return this;
- }
-
- /** Builds an instance from accumulated values. */
- @NonNull
- public Border build() {
- return new Border(mImpl.build());
- }
- }
- }
-
- /** The corner of a {@link Box} element. */
- public static final class Corner {
- private final LayoutElementProto.Corner mImpl;
-
- Corner(LayoutElementProto.Corner impl) {
- this.mImpl = impl;
- }
-
- /** Returns a new {@link Builder}. */
- @NonNull
- public static Builder builder() {
- return new Builder();
- }
-
- /**
- * Get the protocol buffer representation of this object.
- *
- * @hide
- */
- @RestrictTo(Scope.LIBRARY)
- @NonNull
- public LayoutElementProto.Corner toProto() {
- return mImpl;
- }
-
- /** Builder for {@link Corner} */
- public static final class Builder {
- private final LayoutElementProto.Corner.Builder mImpl =
- LayoutElementProto.Corner.newBuilder();
-
- Builder() {}
-
- /** Sets the radius of the corner in DP. */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setRadius(@NonNull DpProp radius) {
- mImpl.setRadius(radius.toProto());
- return this;
- }
-
- /** Sets the radius of the corner in DP. */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setRadius(@NonNull DpProp.Builder radiusBuilder) {
- mImpl.setRadius(radiusBuilder.build().toProto());
- return this;
- }
-
- /** Builds an instance from accumulated values. */
- @NonNull
- public Corner build() {
- return new Corner(mImpl.build());
- }
- }
- }
-
- /** The style of a {@link Text} element. */
- public static final class TextStyle {
- private final LayoutElementProto.TextStyle mImpl;
-
- TextStyle(LayoutElementProto.TextStyle impl) {
- this.mImpl = impl;
- }
-
- /** Returns a new {@link Builder}. */
- @NonNull
- public static Builder builder() {
- return new Builder();
- }
-
- /**
- * Get the protocol buffer representation of this object.
- *
- * @hide
- */
- @RestrictTo(Scope.LIBRARY)
- @NonNull
- public LayoutElementProto.TextStyle toProto() {
- return mImpl;
- }
-
- /** Builder for {@link TextStyle} */
- public static final class Builder {
- private final LayoutElementProto.TextStyle.Builder mImpl =
- LayoutElementProto.TextStyle.newBuilder();
-
- Builder() {}
-
- /**
- * Sets the text color. If not defined, defaults to white.
- *
- * @deprecated Use color property of {@link FontStyle} instead.
- */
- @SuppressLint("MissingGetterMatchingBuilder")
- @Deprecated
- @NonNull
- public Builder setColor(@NonNull ColorProp color) {
- mImpl.setColor(color.toProto());
- return this;
- }
-
- /**
- * Sets the text color. If not defined, defaults to white.
- *
- * @deprecated Use color property of {@link FontStyle} instead.
- */
- @SuppressLint("MissingGetterMatchingBuilder")
- @Deprecated
- @NonNull
- public Builder setColor(@NonNull ColorProp.Builder colorBuilder) {
- mImpl.setColor(colorBuilder.build().toProto());
- return this;
- }
-
- /**
- * Sets the maximum number of lines that can be represented by the {@link Text} element.
- * If not defined, the {@link Text} element will be treated as a single-line element.
- */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setMaxLines(@IntRange(from = 0) int maxLines) {
- mImpl.setMaxLines(TypesProto.Int32Prop.newBuilder().setValue(maxLines));
- return this;
- }
-
- /**
- * Sets alignment of the text within its bounds. Note that a {@link Text} element will
- * size itself to wrap its contents, so this option is meaningless for single-line text
- * (for that, use alignment of the outer container). For multi-line text, however, this
- * will set the alignment of lines relative to the {@link Text} element bounds. If not
- * defined, defaults to TEXT_ALIGN_CENTER.
- */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setMultilineAlignment(@TextAlignment int multilineAlignment) {
- mImpl.setMultilineAlignment(
- LayoutElementProto.TextAlignmentProp.newBuilder()
- .setValue(
- LayoutElementProto.TextAlignment.forNumber(
- multilineAlignment)));
- return this;
- }
-
- /**
- * Sets specifies how to handle text which overflows the bound of the {@link Text}
- * element. A {@link Text} element will grow as large as possible inside its parent
- * container (while still respecting max_lines); if it cannot grow large enough to
- * render all of its text, the text which cannot fit inside its container will be
- * truncated. If not defined, defaults to TEXT_OVERFLOW_TRUNCATE.
- */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setOverflow(@TextOverflow int overflow) {
- mImpl.setOverflow(
- LayoutElementProto.TextOverflowProp.newBuilder()
- .setValue(LayoutElementProto.TextOverflow.forNumber(overflow)));
- return this;
- }
-
- /** Builds an instance from accumulated values. */
- @NonNull
- public TextStyle build() {
- return new TextStyle(mImpl.build());
- }
- }
- }
-
- /** The style of a {@link Spannable} element. */
- public static final class SpannableStyle {
- private final LayoutElementProto.SpannableStyle mImpl;
-
- SpannableStyle(LayoutElementProto.SpannableStyle impl) {
- this.mImpl = impl;
- }
-
- /** Returns a new {@link Builder}. */
- @NonNull
- public static Builder builder() {
- return new Builder();
- }
-
- /**
- * Get the protocol buffer representation of this object.
- *
- * @hide
- */
- @RestrictTo(Scope.LIBRARY)
- @NonNull
- public LayoutElementProto.SpannableStyle toProto() {
- return mImpl;
- }
-
- /** Builder for {@link SpannableStyle} */
- public static final class Builder {
- private final LayoutElementProto.SpannableStyle.Builder mImpl =
- LayoutElementProto.SpannableStyle.newBuilder();
-
- Builder() {}
-
- /**
- * Sets the maximum number of lines that can be represented by the {@link Spannable}
- * element. If not defined, the {@link Text} element will be treated as a single-line
- * element.
- */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setMaxLines(@IntRange(from = 0) int maxLines) {
- mImpl.setMaxLines(TypesProto.Int32Prop.newBuilder().setValue(maxLines));
- return this;
- }
-
- /**
- * Sets alignment of the {@link Spannable} content within its bounds. Note that a {@link
- * Spannable} element will size itself to wrap its contents, so this option is
- * meaningless for single-line content (for that, use alignment of the outer container).
- * For multi-line content, however, this will set the alignment of lines relative to the
- * {@link Spannable} element bounds. If not defined, defaults to TEXT_ALIGN_CENTER.
- */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setMultilineAlignment(@HorizontalAlignment int multilineAlignment) {
- mImpl.setMultilineAlignment(
- LayoutElementProto.HorizontalAlignmentProp.newBuilder()
- .setValue(
- LayoutElementProto.HorizontalAlignment.forNumber(
- multilineAlignment)));
- return this;
- }
-
- /**
- * Sets specifies how to handle content which overflows the bound of the {@link
- * Spannable} element. A {@link Spannable} element will grow as large as possible inside
- * its parent container (while still respecting max_lines); if it cannot grow large
- * enough to render all of its content, the content which cannot fit inside its
- * container will be truncated. If not defined, defaults to TEXT_OVERFLOW_TRUNCATE.
- */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setOverflow(@TextOverflow int overflow) {
- mImpl.setOverflow(
- LayoutElementProto.TextOverflowProp.newBuilder()
- .setValue(LayoutElementProto.TextOverflow.forNumber(overflow)));
- return this;
- }
-
- /** Builds an instance from accumulated values. */
- @NonNull
- public SpannableStyle build() {
- return new SpannableStyle(mImpl.build());
- }
- }
- }
-
- /** The style of a {@link Box}. */
- public static final class BoxStyle {
- private final LayoutElementProto.BoxStyle mImpl;
-
- BoxStyle(LayoutElementProto.BoxStyle impl) {
- this.mImpl = impl;
- }
-
- /** Returns a new {@link Builder}. */
- @NonNull
- public static Builder builder() {
- return new Builder();
- }
-
- /**
- * Get the protocol buffer representation of this object.
- *
- * @hide
- */
- @RestrictTo(Scope.LIBRARY)
- @NonNull
- public LayoutElementProto.BoxStyle toProto() {
- return mImpl;
- }
-
- /** Builder for {@link BoxStyle} */
- public static final class Builder {
- private final LayoutElementProto.BoxStyle.Builder mImpl =
- LayoutElementProto.BoxStyle.newBuilder();
-
- Builder() {}
-
- /**
- * Sets the background color for this {@link Box}. If not defined, defaults to being
- * transparent.
- */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setBackgroundColor(@NonNull ColorProp backgroundColor) {
- mImpl.setBackgroundColor(backgroundColor.toProto());
- return this;
- }
-
- /**
- * Sets the background color for this {@link Box}. If not defined, defaults to being
- * transparent.
- */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setBackgroundColor(@NonNull ColorProp.Builder backgroundColorBuilder) {
- mImpl.setBackgroundColor(backgroundColorBuilder.build().toProto());
- return this;
- }
-
- /**
- * Sets an optional padding inside of this {@link Box}. If not defined, {@link Box} will
- * not have any padding.
- */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setPadding(@NonNull Padding padding) {
- mImpl.setPadding(padding.toProto());
- return this;
- }
-
- /**
- * Sets an optional padding inside of this {@link Box}. If not defined, {@link Box} will
- * not have any padding.
- */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setPadding(@NonNull Padding.Builder paddingBuilder) {
- mImpl.setPadding(paddingBuilder.build().toProto());
- return this;
- }
-
- /**
- * Sets an optional border for this {@link Box}. If not defined, {@link Box} will not
- * have a border.
- */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setBorder(@NonNull Border border) {
- mImpl.setBorder(border.toProto());
- return this;
- }
-
- /**
- * Sets an optional border for this {@link Box}. If not defined, {@link Box} will not
- * have a border.
- */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setBorder(@NonNull Border.Builder borderBuilder) {
- mImpl.setBorder(borderBuilder.build().toProto());
- return this;
- }
-
- /**
- * Sets the corner properties of this {@link Box}. This only affects the drawing of this
- * {@link Box} if either "color" or "border" are also set. If not defined, defaults to
- * having a square corner.
- */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setCorner(@NonNull Corner corner) {
- mImpl.setCorner(corner.toProto());
- return this;
- }
-
- /**
- * Sets the corner properties of this {@link Box}. This only affects the drawing of this
- * {@link Box} if either "color" or "border" are also set. If not defined, defaults to
- * having a square corner.
- */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setCorner(@NonNull Corner.Builder cornerBuilder) {
- mImpl.setCorner(cornerBuilder.build().toProto());
- return this;
- }
-
- /** Builds an instance from accumulated values. */
- @NonNull
- public BoxStyle build() {
- return new BoxStyle(mImpl.build());
- }
- }
- }
-
- /** The style of a line. */
- public static final class LineStyle {
- private final LayoutElementProto.LineStyle mImpl;
-
- LineStyle(LayoutElementProto.LineStyle impl) {
- this.mImpl = impl;
- }
-
- /** Returns a new {@link Builder}. */
- @NonNull
- public static Builder builder() {
- return new Builder();
- }
-
- /**
- * Get the protocol buffer representation of this object.
- *
- * @hide
- */
- @RestrictTo(Scope.LIBRARY)
- @NonNull
- public LayoutElementProto.LineStyle toProto() {
- return mImpl;
- }
-
- /** Builder for {@link LineStyle} */
- public static final class Builder {
- private final LayoutElementProto.LineStyle.Builder mImpl =
- LayoutElementProto.LineStyle.newBuilder();
-
- Builder() {}
-
- /** Sets color of this line. If not defined, defaults to white. */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setColor(@NonNull ColorProp color) {
- mImpl.setColor(color.toProto());
- return this;
- }
-
- /** Sets color of this line. If not defined, defaults to white. */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setColor(@NonNull ColorProp.Builder colorBuilder) {
- mImpl.setColor(colorBuilder.build().toProto());
- return this;
- }
-
- /** Builds an instance from accumulated values. */
- @NonNull
- public LineStyle build() {
- return new LineStyle(mImpl.build());
+ public FontStyle build() {
+ return FontStyle.fromProto(mImpl.build());
}
}
}
/** A text string. */
- public static final class Text implements Span, LayoutElement {
+ public static final class Text implements LayoutElement {
private final LayoutElementProto.Text mImpl;
- Text(LayoutElementProto.Text impl) {
+ private Text(LayoutElementProto.Text impl) {
this.mImpl = impl;
}
@@ -1041,7 +415,14 @@
}
/** @hide */
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static Text fromProto(@NonNull LayoutElementProto.Text proto) {
+ return new Text(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
LayoutElementProto.Text toProto() {
return mImpl;
@@ -1049,22 +430,14 @@
/** @hide */
@Override
- @RestrictTo(Scope.LIBRARY)
- @NonNull
- public LayoutElementProto.Span toSpanProto() {
- return LayoutElementProto.Span.newBuilder().setText(mImpl).build();
- }
-
- /** @hide */
- @Override
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public LayoutElementProto.LayoutElement toLayoutElementProto() {
return LayoutElementProto.LayoutElement.newBuilder().setText(mImpl).build();
}
/** Builder for {@link Text}. */
- public static final class Builder implements Span.Builder, LayoutElement.Builder {
+ public static final class Builder implements LayoutElement.Builder {
private final LayoutElementProto.Text.Builder mImpl =
LayoutElementProto.Text.newBuilder();
@@ -1079,32 +452,6 @@
}
/**
- * Sets an optional style for this text string.
- *
- * @deprecated Use {@link Spannable} with {@link SpannableStyle} instead.
- */
- @SuppressLint("MissingGetterMatchingBuilder")
- @Deprecated
- @NonNull
- public Builder setStyle(@NonNull TextStyle style) {
- mImpl.setStyle(style.toProto());
- return this;
- }
-
- /**
- * Sets an optional style for this text string.
- *
- * @deprecated Use {@link Spannable} with {@link SpannableStyle} instead.
- */
- @SuppressLint("MissingGetterMatchingBuilder")
- @Deprecated
- @NonNull
- public Builder setStyle(@NonNull TextStyle.Builder styleBuilder) {
- mImpl.setStyle(styleBuilder.build().toProto());
- return this;
- }
-
- /**
* Sets the style of font to use (size, bold etc). If not specified, defaults to the
* platform's default body font.
*/
@@ -1126,98 +473,101 @@
return this;
}
+ /**
+ * Sets {@link androidx.wear.tiles.builders.ModifiersBuilders.Modifiers} for this
+ * element.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setModifiers(@NonNull Modifiers modifiers) {
+ mImpl.setModifiers(modifiers.toProto());
+ return this;
+ }
+
+ /**
+ * Sets {@link androidx.wear.tiles.builders.ModifiersBuilders.Modifiers} for this
+ * element.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setModifiers(@NonNull Modifiers.Builder modifiersBuilder) {
+ mImpl.setModifiers(modifiersBuilder.build().toProto());
+ return this;
+ }
+
+ /**
+ * Sets the maximum number of lines that can be represented by the {@link Text} element.
+ * If not defined, the {@link Text} element will be treated as a single-line element.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setMaxLines(@IntRange(from = 1) int maxLines) {
+ mImpl.setMaxLines(TypesProto.Int32Prop.newBuilder().setValue(maxLines));
+ return this;
+ }
+
+ /**
+ * Sets alignment of the text within its bounds. Note that a {@link Text} element will
+ * size itself to wrap its contents, so this option is meaningless for single-line text
+ * (for that, use alignment of the outer container). For multi-line text, however, this
+ * will set the alignment of lines relative to the {@link Text} element bounds. If not
+ * defined, defaults to TEXT_ALIGN_CENTER.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setMultilineAlignment(@TextAlignment int multilineAlignment) {
+ mImpl.setMultilineAlignment(
+ LayoutElementProto.TextAlignmentProp.newBuilder()
+ .setValue(
+ LayoutElementProto.TextAlignment.forNumber(
+ multilineAlignment)));
+ return this;
+ }
+
+ /**
+ * Sets how to handle text which overflows the bound of the {@link Text} element. A
+ * {@link Text} element will grow as large as possible inside its parent container
+ * (while still respecting max_lines); if it cannot grow large enough to render all of
+ * its text, the text which cannot fit inside its container will be truncated. If not
+ * defined, defaults to TEXT_OVERFLOW_TRUNCATE.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setOverflow(@TextOverflow int overflow) {
+ mImpl.setOverflow(
+ LayoutElementProto.TextOverflowProp.newBuilder()
+ .setValue(LayoutElementProto.TextOverflow.forNumber(overflow)));
+ return this;
+ }
+
+ /**
+ * Sets the explicit height between lines of text. This is equivalent to the vertical
+ * distance between subsequent baselines. If not specified, defaults the font's
+ * recommended interline spacing.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setLineHeight(@NonNull SpProp lineHeight) {
+ mImpl.setLineHeight(lineHeight.toProto());
+ return this;
+ }
+
+ /**
+ * Sets the explicit height between lines of text. This is equivalent to the vertical
+ * distance between subsequent baselines. If not specified, defaults the font's
+ * recommended interline spacing.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setLineHeight(@NonNull SpProp.Builder lineHeightBuilder) {
+ mImpl.setLineHeight(lineHeightBuilder.build().toProto());
+ return this;
+ }
+
@Override
@NonNull
public Text build() {
- return new Text(mImpl.build());
- }
- }
- }
-
- /**
- * A holder for an element which can have associated {@link
- * androidx.wear.tiles.builders.ActionBuilders.Action} items for click events. When an element
- * wrapped in a {@link Clickable} is clicked, it will fire the associated action.
- */
- public static final class Clickable implements LayoutElement {
- private final LayoutElementProto.Clickable mImpl;
-
- Clickable(LayoutElementProto.Clickable impl) {
- this.mImpl = impl;
- }
-
- /** Returns a new {@link Builder}. */
- @NonNull
- public static Builder builder() {
- return new Builder();
- }
-
- /** @hide */
- @RestrictTo(Scope.LIBRARY)
- @NonNull
- LayoutElementProto.Clickable toProto() {
- return mImpl;
- }
-
- /** @hide */
- @Override
- @RestrictTo(Scope.LIBRARY)
- @NonNull
- public LayoutElementProto.LayoutElement toLayoutElementProto() {
- return LayoutElementProto.LayoutElement.newBuilder().setClickable(mImpl).build();
- }
-
- /** Builder for {@link Clickable}. */
- public static final class Builder implements LayoutElement.Builder {
- private final LayoutElementProto.Clickable.Builder mImpl =
- LayoutElementProto.Clickable.newBuilder();
-
- Builder() {}
-
- /** Sets the ID associated with this action. */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setId(@NonNull String id) {
- mImpl.setId(id);
- return this;
- }
-
- /** Sets the layout element to attach the action to. */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setContent(@NonNull LayoutElement content) {
- mImpl.setContent(content.toLayoutElementProto());
- return this;
- }
-
- /** Sets the layout element to attach the action to. */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setContent(@NonNull LayoutElement.Builder contentBuilder) {
- mImpl.setContent(contentBuilder.build().toLayoutElementProto());
- return this;
- }
-
- /** Sets the action to perform when "content" is clicked. */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setOnClick(@NonNull Action onClick) {
- mImpl.setOnClick(onClick.toActionProto());
- return this;
- }
-
- /** Sets the action to perform when "content" is clicked. */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setOnClick(@NonNull Action.Builder onClickBuilder) {
- mImpl.setOnClick(onClickBuilder.build().toActionProto());
- return this;
- }
-
- @Override
- @NonNull
- public Clickable build() {
- return new Clickable(mImpl.build());
+ return Text.fromProto(mImpl.build());
}
}
}
@@ -1232,7 +582,7 @@
public static final class Image implements LayoutElement {
private final LayoutElementProto.Image mImpl;
- Image(LayoutElementProto.Image impl) {
+ private Image(LayoutElementProto.Image impl) {
this.mImpl = impl;
}
@@ -1243,7 +593,14 @@
}
/** @hide */
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static Image fromProto(@NonNull LayoutElementProto.Image proto) {
+ return new Image(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
LayoutElementProto.Image toProto() {
return mImpl;
@@ -1251,7 +608,7 @@
/** @hide */
@Override
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public LayoutElementProto.LayoutElement toLayoutElementProto() {
return LayoutElementProto.LayoutElement.newBuilder().setImage(mImpl).build();
@@ -1322,10 +679,32 @@
return this;
}
+ /**
+ * Sets {@link androidx.wear.tiles.builders.ModifiersBuilders.Modifiers} for this
+ * element.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setModifiers(@NonNull Modifiers modifiers) {
+ mImpl.setModifiers(modifiers.toProto());
+ return this;
+ }
+
+ /**
+ * Sets {@link androidx.wear.tiles.builders.ModifiersBuilders.Modifiers} for this
+ * element.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setModifiers(@NonNull Modifiers.Builder modifiersBuilder) {
+ mImpl.setModifiers(modifiersBuilder.build().toProto());
+ return this;
+ }
+
@Override
@NonNull
public Image build() {
- return new Image(mImpl.build());
+ return Image.fromProto(mImpl.build());
}
}
}
@@ -1334,7 +713,7 @@
public static final class Spacer implements LayoutElement {
private final LayoutElementProto.Spacer mImpl;
- Spacer(LayoutElementProto.Spacer impl) {
+ private Spacer(LayoutElementProto.Spacer impl) {
this.mImpl = impl;
}
@@ -1345,7 +724,14 @@
}
/** @hide */
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static Spacer fromProto(@NonNull LayoutElementProto.Spacer proto) {
+ return new Spacer(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
LayoutElementProto.Spacer toProto() {
return mImpl;
@@ -1353,7 +739,7 @@
/** @hide */
@Override
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public LayoutElementProto.LayoutElement toLayoutElementProto() {
return LayoutElementProto.LayoutElement.newBuilder().setSpacer(mImpl).build();
@@ -1373,8 +759,8 @@
*/
@SuppressLint("MissingGetterMatchingBuilder")
@NonNull
- public Builder setWidth(@NonNull LinearOrAngularDimension width) {
- mImpl.setWidth(width.toLinearOrAngularDimensionProto());
+ public Builder setWidth(@NonNull SpacerDimension width) {
+ mImpl.setWidth(width.toSpacerDimensionProto());
return this;
}
@@ -1385,31 +771,53 @@
*/
@SuppressLint("MissingGetterMatchingBuilder")
@NonNull
- public Builder setWidth(@NonNull LinearOrAngularDimension.Builder widthBuilder) {
- mImpl.setWidth(widthBuilder.build().toLinearOrAngularDimensionProto());
+ public Builder setWidth(@NonNull SpacerDimension.Builder widthBuilder) {
+ mImpl.setWidth(widthBuilder.build().toSpacerDimensionProto());
return this;
}
/** Sets the height of this spacer. If not defined, defaults to 0. */
@SuppressLint("MissingGetterMatchingBuilder")
@NonNull
- public Builder setHeight(@NonNull DpProp height) {
- mImpl.setHeight(height.toProto());
+ public Builder setHeight(@NonNull SpacerDimension height) {
+ mImpl.setHeight(height.toSpacerDimensionProto());
return this;
}
/** Sets the height of this spacer. If not defined, defaults to 0. */
@SuppressLint("MissingGetterMatchingBuilder")
@NonNull
- public Builder setHeight(@NonNull DpProp.Builder heightBuilder) {
- mImpl.setHeight(heightBuilder.build().toProto());
+ public Builder setHeight(@NonNull SpacerDimension.Builder heightBuilder) {
+ mImpl.setHeight(heightBuilder.build().toSpacerDimensionProto());
+ return this;
+ }
+
+ /**
+ * Sets {@link androidx.wear.tiles.builders.ModifiersBuilders.Modifiers} for this
+ * element.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setModifiers(@NonNull Modifiers modifiers) {
+ mImpl.setModifiers(modifiers.toProto());
+ return this;
+ }
+
+ /**
+ * Sets {@link androidx.wear.tiles.builders.ModifiersBuilders.Modifiers} for this
+ * element.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setModifiers(@NonNull Modifiers.Builder modifiersBuilder) {
+ mImpl.setModifiers(modifiersBuilder.build().toProto());
return this;
}
@Override
@NonNull
public Spacer build() {
- return new Spacer(mImpl.build());
+ return Spacer.fromProto(mImpl.build());
}
}
}
@@ -1421,7 +829,7 @@
public static final class Box implements LayoutElement {
private final LayoutElementProto.Box mImpl;
- Box(LayoutElementProto.Box impl) {
+ private Box(LayoutElementProto.Box impl) {
this.mImpl = impl;
}
@@ -1432,7 +840,14 @@
}
/** @hide */
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static Box fromProto(@NonNull LayoutElementProto.Box proto) {
+ return new Box(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
LayoutElementProto.Box toProto() {
return mImpl;
@@ -1440,7 +855,7 @@
/** @hide */
@Override
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public LayoutElementProto.LayoutElement toLayoutElementProto() {
return LayoutElementProto.LayoutElement.newBuilder().setBox(mImpl).build();
@@ -1469,22 +884,6 @@
return this;
}
- /** Sets the style of the {@link Box} (padding, background color, border etc). */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setStyle(@NonNull BoxStyle style) {
- mImpl.setStyle(style.toProto());
- return this;
- }
-
- /** Sets the style of the {@link Box} (padding, background color, border etc). */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setStyle(@NonNull BoxStyle.Builder styleBuilder) {
- mImpl.setStyle(styleBuilder.build().toProto());
- return this;
- }
-
/**
* Sets the height of this {@link Box}. If not defined, this will size itself to fit all
* of its children (i.e. a WrappedDimension).
@@ -1559,10 +958,251 @@
return this;
}
+ /**
+ * Sets {@link androidx.wear.tiles.builders.ModifiersBuilders.Modifiers} for this
+ * element.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setModifiers(@NonNull Modifiers modifiers) {
+ mImpl.setModifiers(modifiers.toProto());
+ return this;
+ }
+
+ /**
+ * Sets {@link androidx.wear.tiles.builders.ModifiersBuilders.Modifiers} for this
+ * element.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setModifiers(@NonNull Modifiers.Builder modifiersBuilder) {
+ mImpl.setModifiers(modifiersBuilder.build().toProto());
+ return this;
+ }
+
@Override
@NonNull
public Box build() {
- return new Box(mImpl.build());
+ return Box.fromProto(mImpl.build());
+ }
+ }
+ }
+
+ /** A portion of text which can be added to a {@link Span}. */
+ public static final class SpanText implements Span {
+ private final LayoutElementProto.SpanText mImpl;
+
+ private SpanText(LayoutElementProto.SpanText impl) {
+ this.mImpl = impl;
+ }
+
+ /** Returns a new {@link Builder}. */
+ @NonNull
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static SpanText fromProto(@NonNull LayoutElementProto.SpanText proto) {
+ return new SpanText(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ LayoutElementProto.SpanText toProto() {
+ return mImpl;
+ }
+
+ /** @hide */
+ @Override
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public LayoutElementProto.Span toSpanProto() {
+ return LayoutElementProto.Span.newBuilder().setText(mImpl).build();
+ }
+
+ /** Builder for {@link SpanText}. */
+ public static final class Builder implements Span.Builder {
+ private final LayoutElementProto.SpanText.Builder mImpl =
+ LayoutElementProto.SpanText.newBuilder();
+
+ Builder() {}
+
+ /** Sets the text to render. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setText(@NonNull String text) {
+ mImpl.setText(TypesProto.StringProp.newBuilder().setValue(text));
+ return this;
+ }
+
+ /**
+ * Sets the style of font to use (size, bold etc). If not specified, defaults to the
+ * platform's default body font.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setFontStyle(@NonNull FontStyle fontStyle) {
+ mImpl.setFontStyle(fontStyle.toProto());
+ return this;
+ }
+
+ /**
+ * Sets the style of font to use (size, bold etc). If not specified, defaults to the
+ * platform's default body font.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setFontStyle(@NonNull FontStyle.Builder fontStyleBuilder) {
+ mImpl.setFontStyle(fontStyleBuilder.build().toProto());
+ return this;
+ }
+
+ /**
+ * Sets {@link androidx.wear.tiles.builders.ModifiersBuilders.Modifiers} for this
+ * element.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setModifiers(@NonNull SpanModifiers modifiers) {
+ mImpl.setModifiers(modifiers.toProto());
+ return this;
+ }
+
+ /**
+ * Sets {@link androidx.wear.tiles.builders.ModifiersBuilders.Modifiers} for this
+ * element.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setModifiers(@NonNull SpanModifiers.Builder modifiersBuilder) {
+ mImpl.setModifiers(modifiersBuilder.build().toProto());
+ return this;
+ }
+
+ @Override
+ @NonNull
+ public SpanText build() {
+ return SpanText.fromProto(mImpl.build());
+ }
+ }
+ }
+
+ /** An image which can be added to a {@link Span}. */
+ public static final class SpanImage implements Span {
+ private final LayoutElementProto.SpanImage mImpl;
+
+ private SpanImage(LayoutElementProto.SpanImage impl) {
+ this.mImpl = impl;
+ }
+
+ /** Returns a new {@link Builder}. */
+ @NonNull
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static SpanImage fromProto(@NonNull LayoutElementProto.SpanImage proto) {
+ return new SpanImage(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ LayoutElementProto.SpanImage toProto() {
+ return mImpl;
+ }
+
+ /** @hide */
+ @Override
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public LayoutElementProto.Span toSpanProto() {
+ return LayoutElementProto.Span.newBuilder().setImage(mImpl).build();
+ }
+
+ /** Builder for {@link SpanImage}. */
+ public static final class Builder implements Span.Builder {
+ private final LayoutElementProto.SpanImage.Builder mImpl =
+ LayoutElementProto.SpanImage.newBuilder();
+
+ Builder() {}
+
+ /**
+ * Sets the resource_id of the image to render. This must exist in the supplied resource
+ * bundle.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setResourceId(@NonNull String resourceId) {
+ mImpl.setResourceId(TypesProto.StringProp.newBuilder().setValue(resourceId));
+ return this;
+ }
+
+ /** Sets the width of this image. If not defined, the image will not be rendered. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setWidth(@NonNull DpProp width) {
+ mImpl.setWidth(width.toProto());
+ return this;
+ }
+
+ /** Sets the width of this image. If not defined, the image will not be rendered. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setWidth(@NonNull DpProp.Builder widthBuilder) {
+ mImpl.setWidth(widthBuilder.build().toProto());
+ return this;
+ }
+
+ /** Sets the height of this image. If not defined, the image will not be rendered. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setHeight(@NonNull DpProp height) {
+ mImpl.setHeight(height.toProto());
+ return this;
+ }
+
+ /** Sets the height of this image. If not defined, the image will not be rendered. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setHeight(@NonNull DpProp.Builder heightBuilder) {
+ mImpl.setHeight(heightBuilder.build().toProto());
+ return this;
+ }
+
+ /**
+ * Sets {@link androidx.wear.tiles.builders.ModifiersBuilders.Modifiers} for this
+ * element.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setModifiers(@NonNull SpanModifiers modifiers) {
+ mImpl.setModifiers(modifiers.toProto());
+ return this;
+ }
+
+ /**
+ * Sets {@link androidx.wear.tiles.builders.ModifiersBuilders.Modifiers} for this
+ * element.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setModifiers(@NonNull SpanModifiers.Builder modifiersBuilder) {
+ mImpl.setModifiers(modifiersBuilder.build().toProto());
+ return this;
+ }
+
+ @Override
+ @NonNull
+ public SpanImage build() {
+ return SpanImage.fromProto(mImpl.build());
}
}
}
@@ -1570,7 +1210,7 @@
/**
* Interface defining a single {@link Span}. Each {@link Span} forms part of a larger {@link
* Spannable} widget. At the moment, the only widgets which can be added to {@link Spannable}
- * containers are {@link Text} elements.
+ * containers are {@link SpanText} and {@link SpanImage} elements.
*/
public interface Span {
/**
@@ -1578,7 +1218,7 @@
*
* @hide
*/
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
LayoutElementProto.Span toSpanProto();
@@ -1601,7 +1241,7 @@
public static final class Spannable implements LayoutElement {
private final LayoutElementProto.Spannable mImpl;
- Spannable(LayoutElementProto.Spannable impl) {
+ private Spannable(LayoutElementProto.Spannable impl) {
this.mImpl = impl;
}
@@ -1612,7 +1252,14 @@
}
/** @hide */
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static Spannable fromProto(@NonNull LayoutElementProto.Spannable proto) {
+ return new Spannable(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
LayoutElementProto.Spannable toProto() {
return mImpl;
@@ -1620,7 +1267,7 @@
/** @hide */
@Override
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public LayoutElementProto.LayoutElement toLayoutElementProto() {
return LayoutElementProto.LayoutElement.newBuilder().setSpannable(mImpl).build();
@@ -1649,26 +1296,104 @@
return this;
}
- /** Sets the style of this {@link Spannable}. */
+ /**
+ * Sets {@link androidx.wear.tiles.builders.ModifiersBuilders.Modifiers} for this
+ * element.
+ */
@SuppressLint("MissingGetterMatchingBuilder")
@NonNull
- public Builder setStyle(@NonNull SpannableStyle style) {
- mImpl.setStyle(style.toProto());
+ public Builder setModifiers(@NonNull Modifiers modifiers) {
+ mImpl.setModifiers(modifiers.toProto());
return this;
}
- /** Sets the style of this {@link Spannable}. */
+ /**
+ * Sets {@link androidx.wear.tiles.builders.ModifiersBuilders.Modifiers} for this
+ * element.
+ */
@SuppressLint("MissingGetterMatchingBuilder")
@NonNull
- public Builder setStyle(@NonNull SpannableStyle.Builder styleBuilder) {
- mImpl.setStyle(styleBuilder.build().toProto());
+ public Builder setModifiers(@NonNull Modifiers.Builder modifiersBuilder) {
+ mImpl.setModifiers(modifiersBuilder.build().toProto());
+ return this;
+ }
+
+ /**
+ * Sets the maximum number of lines that can be represented by the {@link Spannable}
+ * element. If not defined, the {@link Spannable} element will be treated as a
+ * single-line element.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setMaxLines(@IntRange(from = 1) int maxLines) {
+ mImpl.setMaxLines(TypesProto.Int32Prop.newBuilder().setValue(maxLines));
+ return this;
+ }
+
+ /**
+ * Sets alignment of the {@link Spannable} content within its bounds. Note that a {@link
+ * Spannable} element will size itself to wrap its contents, so this option is
+ * meaningless for single-line content (for that, use alignment of the outer container).
+ * For multi-line content, however, this will set the alignment of lines relative to the
+ * {@link Spannable} element bounds. If not defined, defaults to TEXT_ALIGN_CENTER.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setMultilineAlignment(@HorizontalAlignment int multilineAlignment) {
+ mImpl.setMultilineAlignment(
+ LayoutElementProto.HorizontalAlignmentProp.newBuilder()
+ .setValue(
+ LayoutElementProto.HorizontalAlignment.forNumber(
+ multilineAlignment)));
+ return this;
+ }
+
+ /**
+ * Sets how to handle content which overflows the bound of the {@link Spannable}
+ * element. A {@link Spannable} element will grow as large as possible inside its parent
+ * container (while still respecting max_lines); if it cannot grow large enough to
+ * render all of its content, the content which cannot fit inside its container will be
+ * truncated. If not defined, defaults to TEXT_OVERFLOW_TRUNCATE.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setOverflow(@TextOverflow int overflow) {
+ mImpl.setOverflow(
+ LayoutElementProto.TextOverflowProp.newBuilder()
+ .setValue(LayoutElementProto.TextOverflow.forNumber(overflow)));
+ return this;
+ }
+
+ /**
+ * Sets extra spacing to add between each line. This will apply to all spans regardless
+ * of their font size. This is in addition to original line heights. Note that this
+ * won't add any additional space before the first line or after the last line. The
+ * default value is zero and negative values will decrease the interline spacing.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setLineSpacing(@NonNull SpProp lineSpacing) {
+ mImpl.setLineSpacing(lineSpacing.toProto());
+ return this;
+ }
+
+ /**
+ * Sets extra spacing to add between each line. This will apply to all spans regardless
+ * of their font size. This is in addition to original line heights. Note that this
+ * won't add any additional space before the first line or after the last line. The
+ * default value is zero and negative values will decrease the interline spacing.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setLineSpacing(@NonNull SpProp.Builder lineSpacingBuilder) {
+ mImpl.setLineSpacing(lineSpacingBuilder.build().toProto());
return this;
}
@Override
@NonNull
public Spannable build() {
- return new Spannable(mImpl.build());
+ return Spannable.fromProto(mImpl.build());
}
}
}
@@ -1686,7 +1411,7 @@
public static final class Column implements LayoutElement {
private final LayoutElementProto.Column mImpl;
- Column(LayoutElementProto.Column impl) {
+ private Column(LayoutElementProto.Column impl) {
this.mImpl = impl;
}
@@ -1697,7 +1422,14 @@
}
/** @hide */
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static Column fromProto(@NonNull LayoutElementProto.Column proto) {
+ return new Column(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
LayoutElementProto.Column toProto() {
return mImpl;
@@ -1705,7 +1437,7 @@
/** @hide */
@Override
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public LayoutElementProto.LayoutElement toLayoutElementProto() {
return LayoutElementProto.LayoutElement.newBuilder().setColumn(mImpl).build();
@@ -1793,10 +1525,32 @@
return this;
}
+ /**
+ * Sets {@link androidx.wear.tiles.builders.ModifiersBuilders.Modifiers} for this
+ * element.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setModifiers(@NonNull Modifiers modifiers) {
+ mImpl.setModifiers(modifiers.toProto());
+ return this;
+ }
+
+ /**
+ * Sets {@link androidx.wear.tiles.builders.ModifiersBuilders.Modifiers} for this
+ * element.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setModifiers(@NonNull Modifiers.Builder modifiersBuilder) {
+ mImpl.setModifiers(modifiersBuilder.build().toProto());
+ return this;
+ }
+
@Override
@NonNull
public Column build() {
- return new Column(mImpl.build());
+ return Column.fromProto(mImpl.build());
}
}
}
@@ -1814,7 +1568,7 @@
public static final class Row implements LayoutElement {
private final LayoutElementProto.Row mImpl;
- Row(LayoutElementProto.Row impl) {
+ private Row(LayoutElementProto.Row impl) {
this.mImpl = impl;
}
@@ -1825,7 +1579,14 @@
}
/** @hide */
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static Row fromProto(@NonNull LayoutElementProto.Row proto) {
+ return new Row(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
LayoutElementProto.Row toProto() {
return mImpl;
@@ -1833,7 +1594,7 @@
/** @hide */
@Override
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public LayoutElementProto.LayoutElement toLayoutElementProto() {
return LayoutElementProto.LayoutElement.newBuilder().setRow(mImpl).build();
@@ -1921,189 +1682,32 @@
return this;
}
- @Override
- @NonNull
- public Row build() {
- return new Row(mImpl.build());
- }
- }
- }
-
- /**
- * A wrapper for an element which has a screen reader description associated with it. This
- * should generally be used sparingly, and in most cases should only be applied to the top-level
- * layout element or to Clickables.
- */
- public static final class Audible implements LayoutElement {
- private final LayoutElementProto.Audible mImpl;
-
- Audible(LayoutElementProto.Audible impl) {
- this.mImpl = impl;
- }
-
- /** Returns a new {@link Builder}. */
- @NonNull
- public static Builder builder() {
- return new Builder();
- }
-
- /** @hide */
- @RestrictTo(Scope.LIBRARY)
- @NonNull
- LayoutElementProto.Audible toProto() {
- return mImpl;
- }
-
- /** @hide */
- @Override
- @RestrictTo(Scope.LIBRARY)
- @NonNull
- public LayoutElementProto.LayoutElement toLayoutElementProto() {
- return LayoutElementProto.LayoutElement.newBuilder().setAudible(mImpl).build();
- }
-
- /** Builder for {@link Audible}. */
- public static final class Builder implements LayoutElement.Builder {
- private final LayoutElementProto.Audible.Builder mImpl =
- LayoutElementProto.Audible.newBuilder();
-
- Builder() {}
-
- /** Sets the element to wrap with the screen reader description. */
+ /**
+ * Sets {@link androidx.wear.tiles.builders.ModifiersBuilders.Modifiers} for this
+ * element.
+ */
@SuppressLint("MissingGetterMatchingBuilder")
@NonNull
- public Builder setContent(@NonNull LayoutElement content) {
- mImpl.setContent(content.toLayoutElementProto());
- return this;
- }
-
- /** Sets the element to wrap with the screen reader description. */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setContent(@NonNull LayoutElement.Builder contentBuilder) {
- mImpl.setContent(contentBuilder.build().toLayoutElementProto());
+ public Builder setModifiers(@NonNull Modifiers modifiers) {
+ mImpl.setModifiers(modifiers.toProto());
return this;
}
/**
- * Sets the accessibility label associated with this element. This will be dictated when
- * the element is focused by the screen reader.
+ * Sets {@link androidx.wear.tiles.builders.ModifiersBuilders.Modifiers} for this
+ * element.
*/
@SuppressLint("MissingGetterMatchingBuilder")
@NonNull
- public Builder setAccessibilityLabel(@NonNull String accessibilityLabel) {
- mImpl.setAccessibilityLabel(accessibilityLabel);
+ public Builder setModifiers(@NonNull Modifiers.Builder modifiersBuilder) {
+ mImpl.setModifiers(modifiersBuilder.build().toProto());
return this;
}
@Override
@NonNull
- public Audible build() {
- return new Audible(mImpl.build());
- }
- }
- }
-
- /**
- * A line. When added to a normal container, this renders as a horizontal line which can be used
- * to provide a visual break between elements. When added to an arc, it will render as a round
- * progress bar.
- */
- public static final class Line implements LayoutElement {
- private final LayoutElementProto.Line mImpl;
-
- Line(LayoutElementProto.Line impl) {
- this.mImpl = impl;
- }
-
- /** Returns a new {@link Builder}. */
- @NonNull
- public static Builder builder() {
- return new Builder();
- }
-
- /** @hide */
- @RestrictTo(Scope.LIBRARY)
- @NonNull
- LayoutElementProto.Line toProto() {
- return mImpl;
- }
-
- /** @hide */
- @Override
- @RestrictTo(Scope.LIBRARY)
- @NonNull
- public LayoutElementProto.LayoutElement toLayoutElementProto() {
- return LayoutElementProto.LayoutElement.newBuilder().setLine(mImpl).build();
- }
-
- /** Builder for {@link Line}. */
- public static final class Builder implements LayoutElement.Builder {
- private final LayoutElementProto.Line.Builder mImpl =
- LayoutElementProto.Line.newBuilder();
-
- Builder() {}
-
- /**
- * Sets the length of this {@link Line}. When this is added as the direct child of an
- * {@link Arc}, this must be specified as an AngularDimension, otherwise a
- * LinearDimension must be used. If not defined, defaults to 0.
- */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setLength(@NonNull LinearOrAngularDimension length) {
- mImpl.setLength(length.toLinearOrAngularDimensionProto());
- return this;
- }
-
- /**
- * Sets the length of this {@link Line}. When this is added as the direct child of an
- * {@link Arc}, this must be specified as an AngularDimension, otherwise a
- * LinearDimension must be used. If not defined, defaults to 0.
- */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setLength(@NonNull LinearOrAngularDimension.Builder lengthBuilder) {
- mImpl.setLength(lengthBuilder.build().toLinearOrAngularDimensionProto());
- return this;
- }
-
- /** Sets the thickness of this line. If not defined, defaults to 0. */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setThickness(@NonNull DpProp thickness) {
- mImpl.setThickness(thickness.toProto());
- return this;
- }
-
- /** Sets the thickness of this line. If not defined, defaults to 0. */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setThickness(@NonNull DpProp.Builder thicknessBuilder) {
- mImpl.setThickness(thicknessBuilder.build().toProto());
- return this;
- }
-
- /** Sets the style of this line. */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setStyle(@NonNull LineStyle style) {
- mImpl.setStyle(style.toProto());
- return this;
- }
-
- /** Sets the style of this line. */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setStyle(@NonNull LineStyle.Builder styleBuilder) {
- mImpl.setStyle(styleBuilder.build().toProto());
- return this;
- }
-
- @Override
- @NonNull
- public Line build() {
- return new Line(mImpl.build());
+ public Row build() {
+ return Row.fromProto(mImpl.build());
}
}
}
@@ -2112,15 +1716,11 @@
* An arc container. This container will fill itself to a circle, which fits inside its parent
* container, and all of its children will be placed on that circle. The fields anchor_angle and
* anchor_type can be used to specify where to draw children within this circle.
- *
- * <p>Note that there are two special cases. {@link Text} and {@link Line} elements which are
- * added as direct descendants to an arc will be drawn as a curved widget around the arc, rather
- * than just placed on the arc and drawn normally.
*/
public static final class Arc implements LayoutElement {
private final LayoutElementProto.Arc mImpl;
- Arc(LayoutElementProto.Arc impl) {
+ private Arc(LayoutElementProto.Arc impl) {
this.mImpl = impl;
}
@@ -2131,7 +1731,14 @@
}
/** @hide */
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static Arc fromProto(@NonNull LayoutElementProto.Arc proto) {
+ return new Arc(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
LayoutElementProto.Arc toProto() {
return mImpl;
@@ -2139,7 +1746,7 @@
/** @hide */
@Override
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public LayoutElementProto.LayoutElement toLayoutElementProto() {
return LayoutElementProto.LayoutElement.newBuilder().setArc(mImpl).build();
@@ -2155,75 +1762,16 @@
/** Adds one item to contents of this container. */
@SuppressLint("MissingGetterMatchingBuilder")
@NonNull
- public Builder addContent(@NonNull LayoutElement content) {
- mImpl.addContents(content.toLayoutElementProto());
+ public Builder addContent(@NonNull ArcLayoutElement content) {
+ mImpl.addContents(content.toArcLayoutElementProto());
return this;
}
/** Adds one item to contents of this container. */
@SuppressLint("MissingGetterMatchingBuilder")
@NonNull
- public Builder addContent(@NonNull LayoutElement.Builder contentBuilder) {
- mImpl.addContents(contentBuilder.build().toLayoutElementProto());
- return this;
- }
-
- /**
- * Sets the length of this {@link Arc} as an angle. If not defined, this will size
- * itself to fit all of its children. If defined, this should be a value > 0 degrees.
- */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setLength(@NonNull DegreesProp length) {
- mImpl.setLength(length.toProto());
- return this;
- }
-
- /**
- * Sets the length of this {@link Arc} as an angle. If not defined, this will size
- * itself to fit all of its children. If defined, this should be a value > 0 degrees.
- */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setLength(@NonNull DegreesProp.Builder lengthBuilder) {
- mImpl.setLength(lengthBuilder.build().toProto());
- return this;
- }
-
- /**
- * Sets the thickness of this {@link Arc}. If not defined, this will size itself to fit
- * all of its children.
- */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setThickness(@NonNull DpProp thickness) {
- mImpl.setThickness(thickness.toProto());
- return this;
- }
-
- /**
- * Sets the thickness of this {@link Arc}. If not defined, this will size itself to fit
- * all of its children.
- */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setThickness(@NonNull DpProp.Builder thicknessBuilder) {
- mImpl.setThickness(thicknessBuilder.build().toProto());
- return this;
- }
-
- /**
- * Sets whether this {@link Arc}'s children should be rotated, according to its position
- * in the arc or not. As an example, assume that an {@link Image} has been added to the
- * arc, and ends up at the 3 o clock position. If rotate_contents = true, the image will
- * be placed at the 3 o clock position, and will be rotated clockwise through 90
- * degrees. If rotate_contents = false, the image will be placed at the 3 o clock
- * position, but itself will not be rotated. If not defined, defaults to true.
- */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setRotateContents(boolean rotateContents) {
- mImpl.setRotateContents(TypesProto.BoolProp.newBuilder().setValue(rotateContents));
+ public Builder addContent(@NonNull ArcLayoutElement.Builder contentBuilder) {
+ mImpl.addContents(contentBuilder.build().toArcLayoutElementProto());
return this;
}
@@ -2290,10 +1838,443 @@
return this;
}
+ /**
+ * Sets {@link androidx.wear.tiles.builders.ModifiersBuilders.Modifiers} for this
+ * element.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setModifiers(@NonNull Modifiers modifiers) {
+ mImpl.setModifiers(modifiers.toProto());
+ return this;
+ }
+
+ /**
+ * Sets {@link androidx.wear.tiles.builders.ModifiersBuilders.Modifiers} for this
+ * element.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setModifiers(@NonNull Modifiers.Builder modifiersBuilder) {
+ mImpl.setModifiers(modifiersBuilder.build().toProto());
+ return this;
+ }
+
@Override
@NonNull
public Arc build() {
- return new Arc(mImpl.build());
+ return Arc.fromProto(mImpl.build());
+ }
+ }
+ }
+
+ /** A text element that can be used in an {@link Arc}. */
+ public static final class ArcText implements ArcLayoutElement {
+ private final LayoutElementProto.ArcText mImpl;
+
+ private ArcText(LayoutElementProto.ArcText impl) {
+ this.mImpl = impl;
+ }
+
+ /** Returns a new {@link Builder}. */
+ @NonNull
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static ArcText fromProto(@NonNull LayoutElementProto.ArcText proto) {
+ return new ArcText(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ LayoutElementProto.ArcText toProto() {
+ return mImpl;
+ }
+
+ /** @hide */
+ @Override
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public LayoutElementProto.ArcLayoutElement toArcLayoutElementProto() {
+ return LayoutElementProto.ArcLayoutElement.newBuilder().setText(mImpl).build();
+ }
+
+ /** Builder for {@link ArcText}. */
+ public static final class Builder implements ArcLayoutElement.Builder {
+ private final LayoutElementProto.ArcText.Builder mImpl =
+ LayoutElementProto.ArcText.newBuilder();
+
+ Builder() {}
+
+ /** Sets the text to render. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setText(@NonNull String text) {
+ mImpl.setText(TypesProto.StringProp.newBuilder().setValue(text));
+ return this;
+ }
+
+ /**
+ * Sets the style of font to use (size, bold etc). If not specified, defaults to the
+ * platform's default body font.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setFontStyle(@NonNull FontStyle fontStyle) {
+ mImpl.setFontStyle(fontStyle.toProto());
+ return this;
+ }
+
+ /**
+ * Sets the style of font to use (size, bold etc). If not specified, defaults to the
+ * platform's default body font.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setFontStyle(@NonNull FontStyle.Builder fontStyleBuilder) {
+ mImpl.setFontStyle(fontStyleBuilder.build().toProto());
+ return this;
+ }
+
+ /**
+ * Sets {@link androidx.wear.tiles.builders.ModifiersBuilders.Modifiers} for this
+ * element.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setModifiers(@NonNull ArcModifiers modifiers) {
+ mImpl.setModifiers(modifiers.toProto());
+ return this;
+ }
+
+ /**
+ * Sets {@link androidx.wear.tiles.builders.ModifiersBuilders.Modifiers} for this
+ * element.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setModifiers(@NonNull ArcModifiers.Builder modifiersBuilder) {
+ mImpl.setModifiers(modifiersBuilder.build().toProto());
+ return this;
+ }
+
+ @Override
+ @NonNull
+ public ArcText build() {
+ return ArcText.fromProto(mImpl.build());
+ }
+ }
+ }
+
+ /** A line that can be used in an {@link Arc} and renders as a round progress bar. */
+ public static final class ArcLine implements ArcLayoutElement {
+ private final LayoutElementProto.ArcLine mImpl;
+
+ private ArcLine(LayoutElementProto.ArcLine impl) {
+ this.mImpl = impl;
+ }
+
+ /** Returns a new {@link Builder}. */
+ @NonNull
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static ArcLine fromProto(@NonNull LayoutElementProto.ArcLine proto) {
+ return new ArcLine(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ LayoutElementProto.ArcLine toProto() {
+ return mImpl;
+ }
+
+ /** @hide */
+ @Override
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public LayoutElementProto.ArcLayoutElement toArcLayoutElementProto() {
+ return LayoutElementProto.ArcLayoutElement.newBuilder().setLine(mImpl).build();
+ }
+
+ /** Builder for {@link ArcLine}. */
+ public static final class Builder implements ArcLayoutElement.Builder {
+ private final LayoutElementProto.ArcLine.Builder mImpl =
+ LayoutElementProto.ArcLine.newBuilder();
+
+ Builder() {}
+
+ /** Sets the length of this line, in degrees. If not defined, defaults to 0. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setLength(@NonNull DegreesProp length) {
+ mImpl.setLength(length.toProto());
+ return this;
+ }
+
+ /** Sets the length of this line, in degrees. If not defined, defaults to 0. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setLength(@NonNull DegreesProp.Builder lengthBuilder) {
+ mImpl.setLength(lengthBuilder.build().toProto());
+ return this;
+ }
+
+ /** Sets the thickness of this line. If not defined, defaults to 0. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setThickness(@NonNull DpProp thickness) {
+ mImpl.setThickness(thickness.toProto());
+ return this;
+ }
+
+ /** Sets the thickness of this line. If not defined, defaults to 0. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setThickness(@NonNull DpProp.Builder thicknessBuilder) {
+ mImpl.setThickness(thicknessBuilder.build().toProto());
+ return this;
+ }
+
+ /** Sets the color of this line. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setColor(@NonNull ColorProp color) {
+ mImpl.setColor(color.toProto());
+ return this;
+ }
+
+ /** Sets the color of this line. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setColor(@NonNull ColorProp.Builder colorBuilder) {
+ mImpl.setColor(colorBuilder.build().toProto());
+ return this;
+ }
+
+ /**
+ * Sets {@link androidx.wear.tiles.builders.ModifiersBuilders.Modifiers} for this
+ * element.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setModifiers(@NonNull ArcModifiers modifiers) {
+ mImpl.setModifiers(modifiers.toProto());
+ return this;
+ }
+
+ /**
+ * Sets {@link androidx.wear.tiles.builders.ModifiersBuilders.Modifiers} for this
+ * element.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setModifiers(@NonNull ArcModifiers.Builder modifiersBuilder) {
+ mImpl.setModifiers(modifiersBuilder.build().toProto());
+ return this;
+ }
+
+ @Override
+ @NonNull
+ public ArcLine build() {
+ return ArcLine.fromProto(mImpl.build());
+ }
+ }
+ }
+
+ /** A simple spacer used to provide padding between adjacent elements in an {@link Arc}. */
+ public static final class ArcSpacer implements ArcLayoutElement {
+ private final LayoutElementProto.ArcSpacer mImpl;
+
+ private ArcSpacer(LayoutElementProto.ArcSpacer impl) {
+ this.mImpl = impl;
+ }
+
+ /** Returns a new {@link Builder}. */
+ @NonNull
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static ArcSpacer fromProto(@NonNull LayoutElementProto.ArcSpacer proto) {
+ return new ArcSpacer(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ LayoutElementProto.ArcSpacer toProto() {
+ return mImpl;
+ }
+
+ /** @hide */
+ @Override
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public LayoutElementProto.ArcLayoutElement toArcLayoutElementProto() {
+ return LayoutElementProto.ArcLayoutElement.newBuilder().setSpacer(mImpl).build();
+ }
+
+ /** Builder for {@link ArcSpacer}. */
+ public static final class Builder implements ArcLayoutElement.Builder {
+ private final LayoutElementProto.ArcSpacer.Builder mImpl =
+ LayoutElementProto.ArcSpacer.newBuilder();
+
+ Builder() {}
+
+ /** Sets the length of this spacer, in degrees. If not defined, defaults to 0. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setLength(@NonNull DegreesProp length) {
+ mImpl.setLength(length.toProto());
+ return this;
+ }
+
+ /** Sets the length of this spacer, in degrees. If not defined, defaults to 0. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setLength(@NonNull DegreesProp.Builder lengthBuilder) {
+ mImpl.setLength(lengthBuilder.build().toProto());
+ return this;
+ }
+
+ /** Sets the thickness of this spacer, in DP. If not defined, defaults to 0. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setThickness(@NonNull DpProp thickness) {
+ mImpl.setThickness(thickness.toProto());
+ return this;
+ }
+
+ /** Sets the thickness of this spacer, in DP. If not defined, defaults to 0. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setThickness(@NonNull DpProp.Builder thicknessBuilder) {
+ mImpl.setThickness(thicknessBuilder.build().toProto());
+ return this;
+ }
+
+ /**
+ * Sets {@link androidx.wear.tiles.builders.ModifiersBuilders.Modifiers} for this
+ * element.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setModifiers(@NonNull ArcModifiers modifiers) {
+ mImpl.setModifiers(modifiers.toProto());
+ return this;
+ }
+
+ /**
+ * Sets {@link androidx.wear.tiles.builders.ModifiersBuilders.Modifiers} for this
+ * element.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setModifiers(@NonNull ArcModifiers.Builder modifiersBuilder) {
+ mImpl.setModifiers(modifiersBuilder.build().toProto());
+ return this;
+ }
+
+ @Override
+ @NonNull
+ public ArcSpacer build() {
+ return ArcSpacer.fromProto(mImpl.build());
+ }
+ }
+ }
+
+ /** A container that allows a standard {@link LayoutElement} to be added to an {@link Arc}. */
+ public static final class ArcAdapter implements ArcLayoutElement {
+ private final LayoutElementProto.ArcAdapter mImpl;
+
+ private ArcAdapter(LayoutElementProto.ArcAdapter impl) {
+ this.mImpl = impl;
+ }
+
+ /** Returns a new {@link Builder}. */
+ @NonNull
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static ArcAdapter fromProto(@NonNull LayoutElementProto.ArcAdapter proto) {
+ return new ArcAdapter(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ LayoutElementProto.ArcAdapter toProto() {
+ return mImpl;
+ }
+
+ /** @hide */
+ @Override
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public LayoutElementProto.ArcLayoutElement toArcLayoutElementProto() {
+ return LayoutElementProto.ArcLayoutElement.newBuilder().setAdapter(mImpl).build();
+ }
+
+ /** Builder for {@link ArcAdapter}. */
+ public static final class Builder implements ArcLayoutElement.Builder {
+ private final LayoutElementProto.ArcAdapter.Builder mImpl =
+ LayoutElementProto.ArcAdapter.newBuilder();
+
+ Builder() {}
+
+ /** Sets the element to adapt to an {@link Arc}. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setContent(@NonNull LayoutElement content) {
+ mImpl.setContent(content.toLayoutElementProto());
+ return this;
+ }
+
+ /** Sets the element to adapt to an {@link Arc}. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setContent(@NonNull LayoutElement.Builder contentBuilder) {
+ mImpl.setContent(contentBuilder.build().toLayoutElementProto());
+ return this;
+ }
+
+ /**
+ * Sets whether this adapter's contents should be rotated, according to its position in
+ * the arc or not. As an example, assume that an {@link Image} has been added to the
+ * arc, and ends up at the 3 o clock position. If rotate_contents = true, the image will
+ * be placed at the 3 o clock position, and will be rotated clockwise through 90
+ * degrees. If rotate_contents = false, the image will be placed at the 3 o clock
+ * position, but itself will not be rotated. If not defined, defaults to false.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setRotateContents(boolean rotateContents) {
+ mImpl.setRotateContents(TypesProto.BoolProp.newBuilder().setValue(rotateContents));
+ return this;
+ }
+
+ @Override
+ @NonNull
+ public ArcAdapter build() {
+ return ArcAdapter.fromProto(mImpl.build());
}
}
}
@@ -2308,7 +2289,7 @@
*
* @hide
*/
- @RestrictTo(Scope.LIBRARY)
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
LayoutElementProto.LayoutElement toLayoutElementProto();
@@ -2322,6 +2303,89 @@
}
}
+ /**
+ * Interface defining the root of all elements that can be used in an {@link Arc}. This exists
+ * to act as a holder for all of the actual arc layout elements above.
+ */
+ public interface ArcLayoutElement {
+ /**
+ * Get the protocol buffer representation of this object.
+ *
+ * @hide
+ */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ LayoutElementProto.ArcLayoutElement toArcLayoutElementProto();
+
+ /** Builder to create {@link ArcLayoutElement} objects. */
+ @SuppressLint("StaticFinalBuilder")
+ interface Builder {
+
+ /** Builds an instance with values accumulated in this Builder. */
+ @NonNull
+ ArcLayoutElement build();
+ }
+ }
+
+ /** A complete layout. */
+ public static final class Layout {
+ private final LayoutElementProto.Layout mImpl;
+
+ private Layout(LayoutElementProto.Layout impl) {
+ this.mImpl = impl;
+ }
+
+ /** Returns a new {@link Builder}. */
+ @NonNull
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static Layout fromProto(@NonNull LayoutElementProto.Layout proto) {
+ return new Layout(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public LayoutElementProto.Layout toProto() {
+ return mImpl;
+ }
+
+ /** Builder for {@link Layout} */
+ public static final class Builder {
+ private final LayoutElementProto.Layout.Builder mImpl =
+ LayoutElementProto.Layout.newBuilder();
+
+ Builder() {}
+
+ /** Sets the root element in the layout. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setRoot(@NonNull LayoutElement root) {
+ mImpl.setRoot(root.toLayoutElementProto());
+ return this;
+ }
+
+ /** Sets the root element in the layout. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setRoot(@NonNull LayoutElement.Builder rootBuilder) {
+ mImpl.setRoot(rootBuilder.build().toLayoutElementProto());
+ return this;
+ }
+
+ /** Builds an instance from accumulated values. */
+ @NonNull
+ public Layout build() {
+ return Layout.fromProto(mImpl.build());
+ }
+ }
+ }
+
/** Font styles, currently set up to match Wear's font styling. */
public static class FontStyles {
private static final int LARGE_SCREEN_WIDTH_DP = 210;
@@ -2346,97 +2410,82 @@
/** Font style for large display text. */
@NonNull
- public FontStyle display1() {
+ public FontStyle.Builder display1() {
return FontStyle.builder()
- .setBold(true)
- .setSize(DimensionBuilders.sp(isLargeScreen() ? 54 : 50))
- .build();
+ .setWeight(FONT_WEIGHT_BOLD)
+ .setSize(DimensionBuilders.sp(isLargeScreen() ? 54 : 50));
}
/** Font style for medium display text. */
@NonNull
- public FontStyle display2() {
+ public FontStyle.Builder display2() {
return FontStyle.builder()
- .setBold(true)
- .setSize(DimensionBuilders.sp(isLargeScreen() ? 44 : 40))
- .build();
+ .setWeight(FONT_WEIGHT_BOLD)
+ .setSize(DimensionBuilders.sp(isLargeScreen() ? 44 : 40));
}
/** Font style for small display text. */
@NonNull
- public FontStyle display3() {
+ public FontStyle.Builder display3() {
return FontStyle.builder()
- .setBold(true)
- .setSize(DimensionBuilders.sp(isLargeScreen() ? 34 : 30))
- .build();
+ .setWeight(FONT_WEIGHT_BOLD)
+ .setSize(DimensionBuilders.sp(isLargeScreen() ? 34 : 30));
}
/** Font style for large title text. */
@NonNull
- public FontStyle title1() {
+ public FontStyle.Builder title1() {
return FontStyle.builder()
- .setBold(true)
- .setSize(DimensionBuilders.sp(isLargeScreen() ? 26 : 24))
- .build();
+ .setWeight(FONT_WEIGHT_BOLD)
+ .setSize(DimensionBuilders.sp(isLargeScreen() ? 26 : 24));
}
/** Font style for medium title text. */
@NonNull
- public FontStyle title2() {
+ public FontStyle.Builder title2() {
return FontStyle.builder()
- .setBold(true)
- .setSize(DimensionBuilders.sp(isLargeScreen() ? 22 : 20))
- .build();
+ .setWeight(FONT_WEIGHT_BOLD)
+ .setSize(DimensionBuilders.sp(isLargeScreen() ? 22 : 20));
}
/** Font style for small title text. */
@NonNull
- public FontStyle title3() {
+ public FontStyle.Builder title3() {
return FontStyle.builder()
- .setBold(true)
- .setSize(DimensionBuilders.sp(isLargeScreen() ? 18 : 16))
- .build();
+ .setWeight(FONT_WEIGHT_BOLD)
+ .setSize(DimensionBuilders.sp(isLargeScreen() ? 18 : 16));
}
/** Font style for large body text. */
@NonNull
- public FontStyle body1() {
- return FontStyle.builder()
- .setSize(DimensionBuilders.sp(isLargeScreen() ? 18 : 16))
- .build();
+ public FontStyle.Builder body1() {
+ return FontStyle.builder().setSize(DimensionBuilders.sp(isLargeScreen() ? 18 : 16));
}
/** Font style for medium body text. */
@NonNull
- public FontStyle body2() {
- return FontStyle.builder()
- .setSize(DimensionBuilders.sp(isLargeScreen() ? 16 : 14))
- .build();
+ public FontStyle.Builder body2() {
+ return FontStyle.builder().setSize(DimensionBuilders.sp(isLargeScreen() ? 16 : 14));
}
/** Font style for button text. */
@NonNull
- public FontStyle button() {
+ public FontStyle.Builder button() {
return FontStyle.builder()
- .setBold(true)
- .setSize(DimensionBuilders.sp(isLargeScreen() ? 16 : 14))
- .build();
+ .setWeight(FONT_WEIGHT_BOLD)
+ .setSize(DimensionBuilders.sp(isLargeScreen() ? 16 : 14));
}
/** Font style for large caption text. */
@NonNull
- public FontStyle caption1() {
- return FontStyle.builder()
- .setSize(DimensionBuilders.sp(isLargeScreen() ? 16 : 14))
- .build();
+ public FontStyle.Builder caption1() {
+ return FontStyle.builder().setSize(DimensionBuilders.sp(isLargeScreen() ? 16 : 14));
}
/** Font style for medium caption text. */
@NonNull
- public FontStyle caption2() {
- return FontStyle.builder()
- .setSize(DimensionBuilders.sp(isLargeScreen() ? 14 : 12))
- .build();
+ public FontStyle.Builder caption2() {
+ return FontStyle.builder().setSize(DimensionBuilders.sp(isLargeScreen() ? 14 : 12));
}
}
}
diff --git a/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/ModifiersBuilders.java b/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/ModifiersBuilders.java
new file mode 100644
index 0000000..25c24de
--- /dev/null
+++ b/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/ModifiersBuilders.java
@@ -0,0 +1,816 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.wear.tiles.builders;
+
+import android.annotation.SuppressLint;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.RestrictTo;
+import androidx.annotation.RestrictTo.Scope;
+import androidx.wear.tiles.builders.ActionBuilders.Action;
+import androidx.wear.tiles.builders.ColorBuilders.ColorProp;
+import androidx.wear.tiles.builders.DimensionBuilders.DpProp;
+import androidx.wear.tiles.proto.ModifiersProto;
+import androidx.wear.tiles.proto.TypesProto;
+
+/** Builders for modifiers for composable layout elements. */
+public final class ModifiersBuilders {
+ private ModifiersBuilders() {}
+
+ /**
+ * A modifier for an element which can have associated Actions for click events. When an element
+ * with a ClickableModifier is clicked it will fire the associated action.
+ */
+ public static final class Clickable {
+ private final ModifiersProto.Clickable mImpl;
+
+ private Clickable(ModifiersProto.Clickable impl) {
+ this.mImpl = impl;
+ }
+
+ /** Returns a new {@link Builder}. */
+ @NonNull
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static Clickable fromProto(@NonNull ModifiersProto.Clickable proto) {
+ return new Clickable(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public ModifiersProto.Clickable toProto() {
+ return mImpl;
+ }
+
+ /** Builder for {@link Clickable} */
+ public static final class Builder {
+ private final ModifiersProto.Clickable.Builder mImpl =
+ ModifiersProto.Clickable.newBuilder();
+
+ Builder() {}
+
+ /** Sets the ID associated with this action. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setId(@NonNull String id) {
+ mImpl.setId(id);
+ return this;
+ }
+
+ /**
+ * Sets the action to perform when the element this modifier is attached to is clicked.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setOnClick(@NonNull Action onClick) {
+ mImpl.setOnClick(onClick.toActionProto());
+ return this;
+ }
+
+ /**
+ * Sets the action to perform when the element this modifier is attached to is clicked.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setOnClick(@NonNull Action.Builder onClickBuilder) {
+ mImpl.setOnClick(onClickBuilder.build().toActionProto());
+ return this;
+ }
+
+ /** Builds an instance from accumulated values. */
+ @NonNull
+ public Clickable build() {
+ return Clickable.fromProto(mImpl.build());
+ }
+ }
+ }
+
+ /**
+ * A modifier for an element which has accessibility semantics associated with it. This should
+ * generally be used sparingly, and in most cases should only be applied to the top-level layout
+ * element or to Clickables.
+ */
+ public static final class Semantics {
+ private final ModifiersProto.Semantics mImpl;
+
+ private Semantics(ModifiersProto.Semantics impl) {
+ this.mImpl = impl;
+ }
+
+ /** Returns a new {@link Builder}. */
+ @NonNull
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static Semantics fromProto(@NonNull ModifiersProto.Semantics proto) {
+ return new Semantics(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public ModifiersProto.Semantics toProto() {
+ return mImpl;
+ }
+
+ /** Builder for {@link Semantics} */
+ public static final class Builder {
+ private final ModifiersProto.Semantics.Builder mImpl =
+ ModifiersProto.Semantics.newBuilder();
+
+ Builder() {}
+
+ /**
+ * Sets the content description associated with this element. This will be dictated when
+ * the element is focused by the screen reader.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setContentDescription(@NonNull String contentDescription) {
+ mImpl.setContentDescription(contentDescription);
+ return this;
+ }
+
+ /** Builds an instance from accumulated values. */
+ @NonNull
+ public Semantics build() {
+ return Semantics.fromProto(mImpl.build());
+ }
+ }
+ }
+
+ /** A modifier to apply padding around an element. */
+ public static final class Padding {
+ private final ModifiersProto.Padding mImpl;
+
+ private Padding(ModifiersProto.Padding impl) {
+ this.mImpl = impl;
+ }
+
+ /** Returns a new {@link Builder}. */
+ @NonNull
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static Padding fromProto(@NonNull ModifiersProto.Padding proto) {
+ return new Padding(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public ModifiersProto.Padding toProto() {
+ return mImpl;
+ }
+
+ /** Builder for {@link Padding} */
+ public static final class Builder {
+ private final ModifiersProto.Padding.Builder mImpl =
+ ModifiersProto.Padding.newBuilder();
+
+ Builder() {}
+
+ /**
+ * Sets the padding on the end of the content, depending on the layout direction, in DP
+ * and the value of "rtl_aware".
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setEnd(@NonNull DpProp end) {
+ mImpl.setEnd(end.toProto());
+ return this;
+ }
+
+ /**
+ * Sets the padding on the end of the content, depending on the layout direction, in DP
+ * and the value of "rtl_aware".
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setEnd(@NonNull DpProp.Builder endBuilder) {
+ mImpl.setEnd(endBuilder.build().toProto());
+ return this;
+ }
+
+ /**
+ * Sets the padding on the start of the content, depending on the layout direction, in
+ * DP and the value of "rtl_aware".
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setStart(@NonNull DpProp start) {
+ mImpl.setStart(start.toProto());
+ return this;
+ }
+
+ /**
+ * Sets the padding on the start of the content, depending on the layout direction, in
+ * DP and the value of "rtl_aware".
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setStart(@NonNull DpProp.Builder startBuilder) {
+ mImpl.setStart(startBuilder.build().toProto());
+ return this;
+ }
+
+ /** Sets the padding at the top, in DP. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setTop(@NonNull DpProp top) {
+ mImpl.setTop(top.toProto());
+ return this;
+ }
+
+ /** Sets the padding at the top, in DP. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setTop(@NonNull DpProp.Builder topBuilder) {
+ mImpl.setTop(topBuilder.build().toProto());
+ return this;
+ }
+
+ /** Sets the padding at the bottom, in DP. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setBottom(@NonNull DpProp bottom) {
+ mImpl.setBottom(bottom.toProto());
+ return this;
+ }
+
+ /** Sets the padding at the bottom, in DP. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setBottom(@NonNull DpProp.Builder bottomBuilder) {
+ mImpl.setBottom(bottomBuilder.build().toProto());
+ return this;
+ }
+
+ /**
+ * Sets whether the start/end padding is aware of RTL support. If true, the values for
+ * start/end will follow the layout direction (i.e. start will refer to the right hand
+ * side of the container if the device is using an RTL locale). If false, start/end will
+ * always map to left/right, accordingly.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setRtlAware(boolean rtlAware) {
+ mImpl.setRtlAware(TypesProto.BoolProp.newBuilder().setValue(rtlAware));
+ return this;
+ }
+
+ /** Builds an instance from accumulated values. */
+ @NonNull
+ public Padding build() {
+ return Padding.fromProto(mImpl.build());
+ }
+ }
+ }
+
+ /** A modifier to apply a border around an element. */
+ public static final class Border {
+ private final ModifiersProto.Border mImpl;
+
+ private Border(ModifiersProto.Border impl) {
+ this.mImpl = impl;
+ }
+
+ /** Returns a new {@link Builder}. */
+ @NonNull
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static Border fromProto(@NonNull ModifiersProto.Border proto) {
+ return new Border(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public ModifiersProto.Border toProto() {
+ return mImpl;
+ }
+
+ /** Builder for {@link Border} */
+ public static final class Builder {
+ private final ModifiersProto.Border.Builder mImpl = ModifiersProto.Border.newBuilder();
+
+ Builder() {}
+
+ /** Sets the width of the border, in DP. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setWidth(@NonNull DpProp width) {
+ mImpl.setWidth(width.toProto());
+ return this;
+ }
+
+ /** Sets the width of the border, in DP. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setWidth(@NonNull DpProp.Builder widthBuilder) {
+ mImpl.setWidth(widthBuilder.build().toProto());
+ return this;
+ }
+
+ /** Sets the color of the border. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setColor(@NonNull ColorProp color) {
+ mImpl.setColor(color.toProto());
+ return this;
+ }
+
+ /** Sets the color of the border. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setColor(@NonNull ColorProp.Builder colorBuilder) {
+ mImpl.setColor(colorBuilder.build().toProto());
+ return this;
+ }
+
+ /** Builds an instance from accumulated values. */
+ @NonNull
+ public Border build() {
+ return Border.fromProto(mImpl.build());
+ }
+ }
+ }
+
+ /** The corner of a {@link androidx.wear.tiles.builders.LayoutElementBuilders.Box} element. */
+ public static final class Corner {
+ private final ModifiersProto.Corner mImpl;
+
+ private Corner(ModifiersProto.Corner impl) {
+ this.mImpl = impl;
+ }
+
+ /** Returns a new {@link Builder}. */
+ @NonNull
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static Corner fromProto(@NonNull ModifiersProto.Corner proto) {
+ return new Corner(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public ModifiersProto.Corner toProto() {
+ return mImpl;
+ }
+
+ /** Builder for {@link Corner} */
+ public static final class Builder {
+ private final ModifiersProto.Corner.Builder mImpl = ModifiersProto.Corner.newBuilder();
+
+ Builder() {}
+
+ /** Sets the radius of the corner in DP. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setRadius(@NonNull DpProp radius) {
+ mImpl.setRadius(radius.toProto());
+ return this;
+ }
+
+ /** Sets the radius of the corner in DP. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setRadius(@NonNull DpProp.Builder radiusBuilder) {
+ mImpl.setRadius(radiusBuilder.build().toProto());
+ return this;
+ }
+
+ /** Builds an instance from accumulated values. */
+ @NonNull
+ public Corner build() {
+ return Corner.fromProto(mImpl.build());
+ }
+ }
+ }
+
+ /** A modifier to apply a background to an element. */
+ public static final class Background {
+ private final ModifiersProto.Background mImpl;
+
+ private Background(ModifiersProto.Background impl) {
+ this.mImpl = impl;
+ }
+
+ /** Returns a new {@link Builder}. */
+ @NonNull
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static Background fromProto(@NonNull ModifiersProto.Background proto) {
+ return new Background(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public ModifiersProto.Background toProto() {
+ return mImpl;
+ }
+
+ /** Builder for {@link Background} */
+ public static final class Builder {
+ private final ModifiersProto.Background.Builder mImpl =
+ ModifiersProto.Background.newBuilder();
+
+ Builder() {}
+
+ /**
+ * Sets the background color for this element. If not defined, defaults to being
+ * transparent.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setColor(@NonNull ColorProp color) {
+ mImpl.setColor(color.toProto());
+ return this;
+ }
+
+ /**
+ * Sets the background color for this element. If not defined, defaults to being
+ * transparent.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setColor(@NonNull ColorProp.Builder colorBuilder) {
+ mImpl.setColor(colorBuilder.build().toProto());
+ return this;
+ }
+
+ /**
+ * Sets the corner properties of this element. This only affects the drawing of this
+ * element if it has a background color or border. If not defined, defaults to having a
+ * square corner.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setCorner(@NonNull Corner corner) {
+ mImpl.setCorner(corner.toProto());
+ return this;
+ }
+
+ /**
+ * Sets the corner properties of this element. This only affects the drawing of this
+ * element if it has a background color or border. If not defined, defaults to having a
+ * square corner.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setCorner(@NonNull Corner.Builder cornerBuilder) {
+ mImpl.setCorner(cornerBuilder.build().toProto());
+ return this;
+ }
+
+ /** Builds an instance from accumulated values. */
+ @NonNull
+ public Background build() {
+ return Background.fromProto(mImpl.build());
+ }
+ }
+ }
+
+ /**
+ * {@link Modifiers} for an element. These may change the way they are drawn (e.g. {@link
+ * Padding} or {@link Background}), or change their behaviour (e.g. {@link Clickable}, or {@link
+ * Semantics}).
+ */
+ public static final class Modifiers {
+ private final ModifiersProto.Modifiers mImpl;
+
+ private Modifiers(ModifiersProto.Modifiers impl) {
+ this.mImpl = impl;
+ }
+
+ /** Returns a new {@link Builder}. */
+ @NonNull
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static Modifiers fromProto(@NonNull ModifiersProto.Modifiers proto) {
+ return new Modifiers(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public ModifiersProto.Modifiers toProto() {
+ return mImpl;
+ }
+
+ /** Builder for {@link Modifiers} */
+ public static final class Builder {
+ private final ModifiersProto.Modifiers.Builder mImpl =
+ ModifiersProto.Modifiers.newBuilder();
+
+ Builder() {}
+
+ /**
+ * Sets allows its wrapped element to have actions associated with it, which will be
+ * executed when the element is tapped.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setClickable(@NonNull Clickable clickable) {
+ mImpl.setClickable(clickable.toProto());
+ return this;
+ }
+
+ /**
+ * Sets allows its wrapped element to have actions associated with it, which will be
+ * executed when the element is tapped.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setClickable(@NonNull Clickable.Builder clickableBuilder) {
+ mImpl.setClickable(clickableBuilder.build().toProto());
+ return this;
+ }
+
+ /**
+ * Sets adds metadata for the modified element, for example, screen reader content
+ * descriptions.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setSemantics(@NonNull Semantics semantics) {
+ mImpl.setSemantics(semantics.toProto());
+ return this;
+ }
+
+ /**
+ * Sets adds metadata for the modified element, for example, screen reader content
+ * descriptions.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setSemantics(@NonNull Semantics.Builder semanticsBuilder) {
+ mImpl.setSemantics(semanticsBuilder.build().toProto());
+ return this;
+ }
+
+ /** Sets adds padding to the modified element. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setPadding(@NonNull Padding padding) {
+ mImpl.setPadding(padding.toProto());
+ return this;
+ }
+
+ /** Sets adds padding to the modified element. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setPadding(@NonNull Padding.Builder paddingBuilder) {
+ mImpl.setPadding(paddingBuilder.build().toProto());
+ return this;
+ }
+
+ /** Sets draws a border around the modified element. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setBorder(@NonNull Border border) {
+ mImpl.setBorder(border.toProto());
+ return this;
+ }
+
+ /** Sets draws a border around the modified element. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setBorder(@NonNull Border.Builder borderBuilder) {
+ mImpl.setBorder(borderBuilder.build().toProto());
+ return this;
+ }
+
+ /** Sets adds a background (with optional corner radius) to the modified element. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setBackground(@NonNull Background background) {
+ mImpl.setBackground(background.toProto());
+ return this;
+ }
+
+ /** Sets adds a background (with optional corner radius) to the modified element. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setBackground(@NonNull Background.Builder backgroundBuilder) {
+ mImpl.setBackground(backgroundBuilder.build().toProto());
+ return this;
+ }
+
+ /** Builds an instance from accumulated values. */
+ @NonNull
+ public Modifiers build() {
+ return Modifiers.fromProto(mImpl.build());
+ }
+ }
+ }
+
+ /**
+ * {@link Modifiers} that can be used with ArcLayoutElements. These may change the way they are
+ * drawn, or change their behaviour.
+ */
+ public static final class ArcModifiers {
+ private final ModifiersProto.ArcModifiers mImpl;
+
+ private ArcModifiers(ModifiersProto.ArcModifiers impl) {
+ this.mImpl = impl;
+ }
+
+ /** Returns a new {@link Builder}. */
+ @NonNull
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static ArcModifiers fromProto(@NonNull ModifiersProto.ArcModifiers proto) {
+ return new ArcModifiers(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public ModifiersProto.ArcModifiers toProto() {
+ return mImpl;
+ }
+
+ /** Builder for {@link ArcModifiers} */
+ public static final class Builder {
+ private final ModifiersProto.ArcModifiers.Builder mImpl =
+ ModifiersProto.ArcModifiers.newBuilder();
+
+ Builder() {}
+
+ /**
+ * Sets allows its wrapped element to have actions associated with it, which will be
+ * executed when the element is tapped.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setClickable(@NonNull Clickable clickable) {
+ mImpl.setClickable(clickable.toProto());
+ return this;
+ }
+
+ /**
+ * Sets allows its wrapped element to have actions associated with it, which will be
+ * executed when the element is tapped.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setClickable(@NonNull Clickable.Builder clickableBuilder) {
+ mImpl.setClickable(clickableBuilder.build().toProto());
+ return this;
+ }
+
+ /**
+ * Sets adds metadata for the modified element, for example, screen reader content
+ * descriptions.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setSemantics(@NonNull Semantics semantics) {
+ mImpl.setSemantics(semantics.toProto());
+ return this;
+ }
+
+ /**
+ * Sets adds metadata for the modified element, for example, screen reader content
+ * descriptions.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setSemantics(@NonNull Semantics.Builder semanticsBuilder) {
+ mImpl.setSemantics(semanticsBuilder.build().toProto());
+ return this;
+ }
+
+ /** Builds an instance from accumulated values. */
+ @NonNull
+ public ArcModifiers build() {
+ return ArcModifiers.fromProto(mImpl.build());
+ }
+ }
+ }
+
+ /**
+ * {@link Modifiers} that can be used with {@link
+ * androidx.wear.tiles.builders.LayoutElementBuilders.Span} elements. These may change the way
+ * they are drawn, or change their behaviour.
+ */
+ public static final class SpanModifiers {
+ private final ModifiersProto.SpanModifiers mImpl;
+
+ private SpanModifiers(ModifiersProto.SpanModifiers impl) {
+ this.mImpl = impl;
+ }
+
+ /** Returns a new {@link Builder}. */
+ @NonNull
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static SpanModifiers fromProto(@NonNull ModifiersProto.SpanModifiers proto) {
+ return new SpanModifiers(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public ModifiersProto.SpanModifiers toProto() {
+ return mImpl;
+ }
+
+ /** Builder for {@link SpanModifiers} */
+ public static final class Builder {
+ private final ModifiersProto.SpanModifiers.Builder mImpl =
+ ModifiersProto.SpanModifiers.newBuilder();
+
+ Builder() {}
+
+ /**
+ * Sets allows its wrapped element to have actions associated with it, which will be
+ * executed when the element is tapped.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setClickable(@NonNull Clickable clickable) {
+ mImpl.setClickable(clickable.toProto());
+ return this;
+ }
+
+ /**
+ * Sets allows its wrapped element to have actions associated with it, which will be
+ * executed when the element is tapped.
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setClickable(@NonNull Clickable.Builder clickableBuilder) {
+ mImpl.setClickable(clickableBuilder.build().toProto());
+ return this;
+ }
+
+ /** Builds an instance from accumulated values. */
+ @NonNull
+ public SpanModifiers build() {
+ return SpanModifiers.fromProto(mImpl.build());
+ }
+ }
+ }
+}
diff --git a/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/ResourceBuilders.java b/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/ResourceBuilders.java
index d8ab3cd..16abf2d 100644
--- a/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/ResourceBuilders.java
+++ b/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/ResourceBuilders.java
@@ -59,7 +59,7 @@
public static final class AndroidImageResourceByResId {
private final ResourceProto.AndroidImageResourceByResId mImpl;
- AndroidImageResourceByResId(ResourceProto.AndroidImageResourceByResId impl) {
+ private AndroidImageResourceByResId(ResourceProto.AndroidImageResourceByResId impl) {
this.mImpl = impl;
}
@@ -69,12 +69,16 @@
return new Builder();
}
- /**
- * Get the protocol buffer representation of this object.
- *
- * @hide
- */
- @RestrictTo(Scope.LIBRARY)
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static AndroidImageResourceByResId fromProto(
+ @NonNull ResourceProto.AndroidImageResourceByResId proto) {
+ return new AndroidImageResourceByResId(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public ResourceProto.AndroidImageResourceByResId toProto() {
return mImpl;
@@ -101,7 +105,7 @@
/** Builds an instance from accumulated values. */
@NonNull
public AndroidImageResourceByResId build() {
- return new AndroidImageResourceByResId(mImpl.build());
+ return AndroidImageResourceByResId.fromProto(mImpl.build());
}
}
}
@@ -113,7 +117,7 @@
public static final class InlineImageResource {
private final ResourceProto.InlineImageResource mImpl;
- InlineImageResource(ResourceProto.InlineImageResource impl) {
+ private InlineImageResource(ResourceProto.InlineImageResource impl) {
this.mImpl = impl;
}
@@ -123,12 +127,16 @@
return new Builder();
}
- /**
- * Get the protocol buffer representation of this object.
- *
- * @hide
- */
- @RestrictTo(Scope.LIBRARY)
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static InlineImageResource fromProto(
+ @NonNull ResourceProto.InlineImageResource proto) {
+ return new InlineImageResource(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public ResourceProto.InlineImageResource toProto() {
return mImpl;
@@ -149,7 +157,10 @@
return this;
}
- /** Sets the native width of the image, in pixels. */
+ /**
+ * Sets the native width of the image, in pixels. Only required for formats (e.g.
+ * IMAGE_FORMAT_RGB_565) where the image data does not include size.
+ */
@SuppressLint("MissingGetterMatchingBuilder")
@NonNull
public Builder setWidthPx(@Dimension(unit = PX) int widthPx) {
@@ -157,7 +168,10 @@
return this;
}
- /** Sets the native height of the image, in pixels. */
+ /**
+ * Sets the native height of the image, in pixels. Only required for formats (e.g.
+ * IMAGE_FORMAT_RGB_565) where the image data does not include size.
+ */
@SuppressLint("MissingGetterMatchingBuilder")
@NonNull
public Builder setHeightPx(@Dimension(unit = PX) int heightPx) {
@@ -165,7 +179,12 @@
return this;
}
- /** Sets the format of the byte array data representing the image. */
+ /**
+ * Sets the format of the byte array data representing the image. May be left
+ * unspecified or set to IMAGE_FORMAT_UNDEFINED in which case the platform will attempt
+ * to extract this from the raw image data. If the platform does not support the format,
+ * the image will not be decoded or displayed.
+ */
@SuppressLint("MissingGetterMatchingBuilder")
@NonNull
public Builder setFormat(@ImageFormat int format) {
@@ -176,7 +195,7 @@
/** Builds an instance from accumulated values. */
@NonNull
public InlineImageResource build() {
- return new InlineImageResource(mImpl.build());
+ return InlineImageResource.fromProto(mImpl.build());
}
}
}
@@ -188,7 +207,7 @@
public static final class ImageResource {
private final ResourceProto.ImageResource mImpl;
- ImageResource(ResourceProto.ImageResource impl) {
+ private ImageResource(ResourceProto.ImageResource impl) {
this.mImpl = impl;
}
@@ -198,12 +217,15 @@
return new Builder();
}
- /**
- * Get the protocol buffer representation of this object.
- *
- * @hide
- */
- @RestrictTo(Scope.LIBRARY)
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static ImageResource fromProto(@NonNull ResourceProto.ImageResource proto) {
+ return new ImageResource(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public ResourceProto.ImageResource toProto() {
return mImpl;
@@ -254,7 +276,7 @@
/** Builds an instance from accumulated values. */
@NonNull
public ImageResource build() {
- return new ImageResource(mImpl.build());
+ return ImageResource.fromProto(mImpl.build());
}
}
}
@@ -263,7 +285,7 @@
public static final class Resources {
private final ResourceProto.Resources mImpl;
- Resources(ResourceProto.Resources impl) {
+ private Resources(ResourceProto.Resources impl) {
this.mImpl = impl;
}
@@ -273,12 +295,15 @@
return new Builder();
}
- /**
- * Get the protocol buffer representation of this object.
- *
- * @hide
- */
- @RestrictTo(Scope.LIBRARY)
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static Resources fromProto(@NonNull ResourceProto.Resources proto) {
+ return new Resources(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public ResourceProto.Resources toProto() {
return mImpl;
@@ -328,7 +353,7 @@
/** Builds an instance from accumulated values. */
@NonNull
public Resources build() {
- return new Resources(mImpl.build());
+ return Resources.fromProto(mImpl.build());
}
}
}
diff --git a/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/StateBuilders.java b/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/StateBuilders.java
new file mode 100644
index 0000000..fe9465f
--- /dev/null
+++ b/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/StateBuilders.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.wear.tiles.builders;
+
+import android.annotation.SuppressLint;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.RestrictTo;
+import androidx.annotation.RestrictTo.Scope;
+import androidx.wear.tiles.proto.StateProto;
+
+/** Builders for state of a tile. */
+public final class StateBuilders {
+ private StateBuilders() {}
+
+ /** {@link State} information. */
+ public static final class State {
+ private final StateProto.State mImpl;
+
+ private State(StateProto.State impl) {
+ this.mImpl = impl;
+ }
+
+ /** Gets the ID of the clickable that was last clicked. */
+ @NonNull
+ public String getLastClickableId() {
+ return mImpl.getLastClickableId();
+ }
+
+ /** Returns a new {@link Builder}. */
+ @NonNull
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static State fromProto(@NonNull StateProto.State proto) {
+ return new State(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public StateProto.State toProto() {
+ return mImpl;
+ }
+
+ /** Builder for {@link State} */
+ public static final class Builder {
+ private final StateProto.State.Builder mImpl = StateProto.State.newBuilder();
+
+ Builder() {}
+
+ /** Sets the ID of the clickable that was last clicked. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setLastClickableId(@NonNull String lastClickableId) {
+ mImpl.setLastClickableId(lastClickableId);
+ return this;
+ }
+
+ /** Builds an instance from accumulated values. */
+ @NonNull
+ public State build() {
+ return State.fromProto(mImpl.build());
+ }
+ }
+ }
+}
diff --git a/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/TileBuilders.java b/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/TileBuilders.java
index 966309b..ff5b034 100644
--- a/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/TileBuilders.java
+++ b/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/TileBuilders.java
@@ -23,6 +23,7 @@
import androidx.annotation.RestrictTo.Scope;
import androidx.wear.tiles.builders.TimelineBuilders.Timeline;
import androidx.wear.tiles.proto.TileProto;
+import androidx.wear.tiles.proto.VersionProto.VersionInfo;
/** Builders for the components of a tile that can be rendered by a tile renderer. */
public final class TileBuilders {
@@ -35,7 +36,7 @@
public static final class Tile {
private final TileProto.Tile mImpl;
- Tile(TileProto.Tile impl) {
+ private Tile(TileProto.Tile impl) {
this.mImpl = impl;
}
@@ -45,12 +46,15 @@
return new Builder();
}
- /**
- * Get the protocol buffer representation of this object.
- *
- * @hide
- */
- @RestrictTo(Scope.LIBRARY)
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static Tile fromProto(@NonNull TileProto.Tile proto) {
+ return new Tile(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public TileProto.Tile toProto() {
return mImpl;
@@ -86,11 +90,39 @@
return this;
}
+ /**
+ * Sets how many milliseconds of elapsed time (**not** wall clock time) this tile can be
+ * considered to be "fresh". The platform will attempt to refresh your tile at some
+ * point in the future after this interval has lapsed. A value of 0 here signifies that
+ * auto-refreshes should not be used (i.e. you will manually request updates via
+ * TileProviderService#getRequester).
+ */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setFreshnessIntervalMillis(long freshnessIntervalMillis) {
+ mImpl.setFreshnessIntervalMillis(freshnessIntervalMillis);
+ return this;
+ }
+
/** Builds an instance from accumulated values. */
@NonNull
public Tile build() {
- return new Tile(mImpl.build());
+ return Tile.fromProto(mImpl.build());
}
}
}
+
+ /**
+ * Utility class with the current version of the Tile schema in use.
+ *
+ * @hide
+ */
+ @RestrictTo(Scope.LIBRARY)
+ public static final class Version {
+ private Version() {}
+
+ /** The current version of the Tiles schema in use. */
+ public static final VersionInfo CURRENT =
+ VersionInfo.newBuilder().setMajor(0).setMinor(1).build();
+ }
}
diff --git a/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/TimelineBuilders.java b/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/TimelineBuilders.java
index e284cba..accfa10 100644
--- a/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/TimelineBuilders.java
+++ b/wear/wear-tiles/src/main/java/androidx/wear/tiles/builders/TimelineBuilders.java
@@ -21,7 +21,7 @@
import androidx.annotation.NonNull;
import androidx.annotation.RestrictTo;
import androidx.annotation.RestrictTo.Scope;
-import androidx.wear.tiles.builders.LayoutElementBuilders.LayoutElement;
+import androidx.wear.tiles.builders.LayoutElementBuilders.Layout;
import androidx.wear.tiles.proto.TimelineProto;
/**
@@ -37,7 +37,7 @@
public static final class TimeInterval {
private final TimelineProto.TimeInterval mImpl;
- TimeInterval(TimelineProto.TimeInterval impl) {
+ private TimeInterval(TimelineProto.TimeInterval impl) {
this.mImpl = impl;
}
@@ -47,12 +47,15 @@
return new Builder();
}
- /**
- * Get the protocol buffer representation of this object.
- *
- * @hide
- */
- @RestrictTo(Scope.LIBRARY)
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static TimeInterval fromProto(@NonNull TimelineProto.TimeInterval proto) {
+ return new TimeInterval(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public TimelineProto.TimeInterval toProto() {
return mImpl;
@@ -84,7 +87,7 @@
/** Builds an instance from accumulated values. */
@NonNull
public TimeInterval build() {
- return new TimeInterval(mImpl.build());
+ return TimeInterval.fromProto(mImpl.build());
}
}
}
@@ -93,7 +96,7 @@
public static final class TimelineEntry {
private final TimelineProto.TimelineEntry mImpl;
- TimelineEntry(TimelineProto.TimelineEntry impl) {
+ private TimelineEntry(TimelineProto.TimelineEntry impl) {
this.mImpl = impl;
}
@@ -103,12 +106,15 @@
return new Builder();
}
- /**
- * Get the protocol buffer representation of this object.
- *
- * @hide
- */
- @RestrictTo(Scope.LIBRARY)
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static TimelineEntry fromProto(@NonNull TimelineProto.TimelineEntry proto) {
+ return new TimelineEntry(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public TimelineProto.TimelineEntry toProto() {
return mImpl;
@@ -121,22 +127,6 @@
Builder() {}
- /** Sets the contents of this timeline entry. */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setContent(@NonNull LayoutElement content) {
- mImpl.setContent(content.toLayoutElementProto());
- return this;
- }
-
- /** Sets the contents of this timeline entry. */
- @SuppressLint("MissingGetterMatchingBuilder")
- @NonNull
- public Builder setContent(@NonNull LayoutElement.Builder contentBuilder) {
- mImpl.setContent(contentBuilder.build().toLayoutElementProto());
- return this;
- }
-
/** Sets the validity period for this timeline entry. */
@SuppressLint("MissingGetterMatchingBuilder")
@NonNull
@@ -153,10 +143,26 @@
return this;
}
+ /** Sets the contents of this timeline entry. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setLayout(@NonNull Layout layout) {
+ mImpl.setLayout(layout.toProto());
+ return this;
+ }
+
+ /** Sets the contents of this timeline entry. */
+ @SuppressLint("MissingGetterMatchingBuilder")
+ @NonNull
+ public Builder setLayout(@NonNull Layout.Builder layoutBuilder) {
+ mImpl.setLayout(layoutBuilder.build().toProto());
+ return this;
+ }
+
/** Builds an instance from accumulated values. */
@NonNull
public TimelineEntry build() {
- return new TimelineEntry(mImpl.build());
+ return TimelineEntry.fromProto(mImpl.build());
}
}
}
@@ -178,7 +184,7 @@
public static final class Timeline {
private final TimelineProto.Timeline mImpl;
- Timeline(TimelineProto.Timeline impl) {
+ private Timeline(TimelineProto.Timeline impl) {
this.mImpl = impl;
}
@@ -188,12 +194,15 @@
return new Builder();
}
- /**
- * Get the protocol buffer representation of this object.
- *
- * @hide
- */
- @RestrictTo(Scope.LIBRARY)
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
+ @NonNull
+ public static Timeline fromProto(@NonNull TimelineProto.Timeline proto) {
+ return new Timeline(proto);
+ }
+
+ /** @hide */
+ @RestrictTo(Scope.LIBRARY_GROUP)
@NonNull
public TimelineProto.Timeline toProto() {
return mImpl;
@@ -225,7 +234,7 @@
/** Builds an instance from accumulated values. */
@NonNull
public Timeline build() {
- return new Timeline(mImpl.build());
+ return Timeline.fromProto(mImpl.build());
}
}
}
diff --git a/wear/wear-tiles/src/main/java/androidx/wear/tiles/readers/EventReaders.java b/wear/wear-tiles/src/main/java/androidx/wear/tiles/readers/EventReaders.java
new file mode 100644
index 0000000..8f2324e
--- /dev/null
+++ b/wear/wear-tiles/src/main/java/androidx/wear/tiles/readers/EventReaders.java
@@ -0,0 +1,165 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.wear.tiles.readers;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.RestrictTo;
+import androidx.annotation.RestrictTo.Scope;
+import androidx.wear.tiles.TileAddEventData;
+import androidx.wear.tiles.TileEnterEventData;
+import androidx.wear.tiles.TileLeaveEventData;
+import androidx.wear.tiles.TileRemoveEventData;
+import androidx.wear.tiles.proto.EventProto;
+import androidx.wear.tiles.protobuf.ExtensionRegistryLite;
+import androidx.wear.tiles.protobuf.InvalidProtocolBufferException;
+
+/** Event readers for androidx.wear.tiles' Parcelable classes. */
+public class EventReaders {
+ private EventReaders() {}
+
+ /** Reader for a {@link TileAddEventData} instance. */
+ public static class TileAddEvent {
+ private final EventProto.TileAddEvent mProto;
+
+ private TileAddEvent(@NonNull EventProto.TileAddEvent proto) {
+ this.mProto = proto;
+ }
+
+ /**
+ * Create an instance of this reader from a given {@link TileAddEventData} instance.
+ *
+ * @hide
+ */
+ @RestrictTo(Scope.LIBRARY)
+ @NonNull
+ public static TileAddEvent fromParcelable(@NonNull TileAddEventData parcelable) {
+ try {
+ return new TileAddEvent(
+ EventProto.TileAddEvent.parseFrom(
+ parcelable.getContents(),
+ ExtensionRegistryLite.getEmptyRegistry()));
+ } catch (InvalidProtocolBufferException ex) {
+ throw new IllegalArgumentException(
+ "Passed TileAddEventData did not contain a valid proto payload", ex);
+ }
+ }
+
+ /** Get the tile ID of the tile added to the carousel. */
+ public int getTileId() {
+ return mProto.getTileId();
+ }
+ }
+
+ /** Reader for a {@link TileRemoveEventData} instance. */
+ public static class TileRemoveEvent {
+ private final EventProto.TileRemoveEvent mProto;
+
+ private TileRemoveEvent(@NonNull EventProto.TileRemoveEvent proto) {
+ this.mProto = proto;
+ }
+
+ /**
+ * Create an instance of this reader from a given {@link TileRemoveEventData} instance.
+ *
+ * @hide
+ */
+ @RestrictTo(Scope.LIBRARY)
+ @NonNull
+ public static TileRemoveEvent fromParcelable(@NonNull TileRemoveEventData parcelable) {
+ try {
+ return new TileRemoveEvent(
+ EventProto.TileRemoveEvent.parseFrom(
+ parcelable.getContents(),
+ ExtensionRegistryLite.getEmptyRegistry()));
+ } catch (InvalidProtocolBufferException ex) {
+ throw new IllegalArgumentException(
+ "Passed TileRemoveEventData did not contain a valid proto payload", ex);
+ }
+ }
+
+ /** Get the tile ID of the tile removed from the carousel. */
+ public int getTileId() {
+ return mProto.getTileId();
+ }
+ }
+
+ /** Reader for a {@link TileEnterEventData} instance. */
+ public static class TileEnterEvent {
+ private final EventProto.TileEnterEvent mProto;
+
+ private TileEnterEvent(@NonNull EventProto.TileEnterEvent proto) {
+ this.mProto = proto;
+ }
+
+ /**
+ * Create an instance of this reader from a given {@link TileEnterEventData} instance.
+ *
+ * @hide
+ */
+ @RestrictTo(Scope.LIBRARY)
+ @NonNull
+ public static TileEnterEvent fromParcelable(@NonNull TileEnterEventData parcelable) {
+ try {
+ return new TileEnterEvent(
+ EventProto.TileEnterEvent.parseFrom(
+ parcelable.getContents(),
+ ExtensionRegistryLite.getEmptyRegistry()));
+ } catch (InvalidProtocolBufferException ex) {
+ throw new IllegalArgumentException(
+ "Passed TileEnterEventData did not contain a valid proto payload", ex);
+ }
+ }
+
+ /** Get the tile ID of the tile that was entered. */
+ public int getTileId() {
+ return mProto.getTileId();
+ }
+ }
+
+ /** Reader for a {@link TileLeaveEventData} instance. */
+ public static class TileLeaveEvent {
+ private final EventProto.TileLeaveEvent mProto;
+
+ private TileLeaveEvent(@NonNull EventProto.TileLeaveEvent proto) {
+ this.mProto = proto;
+ }
+
+ /**
+ * Create an instance of this reader from a given {@link TileLeaveEventData} instance.
+ *
+ * @hide
+ */
+ @RestrictTo(Scope.LIBRARY)
+ @NonNull
+ public static TileLeaveEvent fromParcelable(@NonNull TileLeaveEventData parcelable) {
+ try {
+ return new TileLeaveEvent(
+ EventProto.TileLeaveEvent.parseFrom(
+ parcelable.getContents(),
+ ExtensionRegistryLite.getEmptyRegistry()));
+ } catch (InvalidProtocolBufferException ex) {
+ throw new IllegalArgumentException(
+ "Passed TileLeaveEventData did not contain a valid proto payload", ex);
+ }
+ }
+
+ /** Get the tile ID of the tile that was left. */
+ public int getTileId() {
+ return mProto.getTileId();
+ }
+ }
+}
diff --git a/wear/wear-tiles/src/main/java/androidx/wear/tiles/readers/RequestReaders.java b/wear/wear-tiles/src/main/java/androidx/wear/tiles/readers/RequestReaders.java
index 0b4a07d..0584c8c 100644
--- a/wear/wear-tiles/src/main/java/androidx/wear/tiles/readers/RequestReaders.java
+++ b/wear/wear-tiles/src/main/java/androidx/wear/tiles/readers/RequestReaders.java
@@ -17,11 +17,11 @@
package androidx.wear.tiles.readers;
import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
import androidx.annotation.RestrictTo;
import androidx.annotation.RestrictTo.Scope;
import androidx.wear.tiles.ResourcesRequestData;
import androidx.wear.tiles.TileRequestData;
+import androidx.wear.tiles.builders.StateBuilders.State;
import androidx.wear.tiles.proto.RequestProto;
import androidx.wear.tiles.protobuf.ExtensionRegistryLite;
import androidx.wear.tiles.protobuf.InvalidProtocolBufferException;
@@ -36,36 +36,38 @@
/** Reader for a {@link TileRequestData} instance. */
public static class TileRequest {
private final RequestProto.TileRequest mProto;
+ private final int mTileId;
- private TileRequest(RequestProto.TileRequest proto) {
+ private TileRequest(RequestProto.TileRequest proto, int tileId) {
this.mProto = proto;
+ this.mTileId = tileId;
}
- /** Get the Clickable ID which triggered this Tile request. */
+ /** Get the {@link State} that the tile should be built with. */
@NonNull
- public String getClickableId() {
- return mProto.getClickableId();
+ public State getState() {
+ return State.fromProto(mProto.getState());
}
/** Get parameters describing the device requesting this tile. */
- @Nullable
+ @NonNull
public DeviceParameters getDeviceParameters() {
- if (!mProto.hasDeviceParameters()) {
- return null;
- }
-
return new DeviceParameters(mProto.getDeviceParameters());
}
+ public int getTileId() {
+ return mTileId;
+ }
+
/** @hide */
@RestrictTo(Scope.LIBRARY)
@NonNull
- public static TileRequest fromParcelable(@NonNull TileRequestData parcelable) {
+ public static TileRequest fromParcelable(@NonNull TileRequestData parcelable, int tileId) {
try {
return new TileRequest(
RequestProto.TileRequest.parseFrom(
- parcelable.getContents(),
- ExtensionRegistryLite.getEmptyRegistry()));
+ parcelable.getContents(), ExtensionRegistryLite.getEmptyRegistry()),
+ tileId);
} catch (InvalidProtocolBufferException ex) {
throw new IllegalArgumentException(
"Passed TileRequestData did not contain a valid proto payload", ex);
@@ -76,26 +78,33 @@
/** Reader for a {@link ResourcesRequestData} instance. */
public static class ResourcesRequest {
private final RequestProto.ResourcesRequest mProto;
+ private final int mTileId;
- private ResourcesRequest(@NonNull RequestProto.ResourcesRequest proto) {
+ private ResourcesRequest(@NonNull RequestProto.ResourcesRequest proto, int tileId) {
this.mProto = proto;
+ this.mTileId = tileId;
}
/** @hide */
@RestrictTo(Scope.LIBRARY)
@NonNull
- public static ResourcesRequest fromParcelable(@NonNull ResourcesRequestData parcelable) {
+ public static ResourcesRequest fromParcelable(
+ @NonNull ResourcesRequestData parcelable, int tileId) {
try {
return new ResourcesRequest(
RequestProto.ResourcesRequest.parseFrom(
- parcelable.getContents(),
- ExtensionRegistryLite.getEmptyRegistry()));
+ parcelable.getContents(), ExtensionRegistryLite.getEmptyRegistry()),
+ tileId);
} catch (InvalidProtocolBufferException ex) {
throw new IllegalArgumentException(
"Passed ResourcesRequestData did not contain a valid proto payload", ex);
}
}
+ public int getTileId() {
+ return mTileId;
+ }
+
/** Get the resource version requested by this {@link ResourcesRequestData}. */
@NonNull
public String getVersion() {
@@ -110,5 +119,11 @@
public List<String> getResourceIds() {
return mProto.getResourceIdsList();
}
+
+ /** Get parameters describing the device requesting these resources. */
+ @NonNull
+ public DeviceParameters getDeviceParameters() {
+ return new DeviceParameters(mProto.getDeviceParameters());
+ }
}
}
diff --git a/wear/wear-tiles/src/test/java/androidx/wear/tiles/ProtoParcelableTest.java b/wear/wear-tiles/src/test/java/androidx/wear/tiles/ProtoParcelableTest.java
index d5f1cea..e350759 100644
--- a/wear/wear-tiles/src/test/java/androidx/wear/tiles/ProtoParcelableTest.java
+++ b/wear/wear-tiles/src/test/java/androidx/wear/tiles/ProtoParcelableTest.java
@@ -42,14 +42,26 @@
@Test
public void contentsEqualsAndHashCode() {
final Wrapper foo1 =
- new Wrapper(RequestProto.ResourcesRequest.newBuilder().setVersion(
- "foo").build().toByteArray(), Wrapper.VERSION);
+ new Wrapper(
+ RequestProto.ResourcesRequest.newBuilder()
+ .setVersion("foo")
+ .build()
+ .toByteArray(),
+ Wrapper.VERSION);
final Wrapper foo2 =
- new Wrapper(RequestProto.ResourcesRequest.newBuilder().setVersion(
- "foo").build().toByteArray(), Wrapper.VERSION);
+ new Wrapper(
+ RequestProto.ResourcesRequest.newBuilder()
+ .setVersion("foo")
+ .build()
+ .toByteArray(),
+ Wrapper.VERSION);
final Wrapper bar =
- new Wrapper(RequestProto.ResourcesRequest.newBuilder().setVersion(
- "bar").build().toByteArray(), Wrapper.VERSION);
+ new Wrapper(
+ RequestProto.ResourcesRequest.newBuilder()
+ .setVersion("bar")
+ .build()
+ .toByteArray(),
+ Wrapper.VERSION);
assertThat(foo1).isEqualTo(foo2);
assertThat(foo1).isNotEqualTo(bar);
assertThat(foo1.hashCode()).isEqualTo(foo2.hashCode());
@@ -59,11 +71,19 @@
@Test
public void versionEqualsAndHashCode() {
final Wrapper foo1 =
- new Wrapper(RequestProto.ResourcesRequest.newBuilder().setVersion(
- "foo").build().toByteArray(), Wrapper.VERSION);
+ new Wrapper(
+ RequestProto.ResourcesRequest.newBuilder()
+ .setVersion("foo")
+ .build()
+ .toByteArray(),
+ Wrapper.VERSION);
final Wrapper foo2 =
- new Wrapper(RequestProto.ResourcesRequest.newBuilder().setVersion(
- "foo").build().toByteArray(), /* version= */2);
+ new Wrapper(
+ RequestProto.ResourcesRequest.newBuilder()
+ .setVersion("foo")
+ .build()
+ .toByteArray(),
+ /* version= */ 2);
assertThat(foo1).isNotEqualTo(foo2);
assertThat(foo1.hashCode()).isNotEqualTo(foo2.hashCode());
diff --git a/wear/wear-tiles/src/test/java/androidx/wear/tiles/ResourcesRequestDataTest.java b/wear/wear-tiles/src/test/java/androidx/wear/tiles/ResourcesRequestDataTest.java
index 9213528..61dd9f1 100644
--- a/wear/wear-tiles/src/test/java/androidx/wear/tiles/ResourcesRequestDataTest.java
+++ b/wear/wear-tiles/src/test/java/androidx/wear/tiles/ResourcesRequestDataTest.java
@@ -35,8 +35,8 @@
RequestProto.ResourcesRequest request =
RequestProto.ResourcesRequest.newBuilder().setVersion("v123").build();
ResourcesRequestData wrapper =
- new ResourcesRequestData(request.toByteArray(),
- ResourcesRequestData.VERSION_PROTOBUF);
+ new ResourcesRequestData(
+ request.toByteArray(), ResourcesRequestData.VERSION_PROTOBUF);
Parcel parcel = Parcel.obtain();
wrapper.writeToParcel(parcel, 0);
diff --git a/wear/wear-tiles/src/test/java/androidx/wear/tiles/TileProviderServiceTest.java b/wear/wear-tiles/src/test/java/androidx/wear/tiles/TileProviderServiceTest.java
index 7f5f73d..b4f341d 100644
--- a/wear/wear-tiles/src/test/java/androidx/wear/tiles/TileProviderServiceTest.java
+++ b/wear/wear-tiles/src/test/java/androidx/wear/tiles/TileProviderServiceTest.java
@@ -27,9 +27,15 @@
import androidx.annotation.NonNull;
import androidx.wear.tiles.builders.ResourceBuilders;
import androidx.wear.tiles.builders.TileBuilders;
+import androidx.wear.tiles.builders.TileBuilders.Version;
+import androidx.wear.tiles.proto.EventProto;
import androidx.wear.tiles.proto.RequestProto;
import androidx.wear.tiles.proto.ResourceProto.Resources;
import androidx.wear.tiles.proto.TileProto.Tile;
+import androidx.wear.tiles.readers.EventReaders.TileAddEvent;
+import androidx.wear.tiles.readers.EventReaders.TileEnterEvent;
+import androidx.wear.tiles.readers.EventReaders.TileLeaveEvent;
+import androidx.wear.tiles.readers.EventReaders.TileRemoveEvent;
import androidx.wear.tiles.readers.RequestReaders.ResourcesRequest;
import androidx.wear.tiles.readers.RequestReaders.TileRequest;
@@ -51,11 +57,20 @@
@RunWith(RobolectricTestRunner.class)
@DoNotInstrument
public class TileProviderServiceTest {
+ private static final int TILE_ID = 42;
+
@Rule public final Expect expect = Expect.create();
- private static final TileBuilders.Tile DUMMY_TILE =
+ // This is a little nasty, but we need to ensure that the version is injected by
+ // TileProviderService. For that, we need the builder form (for DummyTileProviderService to
+ // return), and the protobuf form (to compare against, which also includes the version).
+ private static final TileBuilders.Tile DUMMY_TILE_TO_RETURN =
TileBuilders.Tile.builder().setResourcesVersion("5").build();
- private TileProvider mTileProviderService;
+ private static final Tile DUMMY_TILE_PROTOBUF =
+ Tile.newBuilder().setResourcesVersion("5").setSchemaVersion(Version.CURRENT).build();
+
+ private TileProvider mTileProviderServiceStub;
+ private ServiceController<DummyTileProviderService> mDummyTileProviderServiceServiceController;
@Mock private TileCallback mMockTileCallback;
@Mock private ResourcesCallback mMockResourcesCallback;
@@ -65,18 +80,17 @@
mMockTileCallback = mock(TileCallback.class);
mMockResourcesCallback = mock(ResourcesCallback.class);
- ServiceController<DummyTileProviderService> dummyTileProviderServiceController =
- Robolectric.buildService(
- DummyTileProviderService.class);
+ mDummyTileProviderServiceServiceController =
+ Robolectric.buildService(DummyTileProviderService.class);
Intent i = new Intent(TileProviderService.ACTION_BIND_TILE_PROVIDER);
- IBinder binder = dummyTileProviderServiceController.get().onBind(i);
- mTileProviderService = TileProvider.Stub.asInterface(binder);
+ IBinder binder = mDummyTileProviderServiceServiceController.get().onBind(i);
+ mTileProviderServiceStub = TileProvider.Stub.asInterface(binder);
}
@Test
public void tileProvider_tileRequest() throws Exception {
- mTileProviderService.onTileRequest(
+ mTileProviderServiceStub.onTileRequest(
5,
new TileRequestData(
RequestProto.TileRequest.getDefaultInstance().toByteArray(),
@@ -89,11 +103,9 @@
verify(mMockTileCallback).updateTileData(tileCaptor.capture());
- Tile tile =
- Tile.parseFrom(
- tileCaptor.getValue().getContents());
+ Tile tile = Tile.parseFrom(tileCaptor.getValue().getContents());
- expect.that(tile).isEqualTo(DUMMY_TILE.toProto());
+ expect.that(tile).isEqualTo(DUMMY_TILE_PROTOBUF);
}
@Test
@@ -108,27 +120,102 @@
.toByteArray(),
ResourcesRequestData.VERSION_PROTOBUF);
- mTileProviderService.onResourcesRequest(5, resourcesRequestData, mMockResourcesCallback);
+ mTileProviderServiceStub.onResourcesRequest(
+ 5, resourcesRequestData, mMockResourcesCallback);
shadowOf(Looper.getMainLooper()).idle();
- ArgumentCaptor<ResourcesData> resourcesCaptor = ArgumentCaptor.forClass(
- ResourcesData.class);
+ ArgumentCaptor<ResourcesData> resourcesCaptor =
+ ArgumentCaptor.forClass(ResourcesData.class);
verify(mMockResourcesCallback).updateResources(resourcesCaptor.capture());
- Resources resources =
- Resources.parseFrom(
- resourcesCaptor.getValue().getContents());
+ Resources resources = Resources.parseFrom(resourcesCaptor.getValue().getContents());
expect.that(resources.getVersion()).isEqualTo(resourcesVersion);
}
+ @Test
+ public void tileProvider_onTileAdd() throws Exception {
+ EventProto.TileAddEvent addRequest =
+ EventProto.TileAddEvent.newBuilder().setTileId(TILE_ID).build();
+ mTileProviderServiceStub.onTileAddEvent(
+ new TileAddEventData(addRequest.toByteArray(), TileAddEventData.VERSION_PROTOBUF));
+ shadowOf(Looper.getMainLooper()).idle();
+
+ expect.that(mDummyTileProviderServiceServiceController.get().mLastOnTileAddId)
+ .isEqualTo(TILE_ID);
+ }
+
+ @Test
+ public void tileProvider_onTileRemove() throws Exception {
+ EventProto.TileRemoveEvent removeRequest =
+ EventProto.TileRemoveEvent.newBuilder().setTileId(TILE_ID).build();
+ mTileProviderServiceStub.onTileRemoveEvent(
+ new TileRemoveEventData(
+ removeRequest.toByteArray(), TileRemoveEventData.VERSION_PROTOBUF));
+ shadowOf(Looper.getMainLooper()).idle();
+
+ expect.that(mDummyTileProviderServiceServiceController.get().mLastOnTileRemoveId)
+ .isEqualTo(TILE_ID);
+ }
+
+ @Test
+ public void tileProvider_onTileEnter() throws Exception {
+ EventProto.TileEnterEvent enterRequest =
+ EventProto.TileEnterEvent.newBuilder().setTileId(TILE_ID).build();
+ mTileProviderServiceStub.onTileEnterEvent(
+ new TileEnterEventData(
+ enterRequest.toByteArray(), TileEnterEventData.VERSION_PROTOBUF));
+ shadowOf(Looper.getMainLooper()).idle();
+
+ expect.that(mDummyTileProviderServiceServiceController.get().mLastOnTileEnterId)
+ .isEqualTo(TILE_ID);
+ }
+
+ @Test
+ public void tileProvider_onTileLeave() throws Exception {
+ EventProto.TileLeaveEvent leaveRequest =
+ EventProto.TileLeaveEvent.newBuilder().setTileId(TILE_ID).build();
+ mTileProviderServiceStub.onTileLeaveEvent(
+ new TileLeaveEventData(
+ leaveRequest.toByteArray(), TileLeaveEventData.VERSION_PROTOBUF));
+ shadowOf(Looper.getMainLooper()).idle();
+
+ expect.that(mDummyTileProviderServiceServiceController.get().mLastOnTileLeaveId)
+ .isEqualTo(TILE_ID);
+ }
+
public static class DummyTileProviderService extends TileProviderService {
+ int mLastOnTileAddId = -1;
+ int mLastOnTileRemoveId = -1;
+ int mLastOnTileEnterId = -1;
+ int mLastOnTileLeaveId = -1;
+
+ @Override
+ protected void onTileAddEvent(@NonNull TileAddEvent requestParams) {
+ this.mLastOnTileAddId = requestParams.getTileId();
+ }
+
+ @Override
+ protected void onTileRemoveEvent(@NonNull TileRemoveEvent requestParams) {
+ this.mLastOnTileRemoveId = requestParams.getTileId();
+ }
+
+ @Override
+ protected void onTileEnterEvent(@NonNull TileEnterEvent requestParams) {
+ this.mLastOnTileEnterId = requestParams.getTileId();
+ }
+
+ @Override
+ protected void onTileLeaveEvent(@NonNull TileLeaveEvent requestParams) {
+ this.mLastOnTileLeaveId = requestParams.getTileId();
+ }
+
@Override
@NonNull
protected ListenableFuture<TileBuilders.Tile> onTileRequest(
@NonNull TileRequest requestParams) {
- return Futures.immediateFuture(DUMMY_TILE);
+ return Futures.immediateFuture(DUMMY_TILE_TO_RETURN);
}
@Override
@@ -136,8 +223,9 @@
protected ListenableFuture<ResourceBuilders.Resources> onResourcesRequest(
@NonNull ResourcesRequest requestParams) {
ResourceBuilders.Resources resources =
- ResourceBuilders.Resources.builder().setVersion(
- requestParams.getVersion()).build();
+ ResourceBuilders.Resources.builder()
+ .setVersion(requestParams.getVersion())
+ .build();
return Futures.immediateFuture(resources);
}
diff --git a/wear/wear-tiles/wear-tiles-proto/src/main/proto/action.proto b/wear/wear-tiles/wear-tiles-proto/src/main/proto/action.proto
index 20811e7..6507829 100644
--- a/wear/wear-tiles/wear-tiles-proto/src/main/proto/action.proto
+++ b/wear/wear-tiles/wear-tiles-proto/src/main/proto/action.proto
@@ -3,8 +3,7 @@
package androidx.wear.tiles.proto;
-
-
+import "state.proto";
option java_package = "androidx.wear.tiles.proto";
option java_outer_classname = "ActionProto";
@@ -29,7 +28,9 @@
// An action used to load (or reload) the tile contents.
message LoadAction {
- // Nothing yet.
+ // The state to load the next tile with. This will be included in the
+ // TileRequest sent after this action is invoked by a Clickable.
+ State request_state = 1;
}
// An action that can be used by a layout element.
diff --git a/wear/wear-tiles/wear-tiles-proto/src/main/proto/color.proto b/wear/wear-tiles/wear-tiles-proto/src/main/proto/color.proto
index 92a3abe..c4c1463 100644
--- a/wear/wear-tiles/wear-tiles-proto/src/main/proto/color.proto
+++ b/wear/wear-tiles/wear-tiles-proto/src/main/proto/color.proto
@@ -3,7 +3,6 @@
package androidx.wear.tiles.proto;
-
option java_package = "androidx.wear.tiles.proto";
option java_outer_classname = "ColorProto";
diff --git a/wear/wear-tiles/wear-tiles-proto/src/main/proto/device_parameters.proto b/wear/wear-tiles/wear-tiles-proto/src/main/proto/device_parameters.proto
index f518540..de0a7c0 100644
--- a/wear/wear-tiles/wear-tiles-proto/src/main/proto/device_parameters.proto
+++ b/wear/wear-tiles/wear-tiles-proto/src/main/proto/device_parameters.proto
@@ -3,7 +3,6 @@
package androidx.wear.tiles.proto;
-
option java_package = "androidx.wear.tiles.proto";
option java_outer_classname = "DeviceParametersProto";
diff --git a/wear/wear-tiles/wear-tiles-proto/src/main/proto/dimension.proto b/wear/wear-tiles/wear-tiles-proto/src/main/proto/dimension.proto
index 5c5abb7..e179638 100644
--- a/wear/wear-tiles/wear-tiles-proto/src/main/proto/dimension.proto
+++ b/wear/wear-tiles/wear-tiles-proto/src/main/proto/dimension.proto
@@ -4,8 +4,6 @@
package androidx.wear.tiles.proto;
-
-
option java_package = "androidx.wear.tiles.proto";
option java_outer_classname = "DimensionProto";
@@ -18,7 +16,13 @@
// A type for font sizes, measured in sp.
message SpProp {
// The value, in sp.
- uint32 value = 1;
+ int32 value = 1;
+}
+
+// A type for font spacing, measured in em.
+message EmProp {
+ // The value, in em.
+ float value = 1;
}
// A type for angular dimensions, measured in degrees.
@@ -52,14 +56,6 @@
uint32 aspect_ratio_height = 2;
}
-// A dimension that can be linear or angular.
-message LinearOrAngularDimension {
- oneof inner {
- DpProp linear_dimension = 1;
- DegreesProp angular_dimension = 2;
- }
-}
-
// A dimension that can be applied to a container.
message ContainerDimension {
oneof inner {
@@ -77,3 +73,11 @@
ProportionalDimensionProp proportional_dimension = 3;
}
}
+
+// A dimension that can be applied to a spacer.
+message SpacerDimension {
+ oneof inner {
+ DpProp linear_dimension = 1;
+ // TODO(b/169137847): Add ExpandedDimensionProp
+ }
+}
diff --git a/wear/wear-tiles/wear-tiles-proto/src/main/proto/events.proto b/wear/wear-tiles/wear-tiles-proto/src/main/proto/events.proto
new file mode 100644
index 0000000..39c5fc1
--- /dev/null
+++ b/wear/wear-tiles/wear-tiles-proto/src/main/proto/events.proto
@@ -0,0 +1,34 @@
+// Messages used when events happen in the Tiles system.
+syntax = "proto3";
+
+package androidx.wear.tiles.proto;
+
+
+option java_package = "androidx.wear.tiles.proto";
+option java_outer_classname = "EventProto";
+
+// Event fired when a tile has been added to the carousel.
+message TileAddEvent {
+ // The ID of the tile added to the carousel.
+ uint32 tile_id = 1;
+}
+
+// Event fired when a tile has been removed from the carousel.
+message TileRemoveEvent {
+ // The ID of the tile removed from the carousel.
+ uint32 tile_id = 1;
+}
+
+// Event fired when a tile is swiped to by the user (i.e. it's visible on
+// screen).
+message TileEnterEvent {
+ // The ID of the entered tile.
+ uint32 tile_id = 1;
+}
+
+// Event fired when a tile is swiped away from by the user (i.e. it's no longer
+// visible on screen).
+message TileLeaveEvent {
+ // The ID of the tile.
+ uint32 tile_id = 1;
+}
diff --git a/wear/wear-tiles/wear-tiles-proto/src/main/proto/layout.proto b/wear/wear-tiles/wear-tiles-proto/src/main/proto/layout.proto
index fafc3fd..12c1e07c 100644
--- a/wear/wear-tiles/wear-tiles-proto/src/main/proto/layout.proto
+++ b/wear/wear-tiles/wear-tiles-proto/src/main/proto/layout.proto
@@ -4,13 +4,11 @@
package androidx.wear.tiles.proto;
-import "action.proto";
import "color.proto";
import "dimension.proto";
-
+import "modifiers.proto";
import "types.proto";
-
option java_package = "androidx.wear.tiles.proto";
option java_outer_classname = "LayoutElementProto";
@@ -88,12 +86,6 @@
// the size of the system's "body" font.
SpProp size = 1;
- // Whether the text should be rendered in a bold typeface. If not specified,
- // defaults to "false".
- //
- // DEPRECATED: Use weight instead.
- BoolProp bold = 2 [deprecated = true];
-
// Whether the text should be rendered in a italic typeface. If not specified,
// defaults to "false".
BoolProp italic = 3;
@@ -109,6 +101,13 @@
// platform, the nearest supported value will be used. If not defined, or
// when set to an invalid value, defaults to "normal".
FontWeightProp weight = 6;
+
+ // The text letter-spacing. Positive numbers increase the space between
+ // letters while negative numbers tighten the space. If not specified,
+ // defaults to 0.
+ EmProp letter_spacing = 7;
+
+ reserved 2;
}
// Alignment of a text element.
@@ -203,116 +202,10 @@
ArcAnchorType value = 1;
}
-// The padding around a Box element.
-message Padding {
- // The padding on the end of the content, depending on the layout direction,
- // in DP and the value of "rtl_aware".
- DpProp end = 1;
-
- // The padding on the start of the content, depending on the layout direction,
- // in DP and the value of "rtl_aware".
- DpProp start = 2;
-
- // The padding at the top, in DP.
- DpProp top = 3;
-
- // The padding at the bottom, in DP.
- DpProp bottom = 4;
-
- // Whether the start/end padding is aware of RTL support. If true, the values
- // for start/end will follow the layout direction (i.e. start will refer to
- // the right hand side of the container if the device is using an RTL locale).
- // If false, start/end will always map to left/right, accordingly.
- BoolProp rtl_aware = 5;
-}
-
-// The border around a Box element.
-message Border {
- // The width of the border, in DP.
- DpProp width = 1;
-
- // The color of the border.
- ColorProp color = 2;
-}
-
-// The corner of a Box element.
-message Corner {
- // The radius of the corner in DP.
- DpProp radius = 1;
-}
-
-// The style of a Text element.
-message TextStyle {
- // The text color. If not defined, defaults to white.
- //
- // DEPRECATED: Use color property of FontStyle instead.
- ColorProp color = 1 [deprecated = true];
-
- // The maximum number of lines that can be represented by the Text element.
- // If not defined, the Text element will be treated as a single-line element.
- Int32Prop max_lines = 2;
-
- // Alignment of the text within its bounds. Note that a Text element will size
- // itself to wrap its contents, so this option is meaningless for single-line
- // text (for that, use alignment of the outer container). For multi-line text,
- // however, this will set the alignment of lines relative to the Text element
- // bounds. If not defined, defaults to TEXT_ALIGN_CENTER.
- TextAlignmentProp multiline_alignment = 3;
-
- // Specifies how to handle text which overflows the bound of the Text element.
- // A Text element will grow as large as possible inside its parent container
- // (while still respecting max_lines); if it cannot grow large enough to
- // render all of its text, the text which cannot fit inside its container will
- // be truncated. If not defined, defaults to TEXT_OVERFLOW_TRUNCATE.
- TextOverflowProp overflow = 4;
-}
-
-// The style of a Spannable element.
-message SpannableStyle {
- // The maximum number of lines that can be represented by the Spannable
- // element. If not defined, the Text element will be treated as a single-line
- // element.
- Int32Prop max_lines = 1;
-
- // Alignment of the Spannable content within its bounds. Note that a Spannable
- // element will size itself to wrap its contents, so this option is
- // meaningless for single-line content (for that, use alignment of the outer
- // container). For multi-line content, however, this will set the alignment of
- // lines relative to the Spannable element bounds. If not defined, defaults to
- // TEXT_ALIGN_CENTER.
- HorizontalAlignmentProp multiline_alignment = 2;
-
- // Specifies how to handle content which overflows the bound of the Spannable
- // element. A Spannable element will grow as large as possible inside its
- // parent container (while still respecting max_lines); if it cannot grow
- // large enough to render all of its content, the content which cannot fit
- // inside its container will be truncated. If not defined, defaults to
- // TEXT_OVERFLOW_TRUNCATE.
- TextOverflowProp overflow = 3;
-}
-
-// The style of a Box.
-message BoxStyle {
- // The background color for this Box. If not defined, defaults to being
- // transparent.
- ColorProp background_color = 1;
-
- // An optional padding inside of this Box. If not defined, Box will not have
- // any padding.
- Padding padding = 2;
-
- // An optional border for this Box. If not defined, Box will not have a
- // border.
- Border border = 3;
-
- // The corner properties of this Box. This only affects the drawing of this
- // Box if either "color" or "border" are also set. If not defined, defaults to
- // having a square corner.
- Corner corner = 4;
-}
-
// The style of a line.
message LineStyle {
+ option deprecated = true;
+
// Color of this line. If not defined, defaults to white.
ColorProp color = 1;
}
@@ -322,28 +215,37 @@
// The text to render.
StringProp text = 1;
- // An optional style for this text string.
- //
- // DEPRECATED: Use Spannable with SpannableStyle instead.
- TextStyle style = 2 [deprecated = true];
-
// The style of font to use (size, bold etc). If not specified, defaults to
// the platform's default body font.
FontStyle font_style = 3;
-}
-// A holder for an element which can have associated Action items for click
-// events. When an element wrapped in a Clickable is clicked, it will fire the
-// associated action.
-message Clickable {
- // The ID associated with this action.
- string id = 1;
+ // Modifiers for this element.
+ Modifiers modifiers = 4;
- // The layout element to attach the action to.
- LayoutElement content = 2;
+ // The maximum number of lines that can be represented by the Text element.
+ // If not defined, the Text element will be treated as a single-line element.
+ Int32Prop max_lines = 5;
- // The action to perform when "content" is clicked.
- Action on_click = 3;
+ // Alignment of the text within its bounds. Note that a Text element will size
+ // itself to wrap its contents, so this option is meaningless for single-line
+ // text (for that, use alignment of the outer container). For multi-line text,
+ // however, this will set the alignment of lines relative to the Text element
+ // bounds. If not defined, defaults to TEXT_ALIGN_CENTER.
+ TextAlignmentProp multiline_alignment = 6;
+
+ // How to handle text which overflows the bound of the Text element.
+ // A Text element will grow as large as possible inside its parent container
+ // (while still respecting max_lines); if it cannot grow large enough to
+ // render all of its text, the text which cannot fit inside its container will
+ // be truncated. If not defined, defaults to TEXT_OVERFLOW_TRUNCATE.
+ TextOverflowProp overflow = 7;
+
+ // The explicit height between lines of text. This is equivalent to the
+ // vertical distance between subsequent baselines. If not specified, defaults
+ // the font's recommended interline spacing.
+ SpProp line_height = 8;
+
+ reserved 2;
}
// How content which does not match the dimensions of its bounds (e.g. an image
@@ -397,6 +299,9 @@
// if its size does not match those bounds. Defaults to
// CONTENT_SCALE_MODE_FIT.
ContentScaleModeProp content_scale_mode = 4;
+
+ // Modifiers for this element.
+ Modifiers modifiers = 5;
}
// A simple spacer, typically used to provide padding between adjacent elements.
@@ -404,10 +309,15 @@
// The width of this Spacer. When this is added as the direct child of an Arc,
// this must be specified as an angular dimension, otherwise a linear
// dimension must be used. If not defined, defaults to 0.
- LinearOrAngularDimension width = 1;
+ SpacerDimension width = 4;
// The height of this spacer. If not defined, defaults to 0.
- DpProp height = 2;
+ SpacerDimension height = 5;
+
+ // Modifiers for this element.
+ Modifiers modifiers = 3;
+
+ reserved 1, 2;
}
// A container which stacks all of its children on top of one another. This also
@@ -417,9 +327,6 @@
// The child element(s) to wrap.
repeated LayoutElement contents = 1;
- // The style of the Box (padding, background color, border etc).
- BoxStyle style = 2;
-
// The height of this Box. If not defined, this will size itself to fit all of
// its children (i.e. a WrappedDimension).
ContainerDimension height = 3;
@@ -435,14 +342,49 @@
// The vertical alignment of the element inside this Box. If not defined,
// defaults to VALIGN_CENTER.
VerticalAlignmentProp vertical_alignment = 6;
+
+ // Modifiers for this element.
+ Modifiers modifiers = 7;
+
+ reserved 2;
+}
+
+// A portion of text which can be added to a Span.
+message SpanText {
+ // The text to render.
+ StringProp text = 1;
+
+ // The style of font to use (size, bold etc). If not specified, defaults to
+ // the platform's default body font.
+ FontStyle font_style = 2;
+
+ // Modifiers for this element.
+ SpanModifiers modifiers = 3;
+}
+
+// An image which can be added to a Span.
+message SpanImage {
+ // The resource_id of the image to render. This must exist in the supplied
+ // resource bundle.
+ StringProp resource_id = 1;
+
+ // The width of this image. If not defined, the image will not be rendered.
+ DpProp width = 2;
+
+ // The height of this image. If not defined, the image will not be rendered.
+ DpProp height = 3;
+
+ // Modifiers for this element.
+ SpanModifiers modifiers = 4;
}
// A single Span. Each Span forms part of a larger Spannable widget. At the
// moment, the only widgets which can be added to Spannable containers are
-// Text elements.
+// SpanText and SpanImage elements.
message Span {
oneof inner {
- Text text = 1;
+ SpanText text = 1;
+ SpanImage image = 2;
}
}
@@ -455,8 +397,36 @@
// The Span elements that form this Spannable.
repeated Span spans = 1;
- // The style of this Spannable
- SpannableStyle style = 2;
+ // Modifiers for this element.
+ Modifiers modifiers = 3;
+
+ // The maximum number of lines that can be represented by the Spannable
+ // element. If not defined, the Spannable element will be treated as a
+ // single-line element.
+ Int32Prop max_lines = 4;
+
+ // Alignment of the Spannable content within its bounds. Note that a Spannable
+ // element will size itself to wrap its contents, so this option is
+ // meaningless for single-line content (for that, use alignment of the outer
+ // container). For multi-line content, however, this will set the alignment of
+ // lines relative to the Spannable element bounds. If not defined, defaults to
+ // TEXT_ALIGN_CENTER.
+ HorizontalAlignmentProp multiline_alignment = 5;
+
+ // How to handle content which overflows the bound of the Spannable element.
+ // A Spannable element will grow as large as possible inside its parent
+ // container (while still respecting max_lines); if it cannot grow large
+ // enough to render all of its content, the content which cannot fit inside
+ // its container will be truncated. If not defined, defaults to
+ // TEXT_OVERFLOW_TRUNCATE.
+ TextOverflowProp overflow = 6;
+
+ // Extra spacing to add between each line. This will apply to all
+ // spans regardless of their font size. This is in addition to original
+ // line heights. Note that this won't add any additional space before the
+ // first line or after the last line. The default value is zero and negative
+ // values will decrease the interline spacing.
+ SpProp line_spacing = 7;
}
// A column of elements. Each child element will be laid out vertically, one
@@ -483,6 +453,9 @@
// The height of this column. If not defined, this will size itself to fit
// all of its children (i.e. a WrappedDimension).
ContainerDimension height = 4;
+
+ // Modifiers for this element.
+ Modifiers modifiers = 5;
}
// A row of elements. Each child will be laid out horizontally, one after
@@ -509,64 +482,18 @@
// The height of this row. If not defined, this will size itself to fit
// all of its children (i.e. a WrappedDimension).
ContainerDimension height = 4;
-}
-// A wrapper for an element which has a screen reader description associated
-// with it. This should generally be used sparingly, and in most cases should
-// only be applied to the top-level layout element or to Clickables.
-message Audible {
- // The element to wrap with the screen reader description.
- LayoutElement content = 1;
-
- // The accessibility label associated with this element. This will be dictated
- // when the element is focused by the screen reader.
- string accessibility_label = 2;
-}
-
-// A line. When added to a normal container, this renders as a horizontal line
-// which can be used to provide a visual break between elements. When added to
-// an arc, it will render as a round progress bar.
-message Line {
- // The length of this Line. When this is added as the direct child of an Arc,
- // this must be specified as an AngularDimension, otherwise a LinearDimension
- // must be used. If not defined, defaults to 0.
- LinearOrAngularDimension length = 1;
-
- // The thickness of this line. If not defined, defaults to 0.
- DpProp thickness = 2;
-
- // The style of this line.
- LineStyle style = 3;
+ // Modifiers for this element.
+ Modifiers modifiers = 5;
}
// An arc container. This container will fill itself to a circle, which fits
// inside its parent container, and all of its children will be placed on that
// circle. The fields anchor_angle and anchor_type can be used to specify where
// to draw children within this circle.
-//
-// Note that there are two special cases. Text and Line elements which are added
-// as direct descendants to an arc will be drawn as a curved widget around the
-// arc, rather than just placed on the arc and drawn normally.
message Arc {
// Contents of this container.
- repeated LayoutElement contents = 1;
-
- // The length of this Arc as an angle. If not defined, this will size itself
- // to fit all of its children. If defined, this should be a value > 0 degrees.
- DegreesProp length = 2;
-
- // The thickness of this Arc. If not defined, this will size itself to fit all
- // of its children.
- DpProp thickness = 3;
-
- // Whether this Arc's children should be rotated, according to its position
- // in the arc or not. As an example, assume that an Image has been added to
- // the arc, and ends up at the 3 o clock position. If rotate_contents = true,
- // the image will be placed at the 3 o clock position, and will be rotated
- // clockwise through 90 degrees. If rotate_contents = false, the image will be
- // placed at the 3 o clock position, but itself will not be rotated. If not
- // defined, defaults to true.
- BoolProp rotate_contents = 4;
+ repeated ArcLayoutElement contents = 9;
// The angle for the anchor, used with anchor_type to determine where to draw
// children. Note that 0 degrees is the 12 o clock position on a device, and
@@ -588,6 +515,66 @@
// drawn in the center.
// If not defined, defaults to VALIGN_CENTER
VerticalAlignmentProp vertical_align = 7;
+
+ // Modifiers for this element.
+ Modifiers modifiers = 8;
+
+ reserved 1, 2, 3, 4;
+}
+
+// A text element that can be used in an Arc.
+message ArcText {
+ // The text to render.
+ StringProp text = 1;
+
+ // The style of font to use (size, bold etc). If not specified, defaults to
+ // the platform's default body font.
+ FontStyle font_style = 2;
+
+ // Modifiers for this element.
+ ArcModifiers modifiers = 3;
+}
+
+// A line that can be used in an Arc and renders as a round progress bar.
+message ArcLine {
+ // The length of this line, in degrees. If not defined, defaults to 0.
+ DegreesProp length = 1;
+
+ // The thickness of this line. If not defined, defaults to 0.
+ DpProp thickness = 2;
+
+ // The color of this line.
+ ColorProp color = 3;
+
+ // Modifiers for this element.
+ ArcModifiers modifiers = 4;
+}
+
+// A simple spacer used to provide padding between adjacent elements in an Arc.
+message ArcSpacer {
+ // The length of this spacer, in degrees. If not defined, defaults to 0.
+ DegreesProp length = 1;
+
+ // The thickness of this spacer, in DP. If not defined, defaults to 0.
+ DpProp thickness = 2;
+
+ // Modifiers for this element.
+ ArcModifiers modifiers = 3;
+}
+
+// A container that allows a standard LayoutElement to be added to an Arc.
+message ArcAdapter {
+ // The element to adapt to an Arc.
+ LayoutElement content = 1;
+
+ // Whether this adapter's contents should be rotated, according to its
+ // position in the arc or not. As an example, assume that an Image has been
+ // added to the arc, and ends up at the 3 o clock position. If rotate_contents
+ // = true, the image will be placed at the 3 o clock position, and will be
+ // rotated clockwise through 90 degrees. If rotate_contents = false, the image
+ // will be placed at the 3 o clock position, but itself will not be rotated.
+ // If not defined, defaults to false.
+ BoolProp rotate_contents = 2;
}
// The root of all layout elements. This exists to act as a holder for all of
@@ -600,10 +587,26 @@
Spacer spacer = 4;
Text text = 5;
Image image = 6;
- Clickable clickable = 7;
- Audible audible = 8;
- Line line = 9;
Arc arc = 10;
Spannable spannable = 11;
}
+
+ reserved 7, 8, 9;
+}
+
+// The root of all elements that can be used in an Arc. This exists to act as a
+// holder for all of the actual arc layout elements above.
+message ArcLayoutElement {
+ oneof inner {
+ ArcText text = 1;
+ ArcLine line = 2;
+ ArcSpacer spacer = 3;
+ ArcAdapter adapter = 4;
+ }
+}
+
+// A complete layout.
+message Layout {
+ // The root element in the layout.
+ LayoutElement root = 1;
}
diff --git a/wear/wear-tiles/wear-tiles-proto/src/main/proto/modifiers.proto b/wear/wear-tiles/wear-tiles-proto/src/main/proto/modifiers.proto
new file mode 100644
index 0000000..0cc03fe
--- /dev/null
+++ b/wear/wear-tiles/wear-tiles-proto/src/main/proto/modifiers.proto
@@ -0,0 +1,125 @@
+// Modifiers for composable layout elements.
+syntax = "proto3";
+
+package androidx.wear.tiles.proto;
+
+import "action.proto";
+import "color.proto";
+import "dimension.proto";
+import "types.proto";
+
+option java_package = "androidx.wear.tiles.proto";
+option java_outer_classname = "ModifiersProto";
+
+// A modifier for an element which can have associated Actions for click events.
+// When an element with a ClickableModifier is clicked it will fire the
+// associated action.
+message Clickable {
+ // The ID associated with this action.
+ string id = 1;
+
+ // The action to perform when the element this modifier is attached to is
+ // clicked.
+ Action on_click = 2;
+}
+
+// A modifier for an element which has accessibility semantics associated with
+// it. This should generally be used sparingly, and in most cases should only be
+// applied to the top-level layout element or to Clickables.
+message Semantics {
+ // The content description associated with this element. This will be dictated
+ // when the element is focused by the screen reader.
+ string content_description = 1;
+}
+
+// A modifier to apply padding around an element.
+message Padding {
+ // The padding on the end of the content, depending on the layout direction,
+ // in DP and the value of "rtl_aware".
+ DpProp end = 1;
+
+ // The padding on the start of the content, depending on the layout direction,
+ // in DP and the value of "rtl_aware".
+ DpProp start = 2;
+
+ // The padding at the top, in DP.
+ DpProp top = 3;
+
+ // The padding at the bottom, in DP.
+ DpProp bottom = 4;
+
+ // Whether the start/end padding is aware of RTL support. If true, the values
+ // for start/end will follow the layout direction (i.e. start will refer to
+ // the right hand side of the container if the device is using an RTL locale).
+ // If false, start/end will always map to left/right, accordingly.
+ BoolProp rtl_aware = 5;
+}
+
+// A modifier to apply a border around an element.
+message Border {
+ // The width of the border, in DP.
+ DpProp width = 1;
+
+ // The color of the border.
+ ColorProp color = 2;
+}
+
+// The corner of a Box element.
+message Corner {
+ // The radius of the corner in DP.
+ DpProp radius = 1;
+}
+
+// A modifier to apply a background to an element.
+message Background {
+ // The background color for this element. If not defined, defaults to being
+ // transparent.
+ ColorProp color = 1;
+
+ // The corner properties of this element. This only affects the drawing of
+ // this element if it has a background color or border. If not defined,
+ // defaults to having a square corner.
+ Corner corner = 2;
+}
+
+// Modifiers for an element. These may change the way they are drawn (e.g.
+// Padding or Background), or change their behaviour (e.g. Clickable, or
+// Semantics).
+message Modifiers {
+ // Allows its wrapped element to have actions associated with it, which will
+ // be executed when the element is tapped.
+ Clickable clickable = 1;
+
+ // Adds metadata for the modified element, for example, screen reader content
+ // descriptions.
+ Semantics semantics = 2;
+
+ // Adds padding to the modified element.
+ Padding padding = 3;
+
+ // Draws a border around the modified element.
+ Border border = 4;
+
+ // Adds a background (with optional corner radius) to the modified element.
+ Background background = 5;
+}
+
+// Modifiers that can be used with ArcLayoutElements. These may change the way
+// they are drawn, or change their behaviour.
+message ArcModifiers {
+ // Allows its wrapped element to have actions associated with it, which will
+ // be executed when the element is tapped.
+ Clickable clickable = 1;
+
+ // Adds metadata for the modified element, for example, screen reader content
+ // descriptions.
+ Semantics semantics = 2;
+}
+
+// Modifiers that can be used with Span elements. These may change the way
+// they are drawn, or change their behaviour.
+message SpanModifiers {
+ // Allows its wrapped element to have actions associated with it, which will
+ // be executed when the element is tapped.
+ Clickable clickable = 1;
+}
diff --git a/wear/wear-tiles/wear-tiles-proto/src/main/proto/requests.proto b/wear/wear-tiles/wear-tiles-proto/src/main/proto/requests.proto
index d642b9d..755ea02 100644
--- a/wear/wear-tiles/wear-tiles-proto/src/main/proto/requests.proto
+++ b/wear/wear-tiles/wear-tiles-proto/src/main/proto/requests.proto
@@ -4,8 +4,7 @@
package androidx.wear.tiles.proto;
import "device_parameters.proto";
-
-
+import "state.proto";
option java_package = "androidx.wear.tiles.proto";
option java_outer_classname = "RequestProto";
@@ -15,12 +14,14 @@
message TileRequest {
// The ID of the Clickable that was tapped to cause this request. Empty string
// if the request was not caused by a Clickable.
- // TODO(b/167954298): Pass a State object here instead.
- string clickable_id = 1;
+ // TODO(b/167954298): Remove.
+ string clickable_id = 1 [deprecated = true];
// Parameters describing the device requesting the tile update.
- DeviceParameters device_parameters = 2
- ;
+ DeviceParameters device_parameters = 2;
+
+ // The state that should be used when building the tile.
+ State state = 3;
}
// Parameters passed to a Tile provider when the renderer is requesting a
@@ -32,4 +33,7 @@
// Requested resource IDs. If not specified, all resources for the given
// version must be provided in the response.
repeated string resource_ids = 2;
+
+ // Parameters describing the device requesting the resources.
+ DeviceParameters device_parameters = 3;
}
diff --git a/wear/wear-tiles/wear-tiles-proto/src/main/proto/resources.proto b/wear/wear-tiles/wear-tiles-proto/src/main/proto/resources.proto
index c090ee5..4407bae 100644
--- a/wear/wear-tiles/wear-tiles-proto/src/main/proto/resources.proto
+++ b/wear/wear-tiles/wear-tiles-proto/src/main/proto/resources.proto
@@ -4,8 +4,6 @@
package androidx.wear.tiles.proto;
-
-
option java_package = "androidx.wear.tiles.proto";
option java_outer_classname = "ResourceProto";
@@ -32,13 +30,18 @@
// The byte array representing the image.
bytes data = 1;
- // The native width of the image, in pixels.
+ // The native width of the image, in pixels. Only required for formats
+ // (e.g. IMAGE_FORMAT_RGB_565) where the image data does not include size.
int32 width_px = 2;
- // The native height of the image, in pixels.
+ // The native height of the image, in pixels. Only required for formats
+ // (e.g. IMAGE_FORMAT_RGB_565) where the image data does not include size.
int32 height_px = 3;
- // The format of the byte array data representing the image.
+ // The format of the byte array data representing the image. May be left
+ // unspecified or set to IMAGE_FORMAT_UNDEFINED in which case the platform
+ // will attempt to extract this from the raw image data. If the platform does
+ // not support the format, the image will not be decoded or displayed.
ImageFormat format = 4;
}
diff --git a/wear/wear-tiles/wear-tiles-proto/src/main/proto/state.proto b/wear/wear-tiles/wear-tiles-proto/src/main/proto/state.proto
new file mode 100644
index 0000000..fb8755d
--- /dev/null
+++ b/wear/wear-tiles/wear-tiles-proto/src/main/proto/state.proto
@@ -0,0 +1,14 @@
+// State of a tile.
+syntax = "proto3";
+
+package androidx.wear.tiles.proto;
+
+
+option java_package = "androidx.wear.tiles.proto";
+option java_outer_classname = "StateProto";
+
+// State information.
+message State {
+ // The ID of the clickable that was last clicked.
+ string last_clickable_id = 1;
+}
diff --git a/wear/wear-tiles/wear-tiles-proto/src/main/proto/tile.proto b/wear/wear-tiles/wear-tiles-proto/src/main/proto/tile.proto
index 923c4d1..1bbded9 100644
--- a/wear/wear-tiles/wear-tiles-proto/src/main/proto/tile.proto
+++ b/wear/wear-tiles/wear-tiles-proto/src/main/proto/tile.proto
@@ -3,9 +3,8 @@
package androidx.wear.tiles.proto;
-
import "timeline.proto";
-
+import "version.proto";
option java_package = "androidx.wear.tiles.proto";
option java_outer_classname = "TileProto";
@@ -18,4 +17,14 @@
// The tiles to show in the carousel, along with their validity periods.
Timeline timeline = 2;
+
+ // The schema version that this tile was built with.
+ VersionInfo schema_version = 3;
+
+ // How many milliseconds of elapsed time (**not** wall clock time) this tile
+ // can be considered to be "fresh". The platform will attempt to refresh
+ // your tile at some point in the future after this interval has lapsed. A
+ // value of 0 here signifies that auto-refreshes should not be used (i.e. you
+ // will manually request updates via TileProviderService#getRequester).
+ uint64 freshness_interval_millis = 4;
}
diff --git a/wear/wear-tiles/wear-tiles-proto/src/main/proto/timeline.proto b/wear/wear-tiles/wear-tiles-proto/src/main/proto/timeline.proto
index 85b0fdd..af1f123 100644
--- a/wear/wear-tiles/wear-tiles-proto/src/main/proto/timeline.proto
+++ b/wear/wear-tiles/wear-tiles-proto/src/main/proto/timeline.proto
@@ -4,10 +4,8 @@
package androidx.wear.tiles.proto;
-
import "layout.proto";
-
option java_package = "androidx.wear.tiles.proto";
option java_outer_classname = "TimelineProto";
@@ -23,11 +21,13 @@
// One piece of renderable content along with the time that it is valid for.
message TimelineEntry {
- // The contents of this timeline entry.
- LayoutElement content = 1;
-
// The validity period for this timeline entry.
TimeInterval validity = 2;
+
+ // The contents of this timeline entry.
+ Layout layout = 3;
+
+ reserved 1;
}
// A collection of TimelineEntry items.
diff --git a/wear/wear-tiles/wear-tiles-proto/src/main/proto/types.proto b/wear/wear-tiles/wear-tiles-proto/src/main/proto/types.proto
index 40398f2..42b66c9 100644
--- a/wear/wear-tiles/wear-tiles-proto/src/main/proto/types.proto
+++ b/wear/wear-tiles/wear-tiles-proto/src/main/proto/types.proto
@@ -3,7 +3,6 @@
package androidx.wear.tiles.proto;
-
option java_package = "androidx.wear.tiles.proto";
option java_outer_classname = "TypesProto";
diff --git a/wear/wear-tiles/wear-tiles-proto/src/main/proto/version.proto b/wear/wear-tiles/wear-tiles-proto/src/main/proto/version.proto
new file mode 100644
index 0000000..7d509fe
--- /dev/null
+++ b/wear/wear-tiles/wear-tiles-proto/src/main/proto/version.proto
@@ -0,0 +1,21 @@
+// The components of a tile that can be rendered by a tile renderer.
+syntax = "proto3";
+
+package androidx.wear.tiles.proto;
+
+
+option java_package = "androidx.wear.tiles.proto";
+option java_outer_classname = "VersionProto";
+
+// Version information. This is used to encode the schema version of a payload
+// (e.g. inside of Tile).
+message VersionInfo {
+ // Major version. Incremented on breaking changes (i.e. compatibility is not
+ // guaranteed across major versions).
+ uint32 major = 1;
+
+ // Minor version. Incremented on non-breaking changes (e.g. schema additions).
+ // Anything consuming a payload can safely consume anything with a lower
+ // minor version.
+ uint32 minor = 2;
+}
diff --git a/wear/wear-watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/WatchFaceControlClientTest.kt b/wear/wear-watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/WatchFaceControlClientTest.kt
index 1bfaac4..7381798 100644
--- a/wear/wear-watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/WatchFaceControlClientTest.kt
+++ b/wear/wear-watchface-client/src/androidTest/java/androidx/wear/watchface/client/test/WatchFaceControlClientTest.kt
@@ -31,9 +31,9 @@
import androidx.test.screenshot.AndroidXScreenshotTestRule
import androidx.test.screenshot.assertAgainstGolden
import androidx.wear.complications.SystemProviders
-import androidx.wear.complications.data.ComplicationText
import androidx.wear.complications.data.ComplicationType
import androidx.wear.complications.data.LongTextComplicationData
+import androidx.wear.complications.data.PlainComplicationText
import androidx.wear.complications.data.ShortTextComplicationData
import androidx.wear.watchface.DrawMode
import androidx.wear.watchface.LayerMode
@@ -129,12 +129,12 @@
private val complications = mapOf(
EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID to
- ShortTextComplicationData.Builder(ComplicationText.plain("ID"))
- .setTitle(ComplicationText.plain("Left"))
+ ShortTextComplicationData.Builder(PlainComplicationText.Builder("ID").build())
+ .setTitle(PlainComplicationText.Builder("Left").build())
.build(),
EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID to
- ShortTextComplicationData.Builder(ComplicationText.plain("ID"))
- .setTitle(ComplicationText.plain("Right"))
+ ShortTextComplicationData.Builder(PlainComplicationText.Builder("ID").build())
+ .setTitle(PlainComplicationText.Builder("Right").build())
.build()
)
@@ -409,9 +409,13 @@
interactiveInstance.updateComplicationData(
mapOf(
EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID to
- ShortTextComplicationData.Builder(ComplicationText.plain("Test")).build(),
+ ShortTextComplicationData.Builder(
+ PlainComplicationText.Builder("Test").build()
+ ).build(),
EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID to
- LongTextComplicationData.Builder(ComplicationText.plain("Test")).build()
+ LongTextComplicationData.Builder(
+ PlainComplicationText.Builder("Test").build()
+ ).build()
)
)
diff --git a/wear/wear-watchface-editor/src/androidTest/java/androidx/wear/watchface/editor/EditingSessionTest.kt b/wear/wear-watchface-editor/src/androidTest/java/androidx/wear/watchface/editor/EditingSessionTest.kt
index 4c97c61..94c6a30 100644
--- a/wear/wear-watchface-editor/src/androidTest/java/androidx/wear/watchface/editor/EditingSessionTest.kt
+++ b/wear/wear-watchface-editor/src/androidTest/java/androidx/wear/watchface/editor/EditingSessionTest.kt
@@ -25,6 +25,7 @@
import android.graphics.RectF
import android.graphics.drawable.Icon
import android.os.Bundle
+import android.os.IBinder
import android.os.Parcel
import android.support.wearable.complications.ComplicationData
import android.support.wearable.complications.ComplicationProviderInfo
@@ -39,9 +40,9 @@
import androidx.wear.complications.DefaultComplicationProviderPolicy
import androidx.wear.complications.ProviderInfoRetriever
import androidx.wear.complications.SystemProviders
-import androidx.wear.complications.data.ComplicationText
import androidx.wear.complications.data.ComplicationType
import androidx.wear.complications.data.LongTextComplicationData
+import androidx.wear.complications.data.PlainComplicationText
import androidx.wear.complications.data.ShortTextComplicationData
import androidx.wear.watchface.CanvasComplication
import androidx.wear.watchface.Complication
@@ -137,15 +138,15 @@
mapOf(
provider1 to
ShortTextComplicationData.Builder(
- ComplicationText.plain("Left")
+ PlainComplicationText.Builder("Left").build()
).build().asWireComplicationData(),
provider2 to
LongTextComplicationData.Builder(
- ComplicationText.plain("Right")
+ PlainComplicationText.Builder("Right").build()
).build().asWireComplicationData(),
provider3 to
LongTextComplicationData.Builder(
- ComplicationText.plain("Provider3")
+ PlainComplicationText.Builder("Provider3").build()
).build().asWireComplicationData(),
)
)
@@ -543,14 +544,17 @@
val providerIcon =
Icon.createWithBitmap(Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888))
val complicationText = "TestText"
+ val mockBinder = Mockito.mock(IBinder::class.java)
`when`(mockProviderInfoService.apiVersion).thenReturn(1)
+ `when`(mockProviderInfoService.asBinder()).thenReturn(mockBinder)
doAnswer {
val callback = it.arguments[2] as IPreviewComplicationDataCallback
callback.updateComplicationData(
- ShortTextComplicationData.Builder(ComplicationText.plain(complicationText))
- .build().asWireComplicationData()
+ ShortTextComplicationData.Builder(
+ PlainComplicationText.Builder(complicationText).build()
+ ).build().asWireComplicationData()
)
true
}.`when`(mockProviderInfoService).requestPreviewComplicationData(
diff --git a/wear/wear-watchface-editor/src/main/java/androidx/wear/watchface/editor/EditorSession.kt b/wear/wear-watchface-editor/src/main/java/androidx/wear/watchface/editor/EditorSession.kt
index 7e079c9..67d1102 100644
--- a/wear/wear-watchface-editor/src/main/java/androidx/wear/watchface/editor/EditorSession.kt
+++ b/wear/wear-watchface-editor/src/main/java/androidx/wear/watchface/editor/EditorSession.kt
@@ -33,10 +33,10 @@
import androidx.wear.complications.ComplicationHelperActivity
import androidx.wear.complications.ProviderInfoRetriever
import androidx.wear.complications.data.ComplicationData
-import androidx.wear.complications.data.ComplicationText
import androidx.wear.complications.data.ComplicationType
import androidx.wear.complications.data.LongTextComplicationData
import androidx.wear.complications.data.MonochromaticImage
+import androidx.wear.complications.data.PlainComplicationText
import androidx.wear.complications.data.ShortTextComplicationData
import androidx.wear.watchface.RenderParameters
import androidx.wear.watchface.WatchFace
@@ -334,10 +334,15 @@
}
// Fetch preview ComplicationData if possible.
return providerInfo.providerComponentName?.let {
- providerInfoRetriever.requestPreviewComplicationData(
- it,
- ComplicationType.fromWireType(providerInfo.complicationType)
- )
+ try {
+ providerInfoRetriever.requestPreviewComplicationData(
+ it,
+ ComplicationType.fromWireType(providerInfo.complicationType)
+ )
+ } catch (e: Exception) {
+ // Something went wrong, so use fallback preview data.
+ makeFallbackPreviewData(providerInfo)
+ }
} ?: makeFallbackPreviewData(providerInfo)
}
@@ -348,12 +353,12 @@
providerInfo.providerIcon == null ->
LongTextComplicationData.Builder(
- ComplicationText.plain(providerInfo.providerName!!)
+ PlainComplicationText.Builder(providerInfo.providerName!!).build()
).build()
else ->
ShortTextComplicationData.Builder(
- ComplicationText.plain(providerInfo.providerName!!)
+ PlainComplicationText.Builder(providerInfo.providerName!!).build()
).setMonochromaticImage(
MonochromaticImage.Builder(providerInfo.providerIcon!!).build()
).build()
@@ -362,6 +367,9 @@
protected fun fetchComplicationPreviewData() {
coroutineScope.launch {
val providerInfoRetriever = providerInfoRetrieverProvider.getProviderInfoRetriever()
+ // Unlikely but WCS could conceivably crash during this call. We could retry but it's
+ // not obvious if that'd succeed or if WCS session state is recoverable, it's probably
+ // better to crash and start over.
val providerInfoArray = providerInfoRetriever.retrieveProviderInfo(
watchFaceComponentName,
complicationState.keys.toIntArray()
diff --git a/wear/wear-watchface/src/androidTest/java/androidx/wear/watchface/test/WatchFaceControlServiceTest.kt b/wear/wear-watchface/src/androidTest/java/androidx/wear/watchface/test/WatchFaceControlServiceTest.kt
index 95a9ebb..2cc3ff9 100644
--- a/wear/wear-watchface/src/androidTest/java/androidx/wear/watchface/test/WatchFaceControlServiceTest.kt
+++ b/wear/wear-watchface/src/androidTest/java/androidx/wear/watchface/test/WatchFaceControlServiceTest.kt
@@ -26,7 +26,7 @@
import androidx.test.filters.MediumTest
import androidx.test.screenshot.AndroidXScreenshotTestRule
import androidx.test.screenshot.assertAgainstGolden
-import androidx.wear.complications.data.ComplicationText
+import androidx.wear.complications.data.PlainComplicationText
import androidx.wear.complications.data.ShortTextComplicationData
import androidx.wear.watchface.DrawMode
import androidx.wear.watchface.RenderParameters
@@ -98,15 +98,19 @@
listOf(
IdAndComplicationDataWireFormat(
EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID,
- ShortTextComplicationData.Builder(ComplicationText.plain("Mon"))
- .setTitle(ComplicationText.plain("23rd"))
+ ShortTextComplicationData.Builder(
+ PlainComplicationText.Builder("Mon").build()
+ )
+ .setTitle(PlainComplicationText.Builder("23rd").build())
.build()
.asWireComplicationData()
),
IdAndComplicationDataWireFormat(
EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID,
- ShortTextComplicationData.Builder(ComplicationText.plain("100"))
- .setTitle(ComplicationText.plain("Steps"))
+ ShortTextComplicationData.Builder(
+ PlainComplicationText.Builder("100").build()
+ )
+ .setTitle(PlainComplicationText.Builder("Steps").build())
.build()
.asWireComplicationData()
)
@@ -135,8 +139,8 @@
).toWireFormat(),
100,
123456789,
- ShortTextComplicationData.Builder(ComplicationText.plain("Mon"))
- .setTitle(ComplicationText.plain("23rd"))
+ ShortTextComplicationData.Builder(PlainComplicationText.Builder("Mon").build())
+ .setTitle(PlainComplicationText.Builder("23rd").build())
.build()
.asWireComplicationData(),
null
diff --git a/wear/wear-watchface/src/androidTest/java/androidx/wear/watchface/test/WatchFaceServiceImageTest.kt b/wear/wear-watchface/src/androidTest/java/androidx/wear/watchface/test/WatchFaceServiceImageTest.kt
index 5d8e57d..085089e 100644
--- a/wear/wear-watchface/src/androidTest/java/androidx/wear/watchface/test/WatchFaceServiceImageTest.kt
+++ b/wear/wear-watchface/src/androidTest/java/androidx/wear/watchface/test/WatchFaceServiceImageTest.kt
@@ -34,7 +34,7 @@
import androidx.test.screenshot.AndroidXScreenshotTestRule
import androidx.test.screenshot.assertAgainstGolden
import androidx.wear.complications.SystemProviders
-import androidx.wear.complications.data.ComplicationText
+import androidx.wear.complications.data.PlainComplicationText
import androidx.wear.complications.data.ShortTextComplicationData
import androidx.wear.watchface.DrawMode
import androidx.wear.watchface.LayerMode
@@ -82,13 +82,13 @@
private val complicationProviders = mapOf(
SystemProviders.DAY_OF_WEEK to
- ShortTextComplicationData.Builder(ComplicationText.plain("Mon"))
- .setTitle(ComplicationText.plain("23rd"))
+ ShortTextComplicationData.Builder(PlainComplicationText.Builder("Mon").build())
+ .setTitle(PlainComplicationText.Builder("23rd").build())
.build()
.asWireComplicationData(),
SystemProviders.STEP_COUNT to
- ShortTextComplicationData.Builder(ComplicationText.plain("100"))
- .setTitle(ComplicationText.plain("Steps"))
+ ShortTextComplicationData.Builder(PlainComplicationText.Builder("100").build())
+ .setTitle(PlainComplicationText.Builder("Steps").build())
.build()
.asWireComplicationData()
)
@@ -416,15 +416,15 @@
val previewComplicationData = listOf(
IdAndComplicationDataWireFormat(
EXAMPLE_CANVAS_WATCHFACE_LEFT_COMPLICATION_ID,
- ShortTextComplicationData.Builder(ComplicationText.plain("A"))
- .setTitle(ComplicationText.plain("Preview"))
+ ShortTextComplicationData.Builder(PlainComplicationText.Builder("A").build())
+ .setTitle(PlainComplicationText.Builder("Preview").build())
.build()
.asWireComplicationData()
),
IdAndComplicationDataWireFormat(
EXAMPLE_CANVAS_WATCHFACE_RIGHT_COMPLICATION_ID,
- ShortTextComplicationData.Builder(ComplicationText.plain("B"))
- .setTitle(ComplicationText.plain("Preview"))
+ ShortTextComplicationData.Builder(PlainComplicationText.Builder("B").build())
+ .setTitle(PlainComplicationText.Builder("Preview").build())
.build()
.asWireComplicationData()
)