diff --git a/app/build.gradle b/app/build.gradle
index ca57a11..4267140 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -21,7 +21,7 @@ android {
minSdkVersion 23
targetSdkVersion 26
versionCode 1
- versionName "0.8.3"
+ versionName "0.8.4"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
// Enabling multidex support.
multiDexEnabled true
diff --git a/app/src/main/java/com/chrhsmt/sisheng/MainApplication.kt b/app/src/main/java/com/chrhsmt/sisheng/MainApplication.kt
index 80b33ba..1475052 100644
--- a/app/src/main/java/com/chrhsmt/sisheng/MainApplication.kt
+++ b/app/src/main/java/com/chrhsmt/sisheng/MainApplication.kt
@@ -1,7 +1,6 @@
package com.chrhsmt.sisheng
import android.app.Application
-import com.squareup.leakcanary.LeakCanary
/**
* Created by chihiro on 2017/11/03.
@@ -9,6 +8,6 @@ import com.squareup.leakcanary.LeakCanary
class MainApplication : Application() {
override fun onCreate() {
super.onCreate()
- LeakCanary.install(this);
+ //LeakCanary.install(this);
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/chrhsmt/sisheng/ui/AutoResizeButton.kt b/app/src/main/java/com/chrhsmt/sisheng/ui/AutoResizeButton.kt
new file mode 100644
index 0000000..bb1d407
--- /dev/null
+++ b/app/src/main/java/com/chrhsmt/sisheng/ui/AutoResizeButton.kt
@@ -0,0 +1,41 @@
+package com.chrhsmt.sisheng.ui
+
+import android.content.Context
+import android.util.AttributeSet
+import android.widget.Button
+
+/**
+ * フォントサイズ自動調整Button
+ *
+ * ソースコードは以下から借用
+ * http://aillicepray.blogspot.jp/2015/02/textview.html
+ */
+class AutoResizeButton : Button {
+
+ internal val info = AutoResizeUtils.AutoResizeInfo()
+
+ /**
+ * コンストラクタ
+ * @param context
+ */
+ constructor(context: Context) : super(context) {}
+
+ /**
+ * コンストラクタ
+ * @param context
+ * @param attrs
+ */
+ constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {
+ //This method reads the parameters given in the xml file and sets the properties according to it
+ AutoResizeUtils.setModelText(attrs.getAttributeValue(null, "model_text"), info)
+ }
+
+ /**
+ * 子Viewの位置を決める
+ */
+ override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) {
+ super.onLayout(changed, left, top, right, bottom)
+ AutoResizeUtils.resize(this, info)
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/chrhsmt/sisheng/ui/AutoResizeTextView.kt b/app/src/main/java/com/chrhsmt/sisheng/ui/AutoResizeTextView.kt
index 9db61ce..5c59b93 100644
--- a/app/src/main/java/com/chrhsmt/sisheng/ui/AutoResizeTextView.kt
+++ b/app/src/main/java/com/chrhsmt/sisheng/ui/AutoResizeTextView.kt
@@ -1,12 +1,9 @@
package com.chrhsmt.sisheng.ui
import android.content.Context
-import android.graphics.Paint
-import android.util.TypedValue
import android.util.AttributeSet
import android.widget.TextView
-
/**
* フォントサイズ自動調整TextView
*
@@ -15,8 +12,7 @@ import android.widget.TextView
*/
class AutoResizeTextView : TextView {
- internal var modelText: String? = null
- internal var numberLine = 1
+ internal val info = AutoResizeUtils.AutoResizeInfo()
/**
* コンストラクタ
@@ -30,7 +26,8 @@ class AutoResizeTextView : TextView {
* @param attrs
*/
constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {
- processAttributeSet(attrs)
+ //This method reads the parameters given in the xml file and sets the properties according to it
+ AutoResizeUtils.setModelText(attrs.getAttributeValue(null, "model_text"), info)
}
/**
@@ -38,104 +35,7 @@ class AutoResizeTextView : TextView {
*/
override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) {
super.onLayout(changed, left, top, right, bottom)
- resize()
- }
-
- /**
- * テキストサイズ調整
- */
- private fun resize() {
- /** 最小のテキストサイズ */
- val MIN_TEXT_SIZE = 10f
-
- val viewHeight = this.height // Viewの縦幅
- val viewWidth = this.width // Viewの横幅
-
- // テキストサイズ
- var textSize = textSize
-
- // Paintにテキストサイズ設定
- val paint = Paint()
- paint.textSize = textSize
-
- // テキスト取得
- if (modelText == null) {
- modelText = text.toString()
- }
-
- // テキストの縦幅取得
- var fm = paint.fontMetrics
- var textHeight = Math.abs(fm.top) + Math.abs(fm.descent)
- val lineNum = this.text!!.split("\n".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray().size
-
- // テキストの横幅取得
- var textWidth = paint.measureText(modelText)
-
- // 縦幅と、横幅が収まるまでループ
- while ((viewHeight < (textHeight * lineNum)) or (viewWidth < textWidth)) {
- // 調整しているテキストサイズが、定義している最小サイズ以下か。
- if (MIN_TEXT_SIZE >= textSize) {
- // 最小サイズ以下になる場合は最小サイズ
- textSize = MIN_TEXT_SIZE
- break
- }
-
- // テキストサイズをデクリメント
- textSize--
-
- // Paintにテキストサイズ設定
- paint.textSize = textSize
-
- // テキストの縦幅を再取得
- // 改行を考慮する
- fm = paint.fontMetrics
- textHeight = Math.abs(fm.top) + Math.abs(fm.descent) * numberLine
-
- // テキストの横幅を再取得
- textWidth = paint.measureText(modelText)
- }
-
- // テキストサイズ設定
- setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize)
+ AutoResizeUtils.resize(this, info)
}
-
- /**
- * 基準となる改行を含む文字列の最も文字列が大きい部分がViewの枠に収まるようにフォントサイズを調整する.(改行には適応してない模様)
- * 文字列に改行を含まない場合、それをそのまま基準にする.
- * 表示される文字列の最大数がわかっている時に有効利用できる.
- * @param modelText
- */
- protected fun setModelText(modelText: String?) {
- if (modelText != null) {
- val str = modelText.split("\n".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
- numberLine = str.size
- var includeLinefeed = false
- if (str.size > 1) includeLinefeed = true
-
- if (includeLinefeed) {
- var a: String? = null // 一時変数
- var model: String? = null
- for (i in str.indices) {
- if (a == null)
- a = str[i]
- else {
- // 2周目以降
- if (a.length >= str[i].length)
- model = a
- else
- model = str[i]
- }
- }
- this.modelText = model
- } else {
- this.modelText = modelText
- }
- }
- }
-
- protected fun processAttributeSet(attrs: AttributeSet) {
- //This method reads the parameters given in the xml file and sets the properties according to it
- this.setModelText(attrs.getAttributeValue(null, "model_text"))
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/chrhsmt/sisheng/ui/AutoResizeUtils.kt b/app/src/main/java/com/chrhsmt/sisheng/ui/AutoResizeUtils.kt
new file mode 100644
index 0000000..2f5f2c2
--- /dev/null
+++ b/app/src/main/java/com/chrhsmt/sisheng/ui/AutoResizeUtils.kt
@@ -0,0 +1,112 @@
+package com.chrhsmt.sisheng.ui
+
+import android.content.Context
+import android.graphics.Paint
+import android.util.AttributeSet
+import android.util.TypedValue
+import android.widget.TextView
+
+/**
+ * フォントサイズ自動調整TextView
+ *
+ * ソースコードは以下から借用
+ * http://aillicepray.blogspot.jp/2015/02/textview.html
+ */
+object AutoResizeUtils {
+ class AutoResizeInfo {
+ internal var modelText: String? = null
+ internal var numberLine = 1
+ }
+ /**
+ * テキストサイズ調整
+ */
+ fun resize(view: TextView, info: AutoResizeInfo) {
+ /** 最小のテキストサイズ */
+ val MIN_TEXT_SIZE = 10f
+
+ val viewHeight = view.height // Viewの縦幅
+ val viewWidth = view.width // Viewの横幅
+
+ // テキストサイズ
+ var textSize = view.textSize
+
+ // Paintにテキストサイズ設定
+ val paint = Paint()
+ paint.textSize = textSize
+
+ // テキスト取得
+ if (info.modelText == null) {
+ info.modelText = view.text.toString()
+ }
+
+ // テキストの縦幅取得
+ var fm = paint.fontMetrics
+ var textHeight = Math.abs(fm.top) + Math.abs(fm.descent)
+ val lineNum = view.text!!.split("\n".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray().size
+
+ // テキストの横幅取得
+ var textWidth = paint.measureText(info.modelText)
+
+ // 縦幅と、横幅が収まるまでループ
+ while ((viewHeight < (textHeight * lineNum)) or (viewWidth < textWidth)) {
+ // 調整しているテキストサイズが、定義している最小サイズ以下か。
+ if (MIN_TEXT_SIZE >= textSize) {
+ // 最小サイズ以下になる場合は最小サイズ
+ textSize = MIN_TEXT_SIZE
+ break
+ }
+
+ // テキストサイズをデクリメント
+ textSize--
+
+ // Paintにテキストサイズ設定
+ paint.textSize = textSize
+
+ // テキストの縦幅を再取得
+ // 改行を考慮する
+ fm = paint.fontMetrics
+ textHeight = Math.abs(fm.top) + Math.abs(fm.descent) * info.numberLine
+
+ // テキストの横幅を再取得
+ textWidth = paint.measureText(info.modelText)
+ }
+
+ // テキストサイズ設定
+ view.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize)
+ }
+
+
+ /**
+ * 基準となる改行を含む文字列の最も文字列が大きい部分がViewの枠に収まるようにフォントサイズを調整する.(改行には適応してない模様)
+ * 文字列に改行を含まない場合、それをそのまま基準にする.
+ * 表示される文字列の最大数がわかっている時に有効利用できる.
+ * @param modelText
+ */
+ fun setModelText(modelText: String?, info: AutoResizeInfo) {
+ if (modelText != null) {
+ val str = modelText.split("\n".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
+ info.numberLine = str.size
+ var includeLinefeed = false
+ if (str.size > 1) includeLinefeed = true
+
+ if (includeLinefeed) {
+ var a: String? = null // 一時変数
+ var model: String? = null
+ for (i in str.indices) {
+ if (a == null)
+ a = str[i]
+ else {
+ // 2周目以降
+ if (a.length >= str[i].length)
+ model = a
+ else
+ model = str[i]
+ }
+ }
+ info.modelText = model
+ } else {
+ info.modelText = modelText
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_first_screen.xml b/app/src/main/res/layout/activity_first_screen.xml
index 69d4a68..80e5982 100644
--- a/app/src/main/res/layout/activity_first_screen.xml
+++ b/app/src/main/res/layout/activity_first_screen.xml
@@ -47,7 +47,7 @@
tools:layout_editor_absoluteX="0dp"
tools:layout_editor_absoluteY="0dp" />
-
-
-
-
-
-
-
-