从 Android 中的图像中提取颜色配置文件
可以使用 AndroidX 的 Palette API 从 Android 上的图像中提取颜色配置文件;通常,颜色配置文件将用于基于图片生成颜色协调的小部件。例如,卡片可以包括根据图片的颜色配置文件着色的图像和标题文本。 Palette API 允许您获取以下颜色配置文件:
- 轻的充满活力
- 充满活力
- 黑暗充满活力
- 轻静音
- 静音
- 暗静音
了解核心
每个颜色配置文件都包含一个具有三种主要颜色的色板:
代码以了解更多代码
- RGB :色板的主要颜色。
- titleTextColor :用于出现在色板原色上方的“标题”文本的颜色。
- bodyTextColor :用于出现在色板原色上方的“正文”文本的颜色。
分步实施
该应用程序由一个按钮和一张图片组成。当您按下按钮时,图像会变为不同的图像。在下面找到六个不同的图像标题 这些图块的背景和文本颜色会随着图片的变化而变化,正如 Palette API 从图像中检索到的那样。
第 1 步:添加依赖项
dependencies {
// AndroidX Pallete
implementation 'androidx.palette:palette-ktx:1.0.0'
// Picasso
implementation 'com.squareup.picasso:picasso:2.7'
}
第 2 步:添加互联网权限,以便我们的应用程序可以使用互联网
...
第 3 步:设计布局
导航到app > res > layout > activity_main.xml并将以下代码添加到该文件中。下面是activity_main.xml文件的代码。
XML
Kotlin
import android.graphics.Bitmap
import android.graphics.drawable.Drawable
import android.os.Bundle
import android.widget.Button
import android.widget.ImageView
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.LinearLayoutCompat
import androidx.core.content.ContextCompat
import androidx.palette.graphics.Palette
import com.squareup.picasso.Picasso
class MainActivity : AppCompatActivity() {
private lateinit var target: com.squareup.picasso.Target
private lateinit var layoutLightVibrant: LinearLayoutCompat
private lateinit var gfgVibrant: LinearLayoutCompat
private lateinit var darkGfG: LinearLayoutCompat
private lateinit var layoutLightMuted: LinearLayoutCompat
private lateinit var gfgMuted: LinearLayoutCompat
private lateinit var gfgMutedDark: LinearLayoutCompat
private lateinit var gfgLightVibrant: TextView
private lateinit var gfgText: TextView
private lateinit var gfgTextVib: TextView
private lateinit var gfgGfgTextMutedMore: TextView
private lateinit var gfgTextMutedMore: TextView
private lateinit var gfgTextMutedDark: TextView
private val imageUrls = listOf(
"http://placeimg.com/160/120/animals",
"http://placeimg.com/160/120/arch",
"http://placeimg.com/160/120/nature",
"http://placeimg.com/160/120/people",
"http://placeimg.com/160/120/tech",
"http://placeimg.com/160/120/grayscale",
"http://placeimg.com/160/120/sepia",
)
private var imageUrlIndex = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setupLayout()
setupImage()
findViewById
第 4 步:与 MainActivity.kt 文件
转到MainActivity.kt文件并参考以下代码。下面是MainActivity.kt文件的代码。代码中添加了注释以更详细地理解代码。
科特林
import android.graphics.Bitmap
import android.graphics.drawable.Drawable
import android.os.Bundle
import android.widget.Button
import android.widget.ImageView
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.LinearLayoutCompat
import androidx.core.content.ContextCompat
import androidx.palette.graphics.Palette
import com.squareup.picasso.Picasso
class MainActivity : AppCompatActivity() {
private lateinit var target: com.squareup.picasso.Target
private lateinit var layoutLightVibrant: LinearLayoutCompat
private lateinit var gfgVibrant: LinearLayoutCompat
private lateinit var darkGfG: LinearLayoutCompat
private lateinit var layoutLightMuted: LinearLayoutCompat
private lateinit var gfgMuted: LinearLayoutCompat
private lateinit var gfgMutedDark: LinearLayoutCompat
private lateinit var gfgLightVibrant: TextView
private lateinit var gfgText: TextView
private lateinit var gfgTextVib: TextView
private lateinit var gfgGfgTextMutedMore: TextView
private lateinit var gfgTextMutedMore: TextView
private lateinit var gfgTextMutedDark: TextView
private val imageUrls = listOf(
"http://placeimg.com/160/120/animals",
"http://placeimg.com/160/120/arch",
"http://placeimg.com/160/120/nature",
"http://placeimg.com/160/120/people",
"http://placeimg.com/160/120/tech",
"http://placeimg.com/160/120/grayscale",
"http://placeimg.com/160/120/sepia",
)
private var imageUrlIndex = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setupLayout()
setupImage()
findViewById
输出:
想要一个更快节奏和更具竞争力的环境来学习 Android 的基础知识吗?
单击此处前往由我们的专家精心策划的指南,旨在让您立即做好行业准备!