Commit 4e511afb authored by 王雷's avatar 王雷

支持竖排文字

parent ebfeb811
...@@ -37,7 +37,7 @@ repositories { ...@@ -37,7 +37,7 @@ repositories {
} }
group 'com.qmai.android.widget' group 'com.qmai.android.widget'
version '1.1.30-SNAPSHOT' version '1.1.34-SNAPSHOT'
gradlePublish { gradlePublish {
......
package com.qmai.android.keyboard; package com.qmai.android.keyboard;
import android.annotation.SuppressLint
import android.content.Context import android.content.Context
import android.graphics.Canvas import android.graphics.*
import android.graphics.Color
import android.graphics.Paint
import android.inputmethodservice.Keyboard import android.inputmethodservice.Keyboard
import android.inputmethodservice.KeyboardView import android.inputmethodservice.KeyboardView
import android.text.Layout
import android.text.StaticLayout
import android.text.TextPaint
import android.util.AttributeSet import android.util.AttributeSet
import android.util.TypedValue import android.util.TypedValue
import android.widget.EditText import android.widget.EditText
...@@ -18,14 +20,15 @@ import com.qmai.android.keyboardview.R ...@@ -18,14 +20,15 @@ import com.qmai.android.keyboardview.R
class StockNumberKeyBoardKeyBoard : KeyboardView { class StockNumberKeyBoardKeyBoard : KeyboardView {
private lateinit var editWidget: EditText private lateinit var editWidget: EditText
private lateinit var mtextPaint: Paint private lateinit var mtextPaint: TextPaint
private var defaultActionListener = DefaultKeyBoardActionListener() private var defaultActionListener = DefaultKeyBoardActionListener()
enum class Code constructor(var code: Int) { enum class Code constructor(var code: Int) {
DELETE(10), CLEAR(11), SAVE(-11) DELETE(10), CLEAR(11), SAVE(-11)
} }
public var btnText = "保存"
public var btnText = "保存"
constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) { constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) {
...@@ -55,6 +58,7 @@ class StockNumberKeyBoardKeyBoard : KeyboardView { ...@@ -55,6 +58,7 @@ class StockNumberKeyBoardKeyBoard : KeyboardView {
onKeyboardActionListener = defaultActionListener onKeyboardActionListener = defaultActionListener
} }
@SuppressLint("DrawAllocation")
override fun onDraw(canvas: Canvas?) { override fun onDraw(canvas: Canvas?) {
super.onDraw(canvas) super.onDraw(canvas)
canvas?.let { c -> canvas?.let { c ->
...@@ -76,17 +80,41 @@ class StockNumberKeyBoardKeyBoard : KeyboardView { ...@@ -76,17 +80,41 @@ class StockNumberKeyBoardKeyBoard : KeyboardView {
//开始绘制 //开始绘制
drawable.draw(canvas) drawable.draw(canvas)
if (key.label != null) { if (key.label != null) {
canvas.save()
val actualText = btnText.replace("\n", "")
val rect = Rect()
mtextPaint.getTextBounds(actualText, 0, actualText.length, rect)
val singleTextHeight = rect.height()
val singleTextWidth = rect.width() / actualText.length
val allHeight = singleTextHeight * actualText.length
val fontMetrics = mtextPaint.fontMetrics val fontMetrics = mtextPaint.fontMetrics
//计算基线 //计算基线
val baseLine = val baseLine =
key.y + (key.height + paddingBottom) / 2 - (fontMetrics.bottom - fontMetrics.top) / 2 key.y + (key.height + paddingBottom) / 2 - (fontMetrics.bottom - fontMetrics.top) / 2
//绘制文字
canvas.drawText( val layout = StaticLayout(
btnText, btnText, mtextPaint, singleTextWidth - 10,
Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, true
)
canvas.save()
canvas.translate(
(key.x + ((key.width + paddingRight) / 2)).toFloat(), (key.x + ((key.width + paddingRight) / 2)).toFloat(),
baseLine, baseLine - allHeight / 2 - singleTextHeight
mtextPaint
) )
layout.draw(canvas)
canvas.restore()
mtextPaint.measureText(btnText)
//绘制文字
/* canvas.drawText(
btnText,
(key.x + ((key.width + paddingRight) / 2)).toFloat(),
baseLine,
mtextPaint
)*/
} }
} }
} }
...@@ -156,7 +184,7 @@ class StockNumberKeyBoardKeyBoard : KeyboardView { ...@@ -156,7 +184,7 @@ class StockNumberKeyBoardKeyBoard : KeyboardView {
isPreviewEnabled = false isPreviewEnabled = false
this.keyboard = keyBoard this.keyboard = keyBoard
onKeyboardActionListener = defaultActionListener onKeyboardActionListener = defaultActionListener
mtextPaint = Paint(Paint.ANTI_ALIAS_FLAG) mtextPaint = TextPaint(Paint.ANTI_ALIAS_FLAG)
mtextPaint.textAlign = Paint.Align.CENTER mtextPaint.textAlign = Paint.Align.CENTER
mtextPaint.textSize = sp2px(20f) mtextPaint.textSize = sp2px(20f)
mtextPaint.color = Color.parseColor("#333333") mtextPaint.color = Color.parseColor("#333333")
......
/**
* Automatically generated file. DO NOT MODIFY
*/
package com.qimai.android.tool_network;
public final class BuildConfig {
public static final boolean DEBUG = false;
public static final String LIBRARY_PACKAGE_NAME = "com.qimai.android.tool_network";
/**
* @deprecated APPLICATION_ID is misleading in libraries. For the library package name use LIBRARY_PACKAGE_NAME
*/
@Deprecated
public static final String APPLICATION_ID = "com.qimai.android.tool_network";
public static final String BUILD_TYPE = "release";
public static final String FLAVOR = "";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "1.0";
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.qimai.android.tool_network"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="28" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>
\ No newline at end of file
[{"outputType":{"type":"AAPT_FRIENDLY_MERGED_MANIFESTS"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0","enabled":true,"outputFile":"fetch-release.aar","fullName":"release","baseName":"release"},"path":"AndroidManifest.xml","properties":{"packageId":"com.qimai.android.tool_network","split":""}}]
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/leiwang/project/widget/fetch/src/main/jniLibs"/></dataSet><dataSet config="release" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/leiwang/project/widget/fetch/src/release/jniLibs"/></dataSet></merger>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/leiwang/project/widget/fetch/src/main/shaders"/></dataSet><dataSet config="release" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/leiwang/project/widget/fetch/src/release/shaders"/></dataSet></merger>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/leiwang/project/widget/fetch/src/main/assets"/><source path="/Users/leiwang/project/widget/fetch/build/intermediates/shader_assets/release/compileReleaseShaders/out"/></dataSet><dataSet config="release" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/leiwang/project/widget/fetch/src/release/assets"/></dataSet></merger>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">tool_network</string>
</resources>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<merger version="3"><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/leiwang/project/widget/fetch/src/main/res"/><source path="/Users/leiwang/project/widget/fetch/build/generated/res/rs/release"/><source path="/Users/leiwang/project/widget/fetch/build/generated/res/resValues/release"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main" generated-set="main$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/leiwang/project/widget/fetch/src/main/res"><file path="/Users/leiwang/project/widget/fetch/src/main/res/values/strings.xml" qualifiers=""><string name="app_name">tool_network</string></file></source><source path="/Users/leiwang/project/widget/fetch/build/generated/res/rs/release"/><source path="/Users/leiwang/project/widget/fetch/build/generated/res/resValues/release"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="release$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/leiwang/project/widget/fetch/src/release/res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="release" generated-set="release$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/leiwang/project/widget/fetch/src/release/res"/></dataSet><mergedItems/></merger>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.qimai.android.tool_network"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="28" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>
\ No newline at end of file
R_DEF: Internal format may change without notice
local
string app_name
1<?xml version="1.0" encoding="utf-8"?>
2<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="com.qimai.android.tool_network"
4 android:versionCode="1"
5 android:versionName="1.0" >
6
7 <uses-sdk
8 android:minSdkVersion="19"
8-->/Users/leiwang/project/widget/fetch/src/main/AndroidManifest.xml
9 android:targetSdkVersion="28" />
9-->/Users/leiwang/project/widget/fetch/src/main/AndroidManifest.xml
10
11 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
11-->/Users/leiwang/project/widget/fetch/src/main/AndroidManifest.xml:3:5-78
11-->/Users/leiwang/project/widget/fetch/src/main/AndroidManifest.xml:3:22-76
12 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
12-->/Users/leiwang/project/widget/fetch/src/main/AndroidManifest.xml:4:5-81
12-->/Users/leiwang/project/widget/fetch/src/main/AndroidManifest.xml:4:22-78
13
14</manifest>
[{"outputType":{"type":"MERGED_MANIFESTS"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0","enabled":true,"outputFile":"fetch-release.aar","fullName":"release","baseName":"release"},"path":"../../library_manifest/release/AndroidManifest.xml","properties":{"packageId":"com.qimai.android.tool_network","split":""}}]
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">tool_network</string>
</resources>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment