View MissingNightColorDetector.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private const val COLOR = "color" | |
class MissingNightColorDetector : ResourceXmlDetector() { | |
private val nightModeColors = mutableListOf<String>() | |
private val regularColors = mutableMapOf<String, Location>() | |
override fun appliesTo(folderType: ResourceFolderType): Boolean { | |
return folderType == ResourceFolderType.VALUES | |
} |
View colors.xml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<resources> | |
<color name="colorPrimary">#008577</color> | |
<color name="colorPrimaryDark">#00574B</color> | |
<color name="colorAccent">#D81B60</color> | |
</resources> |
View MissingNightColorIssue.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
object MissingNightColorIssue { | |
private const val ID = "MissingNightColor" | |
private const val DESCRIPTION = "Night Color missing" | |
const val EXPLANATION = | |
'''Night color value for this color resource seems to be missing. | |
If your app supports dark theme, then you should add an equivalent color resource for it in the night values folder.''' | |
private val CATEGORY = Category.CORRECTNESS | |
private const val PRIORITY = 6 | |
private val SEVERITY = Severity.WARNING |
View DarkThemeLintRegistry.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class DarkThemeLintRegistry : IssueRegistry() { | |
override val issues: List<Issue> | |
get() = listOf(DirectColorUseIssue.ISSUE) | |
} |
View DirectColorUseDetector.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private const val BACKGROUND = "background" | |
private const val FOREGROUND = "foreground" | |
private const val SRC = "src" | |
private const val TEXT_COLOR = "textColor" | |
private const val TINT = "tint" | |
//Vector Drawables. | |
private const val FILL_COLOR = "fillColor" | |
private const val STROKE_COLOR = "strokeColor" | |
private const val COLOR = "color" |
View DirectColorUseIssue.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
object DirectColorUseIssue { | |
private const val ID = "DirectColorUse" | |
private const val DESCRIPTION = "Color used directly" | |
const val EXPLANATION = | |
'''Avoid direct use of colors in XML files. | |
This will cause issues with different theme (dark-theme?) support''' | |
private val CATEGORY = Category.CORRECTNESS | |
private const val PRIORITY = 6 | |
private val SEVERITY = Severity.WARNING |
View lint-module-build.gradle
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
apply plugin: 'java-library' | |
apply plugin: 'kotlin' | |
dependencies { | |
implementation fileTree(dir: 'libs', include: ['*.jar']) | |
compileOnly "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" | |
compileOnly 'com.android.tools.lint:lint-api:26.4.1' | |
compileOnly 'com.android.tools.lint:lint-checks:26.4.1' | |
} |
View MoveFab.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
root.setOnApplyWindowInsetsListener { _, insets -> | |
val fabLp = fab.layoutParams as CoordinatorLayout.LayoutParams | |
fabLp.bottomMargin = fabOriginalBottomMargin + insets.systemWindowInsetBottom | |
fab.layoutParams = fabLp | |
insets.consumeSystemWindowInsets() | |
} | |
View BGLocation.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<manifest> | |
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> | |
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> | |
</manifest> | |
//Request for the permission like any other permission request: | |
ActivityCompat.requestPermissions(this, | |
arrayOf(Manifest.permission.ACCESS_COARSE_LOCATION, | |
Manifest.permission.ACCESS_BACKGROUND_LOCATION), | |
your-permission-request-code) |
View FullScreenPendingIntent.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
val fullScreenIntent = Intent(this, CallActivity::class.java) | |
val fullScreenPendingIntent = PendingIntent.getActivity(this, 0, | |
fullScreenIntent, PendingIntent.FLAG_UPDATE_CURRENT) | |
val notificationBuilder = NotificationCompat.Builder(this, CHANNEL_ID) | |
.... | |
.setPriority(NotificationCompat.PRIORITY_HIGH) | |
.setCategory(NotificationCompat.CATEGORY_CALL) | |
.setFullScreenIntent(fullScreenPendingIntent, true) |