diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
new file mode 100644
index 0000000..cc9e5a4
Binary files /dev/null and b/.idea/caches/build_file_checksums.ser differ
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
new file mode 100644
index 0000000..30aa626
--- /dev/null
+++ b/.idea/codeStyles/Project.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
deleted file mode 100644
index 1f2af51..0000000
--- a/.idea/compiler.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml
deleted file mode 100644
index e7bedf3..0000000
--- a/.idea/copyright/profiles_settings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/.idea/markdown-navigator.xml b/.idea/markdown-navigator.xml
deleted file mode 100644
index 3efe9d6..0000000
--- a/.idea/markdown-navigator.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/markdown-navigator/profiles_settings.xml b/.idea/markdown-navigator/profiles_settings.xml
deleted file mode 100644
index 57927c5..0000000
--- a/.idea/markdown-navigator/profiles_settings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 4716600..dc34569 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,18 +1,16 @@
-
-
-
@@ -27,36 +25,10 @@
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
- 1.8
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
index 01fb37a..1e82b42 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -2,7 +2,7 @@
-
+
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index 94a25f7..35eb1dd 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 5756266..7911768 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,8 +1,8 @@
apply plugin: 'com.android.application'
android {
- compileSdkVersion 25
- buildToolsVersion "25.0.3"
+ compileSdkVersion 27
+ buildToolsVersion "27.0.3"
defaultConfig {
applicationId "com.hencoder.hencoderpracticedraw3"
minSdkVersion 18
@@ -20,13 +20,13 @@ android {
}
dependencies {
- compile fileTree(dir: 'libs', include: ['*.jar'])
- androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
- compile 'com.android.support:appcompat-v7:25.3.1'
- compile 'com.android.support.constraint:constraint-layout:1.0.2'
- compile 'com.android.support:support-core-ui:25.3.1'
- compile 'com.android.support:design:25.3.1'
- testCompile 'junit:junit:4.12'
+ implementation 'com.android.support:appcompat-v7:27.1.0'
+ implementation 'com.android.support.constraint:constraint-layout:1.0.2'
+ implementation 'com.android.support:support-core-ui:27.1.0'
+ implementation 'com.android.support:design:27.1.0'
+ testImplementation 'junit:junit:4.12'
}
diff --git a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice01DrawTextView.java b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice01DrawTextView.java
index c74f5f6..e5c78cd 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice01DrawTextView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice01DrawTextView.java
@@ -9,7 +9,7 @@
public class Practice01DrawTextView extends View {
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
- String text = "Hello HenCoder";
+ String text = "Hello TinyCoder";
public Practice01DrawTextView(Context context) {
super(context);
@@ -33,5 +33,6 @@ protected void onDraw(Canvas canvas) {
// 使用 drawText() 来绘制文字
// 文字坐标: (50, 100)
+ canvas.drawText(text,0,text.length(),50,100,paint);
}
}
diff --git a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice02StaticLayoutView.java b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice02StaticLayoutView.java
index 0ea2ac0..65d2324 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice02StaticLayoutView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice02StaticLayoutView.java
@@ -4,13 +4,15 @@
import android.graphics.Canvas;
import android.graphics.Paint;
import android.support.annotation.Nullable;
+import android.text.Layout;
+import android.text.StaticLayout;
import android.text.TextPaint;
import android.util.AttributeSet;
import android.view.View;
public class Practice02StaticLayoutView extends View {
TextPaint textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG);
- String text = "Hello\nHenCoder";
+ String text = "Hello\nTinyCoder";
public Practice02StaticLayoutView(Context context) {
super(context);
@@ -32,8 +34,12 @@ public Practice02StaticLayoutView(Context context, @Nullable AttributeSet attrs,
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
+ //canvas.drawText(text, 50, 100, textPaint);
// 使用 StaticLayout 代替 Canvas.drawText() 来绘制文字,
// 以绘制出带有换行的文字
- canvas.drawText(text, 50, 100, textPaint);
+ canvas.save();
+ StaticLayout staticLayout = new StaticLayout(text,textPaint,getWidth(), Layout.Alignment.ALIGN_CENTER,1,0,true);
+ staticLayout.draw(canvas);
+ canvas.restore();
}
}
diff --git a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice03SetTextSizeView.java b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice03SetTextSizeView.java
index 27b93d7..b787bca 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice03SetTextSizeView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice03SetTextSizeView.java
@@ -9,7 +9,7 @@
public class Practice03SetTextSizeView extends View {
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
- String text = "Hello HenCoder";
+ String text = "Hello TinyCoder";
public Practice03SetTextSizeView(Context context) {
super(context);
@@ -32,18 +32,22 @@ protected void onDraw(Canvas canvas) {
// 使用 paint.setTextSize() 来设置不同大小的文字
// 第一处:文字大小 16
+ paint.setTextSize(16);
canvas.drawText(text, 50, y, paint);
y += 30;
// 第一处:文字大小 24
+ paint.setTextSize(24);
canvas.drawText(text, 50, y, paint);
y += 55;
// 第一处:文字大小 48
+ paint.setTextSize(48);
canvas.drawText(text, 50, y, paint);
y += 80;
// 第一处:文字大小 72
+ paint.setTextSize(72);
canvas.drawText(text, 50, y, paint);
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice04SetTypefaceView.java b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice04SetTypefaceView.java
index 9b499f6..92fb269 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice04SetTypefaceView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice04SetTypefaceView.java
@@ -10,7 +10,7 @@
public class Practice04SetTypefaceView extends View {
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
- String text = "Hello HenCoder";
+ String text = "Hello TinyCoder";
Typeface typeface;
public Practice04SetTypefaceView(Context context) {
@@ -38,10 +38,13 @@ protected void onDraw(Canvas canvas) {
// 使用 Paint.setTypeface() 来设置不同的字体
// 第一处:填入 null 来设置默认字体
+ paint.setTypeface(null);
canvas.drawText(text, 50, 100, paint);
// 第二处:填入 Typeface.SERIF 来设置衬线字体(宋体)
+ paint.setTypeface(Typeface.SERIF);
canvas.drawText(text, 50, 200, paint);
// 第三处:填入 typeface 对象来使用 assets 目录下的 "Satisfy-Regular.ttf" 文件
+ paint.setTypeface(Typeface.createFromAsset(getContext().getAssets(),"Satisfy-Regular.ttf"));
canvas.drawText(text, 50, 300, paint);
}
}
diff --git a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice05SetFakeBoldTextView.java b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice05SetFakeBoldTextView.java
index 944678e..12e4540 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice05SetFakeBoldTextView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice05SetFakeBoldTextView.java
@@ -27,6 +27,7 @@ public Practice05SetFakeBoldTextView(Context context, @Nullable AttributeSet att
paint.setTextSize(60);
// 使用 Paint.setFakeBoldText() 来加粗文字
+ paint.setFakeBoldText(true);
}
@Override
diff --git a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice06SetStrikeThruTextView.java b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice06SetStrikeThruTextView.java
index 48a6297..48ebfc3 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice06SetStrikeThruTextView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice06SetStrikeThruTextView.java
@@ -27,6 +27,7 @@ public Practice06SetStrikeThruTextView(Context context, @Nullable AttributeSet a
paint.setTextSize(60);
// 使用 Paint.setStrikeThruText() 来设置删除线
+ paint.setStrikeThruText(true);
}
@Override
diff --git a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice07SetUnderlineTextView.java b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice07SetUnderlineTextView.java
index 003ec6c..07f7373 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice07SetUnderlineTextView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice07SetUnderlineTextView.java
@@ -27,6 +27,7 @@ public Practice07SetUnderlineTextView(Context context, @Nullable AttributeSet at
paint.setTextSize(60);
// 使用 Paint.setUnderlineText() 来设置下划线
+ paint.setUnderlineText(true);
}
@Override
diff --git a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice08SetTextSkewXView.java b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice08SetTextSkewXView.java
index c0a398c..bb6b5b0 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice08SetTextSkewXView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice08SetTextSkewXView.java
@@ -27,6 +27,7 @@ public Practice08SetTextSkewXView(Context context, @Nullable AttributeSet attrs,
paint.setTextSize(60);
// 使用 Paint.setTextSkewX() 来让文字倾斜
+ paint.setTextSkewX(0.3f);
}
@Override
diff --git a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice09SetTextScaleXView.java b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice09SetTextScaleXView.java
index e0da491..b3e3e9b 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice09SetTextScaleXView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice09SetTextScaleXView.java
@@ -27,6 +27,7 @@ public Practice09SetTextScaleXView(Context context, @Nullable AttributeSet attrs
paint.setTextSize(60);
// 使用 Paint.setTextScaleX() 来改变文字宽度
+ paint.setTextScaleX(1.6f);
}
@Override
diff --git a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice10SetTextAlignView.java b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice10SetTextAlignView.java
index 6bbb7ac..eb80d4a 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice10SetTextAlignView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice10SetTextAlignView.java
@@ -36,12 +36,15 @@ protected void onDraw(Canvas canvas) {
// 使用 Paint.setTextAlign() 来调整文字对齐方式
// 第一处:使用 Paint.Align.LEFT
+ paint.setTextAlign(Paint.Align.LEFT);
canvas.drawText(text, getWidth() / 2, 100, paint);
// 第二处:使用 Paint.Align.CENTER
+ paint.setTextAlign(Paint.Align.CENTER);
canvas.drawText(text, getWidth() / 2, 200, paint);
// 第三处:使用 Paint.Align.RIGHT
+ paint.setTextAlign(Paint.Align.RIGHT);
canvas.drawText(text, getWidth() / 2, 300, paint);
}
}
diff --git a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice11GetFontSpacingView.java b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice11GetFontSpacingView.java
index b5723f1..1f58ce8 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice11GetFontSpacingView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice11GetFontSpacingView.java
@@ -9,7 +9,7 @@
public class Practice11GetFontSpacingView extends View {
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
- String text = "Hello HenCoder";
+ String text = "Hello TinyCoder";
public Practice11GetFontSpacingView(Context context) {
super(context);
@@ -36,8 +36,10 @@ protected void onDraw(Canvas canvas) {
canvas.drawText(text, 50, 100, paint);
+ spacing = paint.getFontSpacing();
canvas.drawText(text, 50, 100 + spacing, paint);
+ spacing = paint.getFontSpacing();
canvas.drawText(text, 50, 100 + spacing * 2, paint);
}
}
diff --git a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice12MeasureTextView.java b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice12MeasureTextView.java
index d3b271a..e5b7da6 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice12MeasureTextView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice12MeasureTextView.java
@@ -40,7 +40,9 @@ protected void onDraw(Canvas canvas) {
// 使用 Paint.measureText 测量出文字宽度,让文字可以相邻绘制
canvas.drawText(text1, 50, 200, paint1);
- canvas.drawText(text2, 50 + 100, 200, paint2);
- canvas.drawText(text3, 50 + 200, 200, paint1);
+ float off1 = paint1.measureText(text1);
+ canvas.drawText(text2, 50 + off1, 200, paint2);
+ float off2 = paint2.measureText(text2);
+ canvas.drawText(text3, 50 + off1 + off2, 200, paint1);
}
}
diff --git a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice13GetTextBoundsView.java b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice13GetTextBoundsView.java
index f88cac7..cc01be7 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice13GetTextBoundsView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice13GetTextBoundsView.java
@@ -4,6 +4,7 @@
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
+import android.graphics.Rect;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;
@@ -13,8 +14,8 @@ public class Practice13GetTextBoundsView extends View {
Paint paint2 = new Paint(Paint.ANTI_ALIAS_FLAG);
String text1 = "A";
String text2 = "a";
- String text3 = "J";
- String text4 = "j";
+ String text3 = "G";
+ String text4 = "g";
String text5 = "Â";
String text6 = "â";
int top = 200;
@@ -48,13 +49,25 @@ protected void onDraw(Canvas canvas) {
// 使用 Paint.getTextBounds() 计算出文字的显示区域
// 然后计算出文字的绘制位置,从而让文字上下居中
// 这种居中算法的优点是,可以让文字精准地居中,分毫不差
-
+ Rect bound = new Rect();
int middle = (top + bottom) / 2;
- canvas.drawText(text1, 100, middle, paint2);
- canvas.drawText(text2, 200, middle, paint2);
- canvas.drawText(text3, 300, middle, paint2);
- canvas.drawText(text4, 400, middle, paint2);
- canvas.drawText(text5, 500, middle, paint2);
- canvas.drawText(text6, 600, middle, paint2);
+ paint2.getTextBounds(text1, 0, 1, bound);
+ int middleOff1 = -(bound.top + bound.bottom) / 2;
+ canvas.drawText(text1, 100, middle + middleOff1, paint2);
+ paint2.getTextBounds(text2, 0, 1, bound);
+ int middleOff2 = -(bound.top + bound.bottom) / 2;
+ canvas.drawText(text2, 200, middle + middleOff2, paint2);
+ paint2.getTextBounds(text3, 0, 1, bound);
+ int middleOff3 = -(bound.top + bound.bottom) / 2;
+ canvas.drawText(text3, 300, middle + middleOff3, paint2);
+ paint2.getTextBounds(text4, 0, 1, bound);
+ int middleOff4 = -(bound.top + bound.bottom) / 2;
+ canvas.drawText(text4, 400, middle + middleOff4, paint2);
+ paint2.getTextBounds(text5, 0, 1, bound);
+ int middleOff5 = -(bound.top + bound.bottom) / 2;
+ canvas.drawText(text5, 500, middle + middleOff5, paint2);
+ paint2.getTextBounds(text6, 0, 1, bound);
+ int middleOff6 = -(bound.top + bound.bottom) / 2;
+ canvas.drawText(text6, 600, middle + middleOff6, paint2);
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice14GetFontMetricsView.java b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice14GetFontMetricsView.java
index 7d948c2..18ba89a 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice14GetFontMetricsView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice14GetFontMetricsView.java
@@ -44,12 +44,15 @@ protected void onDraw(Canvas canvas) {
// 然后计算出文字的绘制位置,从而让文字上下居中
// 这种居中算法的优点是,可以让不同的文字的 baseline 对齐
+ Paint.FontMetrics metrics = new Paint.FontMetrics();
+ paint2.getFontMetrics(metrics);
+ int off = (int) - (metrics.ascent + metrics.descent) / 2;
int middle = (top + bottom) / 2;
- canvas.drawText(texts[0], 100, middle, paint2);
- canvas.drawText(texts[1], 200, middle, paint2);
- canvas.drawText(texts[2], 300, middle, paint2);
- canvas.drawText(texts[3], 400, middle, paint2);
- canvas.drawText(texts[4], 500, middle, paint2);
- canvas.drawText(texts[5], 600, middle, paint2);
+ canvas.drawText(texts[0], 100, middle + off, paint2);
+ canvas.drawText(texts[1], 200, middle + off, paint2);
+ canvas.drawText(texts[2], 300, middle + off, paint2);
+ canvas.drawText(texts[3], 400, middle + off, paint2);
+ canvas.drawText(texts[4], 500, middle + off, paint2);
+ canvas.drawText(texts[5], 600, middle + off, paint2);
}
}
diff --git a/build.gradle b/build.gradle
index c2eea8e..7a9f87a 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,7 +5,7 @@ buildscript {
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:2.3.3'
+ classpath 'com.android.tools.build:gradle:3.1.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
diff --git a/gradle.properties b/gradle.properties
index aac7c9b..e602bf4 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -9,7 +9,7 @@
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
-org.gradle.jvmargs=-Xmx1536m
+#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
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 03d462a..784d864 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-3.3-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip