diff --git a/app/build.gradle b/app/build.gradle
index eddfa9f..6137d03 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,13 +1,12 @@
apply plugin: 'com.android.application'
android {
- compileSdkVersion 23
- buildToolsVersion "23.0.1"
+ compileSdkVersion 28
defaultConfig {
applicationId "com.viksaa.autofit.et"
- minSdkVersion 14
- targetSdkVersion 23
+ minSdkVersion 21
+ targetSdkVersion 28
versionCode 1
versionName "1.0"
}
@@ -20,13 +19,9 @@ android {
}
dependencies {
- compile fileTree(dir: 'libs', include: ['*.jar'])
- testCompile 'junit:junit:4.12'
- compile 'com.android.support:appcompat-v7:23.1.0'
- compile 'com.android.support:design:23.1.0'
-
- compile project(":lib")
-
- /* ButterKnife */
- compile 'com.jakewharton:butterknife:7.0.1'
+ implementation project(":lib")
+ testImplementation 'junit:junit:4.12'
+ implementation "androidx.appcompat:appcompat:1.1.0-rc01"
+ implementation "androidx.coordinatorlayout:coordinatorlayout:1.1.0-beta01"
+ implementation "com.google.android.material:material:1.1.0-alpha09"
}
diff --git a/app/src/main/java/com/viksaa/autofit/et/MainActivity.java b/app/src/main/java/com/viksaa/autofit/et/MainActivity.java
index b7c2854..f23594c 100644
--- a/app/src/main/java/com/viksaa/autofit/et/MainActivity.java
+++ b/app/src/main/java/com/viksaa/autofit/et/MainActivity.java
@@ -1,36 +1,51 @@
package com.viksaa.autofit.et;
import android.os.Bundle;
-import android.support.design.widget.CoordinatorLayout;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
+import android.widget.SeekBar;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
+import androidx.coordinatorlayout.widget.CoordinatorLayout;
import com.autofit.et.lib.AutoFitEditText;
import com.autofit.et.lib.AutoFitEditTextUtil;
-import butterknife.Bind;
-import butterknife.ButterKnife;
-
public class MainActivity extends AppCompatActivity {
- @Bind(R.id.toolbar)
- Toolbar mToolbar;
- @Bind(R.id.rET)
- AutoFitEditText mAutoFitEditText;
- @Bind(R.id.root)
- CoordinatorLayout mRootView;
+ private Toolbar mToolbar;
+ private AutoFitEditText mAutoFitEditText;
+ private CoordinatorLayout mRootView;
+ private SeekBar mLetterSpacingSeekBar;
+ private SeekBar mLineSpacingSeekBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
- ButterKnife.bind(this);
setSupportActionBar(mToolbar);
+ mToolbar = findViewById(R.id.toolbar);
+ mAutoFitEditText = findViewById(R.id.rET);
+ mRootView = findViewById(R.id.root);
+ mLetterSpacingSeekBar = findViewById(R.id.letter_spacing_seek_bar);
+ mLineSpacingSeekBar = findViewById(R.id.line_spacing_seek_bar);
initAutoFitEditText();
+ mLineSpacingSeekBar.setOnSeekBarChangeListener(new SimpleOnSeekBarChangeListener() {
+ @Override
+ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
+ mAutoFitEditText.setLineSpacing(progress, 1f);
+ }
+ });
+
+ mLetterSpacingSeekBar.setOnSeekBarChangeListener(new SimpleOnSeekBarChangeListener() {
+ @Override
+ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
+ mAutoFitEditText.setLetterSpacing(progress/100f);
+ }
+ });
}
@@ -41,11 +56,11 @@ public void initAutoFitEditText() {
mAutoFitEditText.setFocusable(true);
mAutoFitEditText.setEnableSizeCache(false);
//might cause crash on some devices
- mAutoFitEditText.setMovementMethod(null);
+// mAutoFitEditText.setMovementMethod(null);
// can be added after layout inflation;
mAutoFitEditText.setMaxHeight(330);
//don't forget to add min text size programmatically
- mAutoFitEditText.setMinTextSize(60f);
+ mAutoFitEditText.setMinTextSize(1f);
AutoFitEditTextUtil.setNormalization(this, mRootView, mAutoFitEditText);
}
@@ -64,4 +79,16 @@ public boolean onOptionsItemSelected(MenuItem item) {
}
return super.onOptionsItemSelected(item);
}
+
+ private static abstract class SimpleOnSeekBarChangeListener implements SeekBar.OnSeekBarChangeListener {
+
+ @Override
+ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { }
+
+ @Override
+ public void onStartTrackingTouch(SeekBar seekBar) { }
+
+ @Override
+ public void onStopTrackingTouch(SeekBar seekBar) { }
+ }
}
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 8b7b51d..8d9f3c6 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -1,5 +1,6 @@
-
-
-
+ android:background="?attr/colorPrimary" />
-
+
-
+
diff --git a/app/src/main/res/layout/content_main.xml b/app/src/main/res/layout/content_main.xml
index afb2b1a..d4dc050 100644
--- a/app/src/main/res/layout/content_main.xml
+++ b/app/src/main/res/layout/content_main.xml
@@ -11,15 +11,13 @@
+ android:layout_height="match_parent"
+ android:layout_above="@id/seek_bars_container">
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values-v21/styles.xml b/app/src/main/res/values-v21/styles.xml
index 65d0c39..89f0ced 100644
--- a/app/src/main/res/values-v21/styles.xml
+++ b/app/src/main/res/values-v21/styles.xml
@@ -1,8 +1,8 @@
>
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 9e2400a..db67bbf 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -3,7 +3,7 @@
#4CAF50
#388E3C
#C8E6C9
- #9E9E9E
+ #3F51B5
#212121
#727272
#FFFFFF
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 0ffe693..c5d9f23 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -3,4 +3,6 @@
Settings
HINT
+ Letter Spacing:
+ Line Spacing:
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index a15a881..4bb6418 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -1,7 +1,7 @@
-
diff --git a/build.gradle b/build.gradle
index be515a8..50765f5 100644
--- a/build.gradle
+++ b/build.gradle
@@ -2,10 +2,11 @@
buildscript {
repositories {
+ google()
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:1.3.0'
+ classpath 'com.android.tools.build:gradle:3.5.0-rc01'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
@@ -14,7 +15,9 @@ buildscript {
allprojects {
repositories {
+ google()
jcenter()
+ mavenCentral()
}
}
diff --git a/gradle.properties b/gradle.properties
index 1d3591c..8b8e206 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,18 +1,20 @@
# Project-wide Gradle settings.
-
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
-
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
-
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
-# Default value: -Xmx10248m -XX:MaxPermSize=256m
-# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
-
+org.gradle.jvmargs=-Xmx1536m
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
-# org.gradle.parallel=true
\ No newline at end of file
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app's APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
+org.gradle.parallel=true
+# Automatically convert third-party libraries to use AndroidX
+android.enableJetifier=true
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 37d1316..d008949 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
diff --git a/lib/build.gradle b/lib/build.gradle
index 8f29548..7656113 100644
--- a/lib/build.gradle
+++ b/lib/build.gradle
@@ -1,12 +1,11 @@
apply plugin: 'com.android.library'
android {
- compileSdkVersion 23
- buildToolsVersion "23.0.1"
+ compileSdkVersion 28
defaultConfig {
- minSdkVersion 14
- targetSdkVersion 23
+ minSdkVersion 21
+ targetSdkVersion 28
versionCode 1
versionName "1.0"
}
@@ -19,7 +18,6 @@ android {
}
dependencies {
- compile fileTree(dir: 'libs', include: ['*.jar'])
- testCompile 'junit:junit:4.12'
- compile 'com.android.support:appcompat-v7:23.1.0'
+ testImplementation 'junit:junit:4.12'
+ implementation "androidx.appcompat:appcompat:1.1.0-rc01"
}
diff --git a/lib/src/main/java/com/autofit/et/lib/AutoFitEditText.java b/lib/src/main/java/com/autofit/et/lib/AutoFitEditText.java
index 514e83d..915c5b8 100644
--- a/lib/src/main/java/com/autofit/et/lib/AutoFitEditText.java
+++ b/lib/src/main/java/com/autofit/et/lib/AutoFitEditText.java
@@ -12,12 +12,13 @@
import android.util.AttributeSet;
import android.util.SparseIntArray;
import android.util.TypedValue;
-import android.widget.EditText;
+
+import androidx.appcompat.widget.AppCompatEditText;
/**
* Created by varsovski on 29-Oct-15.
*/
-public class AutoFitEditText extends EditText {
+public class AutoFitEditText extends AppCompatEditText {
private static final int NO_LINE_LIMIT = -1;
private final RectF _availableSpaceRect = new RectF();
private final SparseIntArray _textCachedSizes = new SparseIntArray();
@@ -72,6 +73,7 @@ public AutoFitEditText(final Context context, final AttributeSet attrs,
public int onTestSize(final int suggestedSize,
final RectF availableSPace) {
paint.setTextSize(suggestedSize);
+ paint.setLetterSpacing(getLetterSpacing());
final String text = getText().toString();
final boolean singleline = getMaxLines() == 1;
if (singleline) {
@@ -172,6 +174,13 @@ public void setLineSpacing(final float add, final float mult) {
super.setLineSpacing(add, mult);
_spacingMult = mult;
_spacingAdd = add;
+ reAdjust();
+ }
+
+ @Override
+ public void setLetterSpacing(float letterSpacing) {
+ super.setLetterSpacing(letterSpacing);
+ reAdjust();
}
/**
@@ -197,8 +206,10 @@ private void adjustTextSize() {
return;
final int startSize = Math.round(_minTextSize);
final int heightLimit = getMeasuredHeight()
- - getCompoundPaddingBottom() - getCompoundPaddingTop();
- _widthLimit = getMeasuredWidth() - getCompoundPaddingLeft()
+ - getCompoundPaddingBottom()
+ - getCompoundPaddingTop();
+ _widthLimit = getMeasuredWidth()
+ - getCompoundPaddingLeft()
- getCompoundPaddingRight();
if (_widthLimit <= 0)
return;