Android Jetpack(五) 界面

android:layout_height=“wrap_content”/>

<android.support.text.emoji.widget.EmojiButton

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”/>

要详细了解如何为 EmojiCompat 配置可下载字体,请转到表情符号兼容性示例 Java | Kotlin

将 EmojiCompat 与 AppCompat 搭配使用

如果您使用的是 AppCompat widgets,则可以使用从 扩展的 EmojiCompat 。

dependencies {

implementation “com.android.support:support-emoji-appcompat:$version”

}

<android.support.text.emoji.widget.EmojiAppCompatTextView

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”/>

<android.support.text.emoji.widget.EmojiAppCompatEditText

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”/>

<android.support.text.emoji.widget.EmojiAppCompatButton

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”/>

捆绑式字体配置

dependencies {

implementation “com.android.support:support-emoji-bundled:$version”

}

要使用捆绑式字体配置 EmojiCompat,请执行以下步骤:

1、使用 BundledEmojiCompatConfig 创建 EmojiCompat 的实例并提供 Context 的实例。

2、调用 init() 方法以初始化 EmojiCompat 并传递 BundledEmojiCompatConfig 的实例。

class MyApplication : Application() {

override fun onCreate() {

super.onCreate()

val config = BundledEmojiCompatConfig(this)

EmojiCompat.init(config)

}

}

将 EmojiCompat 与自定义组件搭配使用

示例TextView

class MyTextView(context: Context) : AppCompatTextView(context) {

private val emojiTextViewHelper: EmojiTextViewHelper by lazy(LazyThreadSafetyMode.NONE) {

EmojiTextViewHelper(this).apply {

updateTransformationMethod()

}

}

override fun setFilters(filters: Array) {

super.setFilters(emojiTextViewHelper.getFilters(filters))

}

override fun setAllCaps(allCaps: Boolean) {

super.setAllCaps(allCaps)

emojiTextViewHelper.setAllCaps(allCaps)

}

}

示例EditText

class MyEditText(context: Context) : AppCompatEditText(context) {

private val emojiEditTextHelper: EmojiEditTextHelper by lazy(LazyThreadSafetyMode.NONE) {

EmojiEditTextHelper(this).also {

super.setKeyListener(it.getKeyListener(keyListener))

}

}

override fun setKeyListener(input: KeyListener?) {

input?.also {

super.setKeyListener(emojiEditTextHelper.getKeyListener(it))

}

}

override fun onCreateInputConnection(outAttrs: EditorInfo): InputConnection {

val inputConnection: InputConnection = super.onCreateInputConnection(outAttrs)

return emojiEditTextHelper.onCreateInputConnection(

inputConnection,

outAttrs

) as InputConnection

}

}

3、Fragment - 组件化界面的基本单位


Sunflower 演示应用中使用了 Fragment

4、布局 - 使用不同的算法布置组件


编写布局main_layout.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:orientation=“vertical” >

<TextView android:id=“@+id/text”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:text=“Hello, I am a TextView” />

<Button android:id=“@+id/button”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:text=“Hello, I am a Button” />

加载布局

fun onCreate(savedInstanceState: Bundle) {

super.onCreate(savedInstanceState)

setContentView(R.layout.main_layout)

}

5、调色板


设置调色板库

要使用调色板库,请安装 Android 支持库并将其更新至 24.0.0 或更高版本,然后按照添加支持库的说明向您的应用开发项目添加调色板库。

android {

compileSdkVersion 28

}

dependencies {

implementation ‘com.android.support:palette-v7:28.0.0’

}

创建调色板

生成调色板实例

使用 Palette 的 from(Bitmap bitmap) 方法生成 Palette 实例,以先创建 Palette.Builder(从 Bitmap)。然后,生成工具就能够以同步或异步方式生成调色板。

// Generate palette synchronously and return it

fun createPaletteSync(bitmap: Bitmap): Palette = Palette.from(bitmap).generate()

// Generate palette asynchronously and use it on a different

// thread using onGenerated()

fun createPaletteAsync(bitmap: Bitmap) {

Palette.from(bitmap).generate { palette ->

// Use generated instance

}

}

自定义调色板

您可以使用 Palette.Builder 自定义调色板

使用 Palette.Builder 类中的以下方法来微调调色板的大小和颜色:

  • addFilter()

此方法会添加一个过滤器,用于指明生成的调色板中可以有哪些颜色。传入您自己的 Palette.Filter 并修改其 isAllowed() 方法,以确定从调色板中滤除哪些颜色。

  • maximumColorCount()此方法可用于设置调色板中的颜色数量上限。默认值为 16,最佳值取决于源图片。对于横向显示的图片,最佳值的范围为 8-16,而带有人脸的图片的值通常介于 24-32。Palette.调色板中的颜色越多,Builder 生成调色板的所用的时间就越长。

  • setRegion()此方法指示在创建调色板时生成工具使用的位图的区域。您只能在从位图生成调色板时使用此方法,而且这不会影响原始图片。

  • addTarget()此方法允许您通过向生成工具添加 Target 颜色配置文件来自行执行颜色调整。如果默认 Target 不够充分,高级开发者可以创建自己的 Target,具体方法是使用 Target.Builder。

提取颜色配置文件

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值