1 /* 2 * Copyright 2023 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 import android.content.Context 18 import android.graphics.Bitmap 19 import android.graphics.Canvas 20 import android.hardware.input.InputManager 21 import android.hardware.input.KeyboardLayout 22 import android.util.TypedValue 23 import kotlin.math.roundToInt 24 25 object LayoutPreview { createLayoutPreviewnull26 fun createLayoutPreview(context: Context, layout: KeyboardLayout?): Bitmap { 27 val im = context.getSystemService(InputManager::class.java)!! 28 val width = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 29 600.0F, context.getResources().getDisplayMetrics()).roundToInt() 30 val height = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 31 200.0F, context.getResources().getDisplayMetrics()).roundToInt() 32 val drawable = im.getKeyboardLayoutPreview(layout, width, height)!! 33 val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888) 34 val canvas = Canvas(bitmap) 35 drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()) 36 drawable.draw(canvas) 37 return bitmap 38 } 39 }