Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Use quill_native_bridge as default impl in DefaultClipboardService, fix related bugs in the extensions package #2230

Merged
merged 102 commits into from
Oct 16, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
4a343e4
feat(quill_native_bridge): add initial implementation for getClipboar…
EchoEllet Sep 15, 2024
013a162
chore(example): use quill_native_bridge from path in dependency_overr…
EchoEllet Sep 15, 2024
9397b6c
feat: use quill_native_bridge for HTML Clipboard in flutter_quill and…
EchoEllet Sep 15, 2024
e6ff099
feat(quill_native_bridge): extend the support for macOS.
EchoEllet Sep 15, 2024
f71f57a
chore(example): clear todos in app module build.gradle
EchoEllet Sep 15, 2024
f9dac24
chore(android): additional check before accessing the clip data item
EchoEllet Sep 16, 2024
ff2f918
fix(flutter_quill_extensions): unrelated bug for copying an image (ne…
EchoEllet Sep 16, 2024
344eea6
feat: add copyImageToClipboard() method channel, an asset file in the…
EchoEllet Sep 16, 2024
660cb0e
docs(readme): add optional step to configure copying images to the cl…
EchoEllet Sep 16, 2024
f7c3589
feat: use copyImageToClipboard() in flutter_quill_extensions, fix com…
EchoEllet Sep 16, 2024
9743d47
chore: correct name of _loadImageBytesFromImageProvider()
EchoEllet Sep 16, 2024
710440b
feat: add web support for copyImageToClipboard()
EchoEllet Sep 16, 2024
9840745
feat: (WIP) retriving image file from clipboard, simplify ClipboardSe…
EchoEllet Sep 17, 2024
6f91fdb
chore(example): rename _flutterQuillAssetImage to _kFlutterQuillAsset…
EchoEllet Sep 17, 2024
0f9986f
chore(example): update error messages in quill_native_bridge example
EchoEllet Sep 17, 2024
1837a37
feat: add support for gif, fix unhandled exception on Android only wh…
EchoEllet Sep 19, 2024
ffba185
chore(example): configure the Android example for copying images to t…
EchoEllet Sep 19, 2024
c9aec82
Merge remote-tracking branch 'origin/master' into feat/default-clipbo…
EchoEllet Sep 19, 2024
cad0307
Merge remote-tracking branch 'origin/master' into feat/default-clipbo…
EchoEllet Sep 20, 2024
da77243
feat: support for web (WIP, will be updated soon)
EchoEllet Sep 20, 2024
685f495
chore: merge master branch and fix conflicts
EchoEllet Sep 21, 2024
499bdee
chore: annotate ClipboardService and related classes as experimental
EchoEllet Sep 21, 2024
76246b5
Merge remote-tracking branch 'origin/master' into feat/default-clipbo…
EchoEllet Sep 21, 2024
d89073a
chore: temporarily add dependency_overrides to fix build failure - re…
EchoEllet Sep 21, 2024
b1ce6a2
Merge remote-tracking branch 'origin/master' into feat/default-clipbo…
EchoEllet Sep 21, 2024
bfeebcc
Merge remote-tracking branch 'origin/master' into feat/default-clipbo…
EchoEllet Sep 21, 2024
d8c8f10
feat: seperate web implementation from quill_native_bridge into quill…
EchoEllet Sep 21, 2024
0c36eee
chore: update description of quill_native_bridge_web
EchoEllet Sep 21, 2024
82642da
chore(web): avoid using jsify() when possible
EchoEllet Sep 21, 2024
eb9f100
chore: publish and use quill_native_bridge_web in quill_native_bridge…
EchoEllet Sep 21, 2024
6fa9c05
docs(readme): use pub.dev link of quill_native_bridge in quill_native…
EchoEllet Sep 21, 2024
12c9b92
chore: use .toJS in clipboardItem map (minor change)
EchoEllet Sep 21, 2024
e9d6285
fix: use hosted quill_native_bridge in dependencies and override with…
EchoEllet Sep 21, 2024
7479abc
fix: update minimum required version of Flutter/Dart by quill_native_…
EchoEllet Sep 22, 2024
2beb39e
test: write basic integration tests for getClipboardImage() and copyI…
EchoEllet Sep 22, 2024
36b8f52
Merge remote-tracking branch 'origin/master' into feat/default-clipbo…
EchoEllet Sep 22, 2024
0dc9a42
feat: add copyHTMLToClipboard(), add integration tests for copyHTMLTo…
EchoEllet Sep 22, 2024
4382209
chore: cleanup QuillNativeBridgeWeb, extract mime constants, organize…
EchoEllet Sep 22, 2024
f0b5241
fix(web): issue caused by previous commit
EchoEllet Sep 22, 2024
2d8b135
docs(web): update methods of QuillNativeBridge to reflect the web sup…
EchoEllet Sep 22, 2024
686e0ff
chore(android): cleanup the check for HTML from the clipboard in getC…
EchoEllet Sep 22, 2024
47f05f4
test: add a test for getClipboardHTML to ensure it's not null only wh…
EchoEllet Sep 22, 2024
351dad8
ci: attempt to fix CI failure by updating outdated path of quill_nati…
EchoEllet Sep 22, 2024
f1c9913
docs: document why platform implementations of QuillNativeBridgePlatf…
EchoEllet Sep 23, 2024
4e65d65
chore(example): add windows platform runner example using Flutter CLI…
EchoEllet Sep 23, 2024
9300c4a
feat: (WIP) add windows experimental support for getClipboardHTML(), …
EchoEllet Sep 23, 2024
219ee7b
fix(docs): update incorrect description of quill_native_bridge_window…
EchoEllet Sep 23, 2024
c036553
refactor: move plugin platform interface to quill_native_bridge_platf…
EchoEllet Sep 23, 2024
1e4d0e2
chore: (WIP): publish quill_native_bridge 10.7.5
EchoEllet Sep 23, 2024
217ef1a
chore: (WIP) publish quill_native_bridge_web to use quill_native_brid…
EchoEllet Sep 23, 2024
e49d6f3
chore(example): add linux platform runner example using Flutter CLI (…
EchoEllet Sep 23, 2024
57a6b8d
feat(linux): (WIP) highly experimental linux support using xclip
EchoEllet Sep 24, 2024
3d6bee6
fix(windows): non case sensitive check in stripWin32HtmlDescription()…
EchoEllet Sep 24, 2024
e1b0eb3
chore(example): unrelated change for windows in Flutter Quill example…
EchoEllet Sep 24, 2024
3cfdf18
chore: merge master branch and fix conflicts
EchoEllet Sep 25, 2024
2b7799b
chore(android): cleanup onMethodCall() in QuillNativeBridgePlugin
EchoEllet Sep 25, 2024
d2cd4e8
docs(readme): update docs to reflect the changes
EchoEllet Sep 25, 2024
86e235d
chore: use hasWebSupport instead of hardcoding the check directly in …
EchoEllet Sep 26, 2024
bf2e462
feat: rename MethodChannelQuillNativeBridge.methodChannel to testMeth…
EchoEllet Sep 26, 2024
d7e3064
refactor: move android implementation from quill_native_bridge to qui…
EchoEllet Sep 26, 2024
fb0f2b8
chore: update QuillNativeBridgeAndroid.registerWith() assert message
EchoEllet Sep 26, 2024
622e087
refactor(apple): move iOS and macOS implementation from quill_native_…
EchoEllet Sep 26, 2024
17845c8
chore: add quill_native_bridge_platform_interface in pubspec_overides…
EchoEllet Sep 26, 2024
d3e9357
refactor: rename copyHTMLToClipboard() and getClipboardHTML() to copy…
EchoEllet Sep 26, 2024
7321ef5
feat: more advance method to check the platform support check allowin…
EchoEllet Sep 26, 2024
707d370
chore(analysis): remove unused imports in quill_native_bridge and qui…
EchoEllet Sep 26, 2024
fd50828
fix(ci): temporarily pub get quill_native_bridge packages in main wor…
EchoEllet Sep 26, 2024
6939289
chore: format dart pigeon generated files as a workaround to CI failure
EchoEllet Sep 26, 2024
8d0cdb1
chore: merge master branch and fix conflicts
EchoEllet Sep 27, 2024
64ae54f
chore: merge master branch and fix conflicts
EchoEllet Sep 27, 2024
7847418
chore(deps): update flutter_lints to 5.0.0 in quill_native_bridge
EchoEllet Sep 27, 2024
f489acf
refactor(windows): move CloseClipboard() to finally block in getClipb…
EchoEllet Sep 27, 2024
6257e70
chore(windows): clear todo related to previous commit
EchoEllet Sep 27, 2024
a54ea77
chore(readme): remove description from the platform support table, us…
EchoEllet Sep 28, 2024
88d6675
chore(readme): use different emoji for platforms that doesn't support…
EchoEllet Sep 28, 2024
877240b
Merge remote-tracking branch 'origin/master' into feat/default-clipbo…
EchoEllet Sep 28, 2024
2c2b283
style(windows): use TEXT and free from win32 instead of toNativeUtf16…
EchoEllet Sep 28, 2024
0d572c2
refactor(windows): only register HTML format id once
EchoEllet Sep 28, 2024
af80f16
feat(windows): (WIP) highly experimental support for copyHtmlToClipbo…
EchoEllet Sep 28, 2024
b30923f
refactor: extract supported platforms into Set for isSupported()
EchoEllet Sep 29, 2024
6794351
chore(windows): add error code in errors using GetLastError()
EchoEllet Sep 29, 2024
9c7ec6d
chore(windows): avoid passing the locked memory pointer to SetClipboa…
EchoEllet Sep 29, 2024
f69646c
docs(readme): document android platform configuration in quill_native…
EchoEllet Sep 29, 2024
1c6e7b8
fix(windows): (WIP) GlobalUnlock before SetClipboardData and GlobalFr…
EchoEllet Sep 29, 2024
781de0d
docs(readme): slighly improve platform configuration docs in quill_na…
EchoEllet Sep 29, 2024
ec6751f
fix(windows): GlobalUnlock() the handle instead of pointer before cal…
EchoEllet Sep 29, 2024
3c14070
chore(android): add reference to Flutter #63533
EchoEllet Sep 29, 2024
299a976
chore(android): define package in GeneratedMessages.kt, update relate…
EchoEllet Sep 30, 2024
f44a802
chore(android): ignore analysis warning for the generated code messag…
EchoEllet Sep 30, 2024
d5344da
feat: (WIP) add initial support for getClipboardFiles()
EchoEllet Oct 1, 2024
333497c
chore(ci): format generated messages.g.dart file to bypass CI failure
EchoEllet Oct 1, 2024
9ab4fd9
feat(linux): add support for getClipboardFiles()
EchoEllet Oct 1, 2024
a9a549f
docs: update old reference of QuillNativeBridgeFeature, add doc comme…
EchoEllet Oct 1, 2024
9f9faeb
chore(readme): add link for quill_native_bridge, correct minor typo
EchoEllet Oct 1, 2024
cbe6492
chore(docs): minor changes to update doc comment in QuillController
EchoEllet Oct 1, 2024
2f1851f
Merge remote-tracking branch 'origin/master' into feat/default-clipbo…
EchoEllet Oct 13, 2024
ae908ca
chore: move quill_native_bridge to https://github.com/FlutterQuill/qu…
EchoEllet Oct 14, 2024
c0f4e1a
docs(readme): improve the 'Rich Text Paste' section, drop the TODO fo…
EchoEllet Oct 15, 2024
414f5a1
chore: update deprecation message of FlutterQuillExtensions.useSuperC…
EchoEllet Oct 15, 2024
3401bac
chore(example): remove commnet of deprecated method FlutterQuillExten…
EchoEllet Oct 15, 2024
1c33424
chore: rename ClipboardService.copyImageToClipboard() to ClipboardSer…
EchoEllet Oct 15, 2024
6b46df4
chore: add a link to a TODO in DefaultClipboardService._getClipboardF…
EchoEllet Oct 16, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions example/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ dependency_overrides:
path: ../dart_quill_delta
flutter_quill_test:
path: ../flutter_quill_test
quill_native_bridge:
path: ../quill_native_bridge


dev_dependencies:
Expand Down
13 changes: 8 additions & 5 deletions quill_native_bridge/.metadata
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# This file should be version controlled and should not be manually edited.

version:
revision: "5874a72aa4c779a02553007c47dacbefba2374dc"
revision: "4cf269e36de2573851eaef3c763994f8f9be494d"
channel: "stable"

project_type: plugin
Expand All @@ -13,11 +13,14 @@ project_type: plugin
migration:
platforms:
- platform: root
create_revision: 5874a72aa4c779a02553007c47dacbefba2374dc
base_revision: 5874a72aa4c779a02553007c47dacbefba2374dc
create_revision: 4cf269e36de2573851eaef3c763994f8f9be494d
base_revision: 4cf269e36de2573851eaef3c763994f8f9be494d
- platform: android
create_revision: 4cf269e36de2573851eaef3c763994f8f9be494d
base_revision: 4cf269e36de2573851eaef3c763994f8f9be494d
- platform: ios
create_revision: 5874a72aa4c779a02553007c47dacbefba2374dc
base_revision: 5874a72aa4c779a02553007c47dacbefba2374dc
create_revision: 4cf269e36de2573851eaef3c763994f8f9be494d
base_revision: 4cf269e36de2573851eaef3c763994f8f9be494d

# User provided section

Expand Down
9 changes: 9 additions & 0 deletions quill_native_bridge/android/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
*.iml
.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
/build
/captures
.cxx
51 changes: 51 additions & 0 deletions quill_native_bridge/android/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
group = "dev.flutterquill.quill_native_bridge"
version = "1.0-SNAPSHOT"

buildscript {
ext.kotlin_version = "1.8.22"
repositories {
google()
mavenCentral()
}

dependencies {
classpath("com.android.tools.build:gradle:8.1.0")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version")
}
}

allprojects {
repositories {
google()
mavenCentral()
}
}

apply plugin: "com.android.library"
apply plugin: "kotlin-android"

android {
if (project.android.hasProperty("namespace")) {
namespace = "dev.flutterquill.quill_native_bridge"
}

compileSdk = 34

compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}

kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8
}

sourceSets {
main.java.srcDirs += "src/main/kotlin"
test.java.srcDirs += "src/test/kotlin"
}

defaultConfig {
minSdk = 21
}
}
1 change: 1 addition & 0 deletions quill_native_bridge/android/settings.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
rootProject.name = 'quill_native_bridge'
3 changes: 3 additions & 0 deletions quill_native_bridge/android/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="dev.flutterquill.quill_native_bridge">
</manifest>
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package dev.flutterquill.quill_native_bridge

import android.content.ClipDescription
import android.content.ClipboardManager
import android.content.Context

import io.flutter.embedding.engine.plugins.FlutterPlugin
import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel
import io.flutter.plugin.common.MethodChannel.MethodCallHandler
import io.flutter.plugin.common.MethodChannel.Result

class QuillNativeBridgePlugin : FlutterPlugin, MethodCallHandler {
private lateinit var channel: MethodChannel
private lateinit var context: Context

override fun onAttachedToEngine(flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) {
context = flutterPluginBinding.applicationContext
channel = MethodChannel(flutterPluginBinding.binaryMessenger, "quill_native_bridge")
channel.setMethodCallHandler(this)
}

override fun onMethodCall(call: MethodCall, result: Result) {
when (call.method) {
"getClipboardHTML" -> {
val clipboard =
context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager

if (!clipboard.hasPrimaryClip()) {
result.success(null)
return
}

val clipData = clipboard.primaryClip

if (clipData == null) {
result.success(null)
return
}

val item = clipData.getItemAt(0)

if (item.text == null || clipboard.primaryClipDescription?.hasMimeType(
ClipDescription.MIMETYPE_TEXT_HTML
) == false
) {
result.success(null)
return
}

val htmlText = item.htmlText
if (htmlText == null) {
result.error(
"HTML_TEXT_NULL",
"Expected the HTML Text from Clipboard to be not null",
null
)
return
}
result.success(htmlText)
}

else -> result.notImplemented()
}
}

override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) =
channel.setMethodCallHandler(null)
}
43 changes: 43 additions & 0 deletions quill_native_bridge/example/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
migrate_working_dir/

# IntelliJ related
*.iml
*.ipr
*.iws
.idea/

# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/

# Flutter/Dart/Pub related
**/doc/api/
**/ios/Flutter/.last_build_id
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.pub-cache/
.pub/
/build/

# Symbolication related
app.*.symbols

# Obfuscation related
app.*.map.json

# Android Studio will place build artifacts here
/android/app/debug
/android/app/profile
/android/app/release
3 changes: 3 additions & 0 deletions quill_native_bridge/example/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# 🪶 Quill Native Bridge Example

Demonstrates the usage of [`quill_native_bridge`](https://pub.dev/packages/quill_native_bridge) plugin.
31 changes: 31 additions & 0 deletions quill_native_bridge/example/analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
include: package:flutter_lints/flutter.yaml

linter:
rules:
always_declare_return_types: true
always_put_required_named_parameters_first: true
annotate_overrides: true
avoid_empty_else: true
avoid_escaping_inner_quotes: true
avoid_print: true
avoid_types_on_closure_parameters: true
avoid_void_async: true
cascade_invocations: true
directives_ordering: true
omit_local_variable_types: true
prefer_const_constructors: true
prefer_const_constructors_in_immutables: true
prefer_const_declarations: true
prefer_final_fields: true
prefer_final_in_for_each: true
prefer_final_locals: true
prefer_initializing_formals: true
prefer_int_literals: true
prefer_interpolation_to_compose_strings: true
prefer_relative_imports: true
prefer_single_quotes: true
sort_constructors_first: true
sort_unnamed_constructors_first: true
unnecessary_lambdas: true
unnecessary_parenthesis: true
unnecessary_string_interpolations: true
13 changes: 13 additions & 0 deletions quill_native_bridge/example/android/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
gradle-wrapper.jar
/.gradle
/captures/
/gradlew
/gradlew.bat
/local.properties
GeneratedPluginRegistrant.java

# Remember to never publicly share your keystore.
# See https://flutter.dev/to/reference-keystore
key.properties
**/*.keystore
**/*.jks
44 changes: 44 additions & 0 deletions quill_native_bridge/example/android/app/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
plugins {
id "com.android.application"
id "kotlin-android"
// The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
id "dev.flutter.flutter-gradle-plugin"
}

android {
namespace = "dev.flutterquill.quill_native_bridge_example"
compileSdk = flutter.compileSdkVersion
ndkVersion = flutter.ndkVersion

compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}

kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8
}

defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId = "dev.flutterquill.quill_native_bridge_example"
// You can update the following values to match your application needs.
// For more information, see: https://flutter.dev/to/review-gradle-config.
minSdk = flutter.minSdkVersion
targetSdk = flutter.targetSdkVersion
versionCode = flutter.versionCode
versionName = flutter.versionName
}

buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig = signingConfigs.debug
}
}
}

flutter {
source = "../.."
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application
android:label="quill_native_bridge_example"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTop"
android:taskAffinity=""
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
<!-- Required to query activities that can process text, see:
https://developer.android.com/training/package-visibility and
https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT.

In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. -->
<queries>
<intent>
<action android:name="android.intent.action.PROCESS_TEXT"/>
<data android:mimeType="text/plain"/>
</intent>
</queries>
</manifest>
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package dev.flutterquill.quill_native_bridge_example

import io.flutter.embedding.android.FlutterActivity

class MainActivity: FlutterActivity()
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="?android:colorBackground" />

<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>
Loading