diff --git a/.idea/checkstyle-idea.xml b/.idea/checkstyle-idea.xml
new file mode 100644
index 0000000..be09221
--- /dev/null
+++ b/.idea/checkstyle-idea.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
index 01fb37a..59ad2ed 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -3,6 +3,8 @@
+
+
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..9726f06 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice01DrawTextView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice01DrawTextView.java
@@ -33,5 +33,6 @@ protected void onDraw(Canvas canvas) {
// 使用 drawText() 来绘制文字
// 文字坐标: (50, 100)
+ canvas.drawText("Hello HenCoder", 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..4adf5c8 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice02StaticLayoutView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice02StaticLayoutView.java
@@ -4,6 +4,8 @@
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;
@@ -34,6 +36,10 @@ protected void onDraw(Canvas canvas) {
// 使用 StaticLayout 代替 Canvas.drawText() 来绘制文字,
// 以绘制出带有换行的文字
- canvas.drawText(text, 50, 100, textPaint);
+ StaticLayout staticLayout = new StaticLayout(text, textPaint, 600,
+ Layout.Alignment.ALIGN_NORMAL, 1, 0, true);
+ canvas.save();
+ canvas.translate(50, 100);
+ staticLayout.draw(canvas);
}
}
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..24f0419 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice03SetTextSizeView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice03SetTextSizeView.java
@@ -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..202d0d8 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice04SetTypefaceView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice04SetTypefaceView.java
@@ -40,8 +40,10 @@ protected void onDraw(Canvas canvas) {
// 第一处:填入 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..8c86cf7 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice05SetFakeBoldTextView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice05SetFakeBoldTextView.java
@@ -33,6 +33,7 @@ public Practice05SetFakeBoldTextView(Context context, @Nullable AttributeSet att
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
+ paint.setFakeBoldText(true);
canvas.drawText(text, 50, 100, paint);
}
}
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..8aad3a8 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice06SetStrikeThruTextView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice06SetStrikeThruTextView.java
@@ -33,6 +33,7 @@ public Practice06SetStrikeThruTextView(Context context, @Nullable AttributeSet a
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
+ paint.setStrikeThruText(true);
canvas.drawText(text, 50, 100, paint);
}
}
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..7aa7c2d 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice07SetUnderlineTextView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice07SetUnderlineTextView.java
@@ -33,6 +33,7 @@ public Practice07SetUnderlineTextView(Context context, @Nullable AttributeSet at
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
+ paint.setUnderlineText(true);
canvas.drawText(text, 50, 100, paint);
}
}
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..4039886 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice08SetTextSkewXView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice08SetTextSkewXView.java
@@ -33,6 +33,7 @@ public Practice08SetTextSkewXView(Context context, @Nullable AttributeSet attrs,
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
+ paint.setTextSkewX(-0.5f);
canvas.drawText(text, 50, 100, paint);
}
}
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..f00d3a3 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice09SetTextScaleXView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice09SetTextScaleXView.java
@@ -33,6 +33,7 @@ public Practice09SetTextScaleXView(Context context, @Nullable AttributeSet attrs
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
+ paint.setTextScaleX(1.2f);
canvas.drawText(text, 50, 100, paint);
}
}
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..8aa3719 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice11GetFontSpacingView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice11GetFontSpacingView.java
@@ -32,7 +32,7 @@ protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// 使用 Paint.getFontSpacing() 来获取推荐的行距
- float spacing = 20;
+ float spacing = paint.getFontSpacing();
canvas.drawText(text, 50, 100, 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..163a36c 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,7 @@ 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);
+ canvas.drawText(text2, 50 + paint1.measureText(text1), 200, paint2);
+ canvas.drawText(text3, 50 + paint1.measureText(text1) + paint2.measureText(text2), 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..d38ce8c 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;
@@ -44,17 +45,28 @@ protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawRect(50, top, getWidth() - 50, bottom, paint1);
-
// 使用 Paint.getTextBounds() 计算出文字的显示区域
// 然后计算出文字的绘制位置,从而让文字上下居中
// 这种居中算法的优点是,可以让文字精准地居中,分毫不差
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);
+ Rect rect1 = new Rect();
+ paint2.getTextBounds(text1, 0, text1.length(), rect1);
+ canvas.drawText(text1, 100, middle - (rect1.top + rect1.bottom) / 2, paint2);
+ Rect rect2 = new Rect();
+ paint2.getTextBounds(text2, 0, text2.length(), rect2);
+ canvas.drawText(text2, 200, middle - (rect2.top + rect2.bottom) / 2, paint2);
+ Rect rect3 = new Rect();
+ paint2.getTextBounds(text3, 0, text3.length(), rect3);
+ canvas.drawText(text3, 300, middle - (rect3.top + rect3.bottom) / 2, paint2);
+ Rect rect4 = new Rect();
+ paint2.getTextBounds(text4, 0, text4.length(), rect4);
+ canvas.drawText(text4, 400, middle - (rect4.top + rect4.bottom) / 2, paint2);
+ Rect rect5 = new Rect();
+ paint2.getTextBounds(text5, 0, text5.length(), rect5);
+ canvas.drawText(text5, 500, middle - (rect5.top + rect5.bottom) / 2, paint2);
+ Rect rect6 = new Rect();
+ paint2.getTextBounds(text6, 0, text6.length(), rect6);
+ canvas.drawText(text6, 600, middle - (rect6.top + rect6.bottom) / 2, 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..7c2e378 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice14GetFontMetricsView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw3/practice/Practice14GetFontMetricsView.java
@@ -45,11 +45,12 @@ protected void onDraw(Canvas canvas) {
// 这种居中算法的优点是,可以让不同的文字的 baseline 对齐
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);
+ Paint.FontMetrics fontMetrics = paint2.getFontMetrics();
+ canvas.drawText(texts[0], 100, middle - (fontMetrics.ascent + fontMetrics.descent) / 2, paint2);
+ canvas.drawText(texts[1], 200, middle - (fontMetrics.ascent + fontMetrics.descent) / 2, paint2);
+ canvas.drawText(texts[2], 300, middle - (fontMetrics.ascent + fontMetrics.descent) / 2, paint2);
+ canvas.drawText(texts[3], 400, middle - (fontMetrics.ascent + fontMetrics.descent) / 2, paint2);
+ canvas.drawText(texts[4], 500, middle - (fontMetrics.ascent + fontMetrics.descent) / 2, paint2);
+ canvas.drawText(texts[5], 600, middle - (fontMetrics.ascent + fontMetrics.descent) / 2, paint2);
}
}