diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
new file mode 100644
index 0000000..37bc477
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 aafa319..3436840 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -2,7 +2,7 @@
-
+
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 4751eb7..78c7d35 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.hencoderpracticedraw5"
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/hencoderpracticedraw5/practice/Practice01AfterOnDrawView.java b/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice01AfterOnDrawView.java
index 893d114..20f5edf 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice01AfterOnDrawView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice01AfterOnDrawView.java
@@ -40,13 +40,13 @@ protected void onDraw(Canvas canvas) {
// 由于这期的重点是绘制代码的位置而不是绘制代码本身,所以直接给出绘制代码,你只要解除注释就好
// 爽吧?
- /*Drawable drawable = getDrawable();
+ Drawable drawable = getDrawable();
if (drawable != null) {
canvas.save();
canvas.concat(getImageMatrix());
Rect bounds = drawable.getBounds();
canvas.drawText(getResources().getString(R.string.image_size, bounds.width(), bounds.height()), 20, 40, paint);
canvas.restore();
- }*/
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice02BeforeOnDrawView.java b/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice02BeforeOnDrawView.java
index 26df474..a8c7b3c 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice02BeforeOnDrawView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice02BeforeOnDrawView.java
@@ -32,7 +32,6 @@ public Practice02BeforeOnDrawView(Context context, @Nullable AttributeSet attrs,
@Override
protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
// 把下面的绘制代码移到 super.onDraw() 的上面,就可以让原主体内容盖住你的绘制代码了
// (或者你也可以把 super.onDraw() 移到这段代码的下面)
@@ -47,5 +46,8 @@ protected void onDraw(Canvas canvas) {
bounds.top = layout.getLineTop(layout.getLineCount() - 3);
bounds.bottom = layout.getLineBottom(layout.getLineCount() - 3);
canvas.drawRect(bounds, paint);
+
+ super.onDraw(canvas);
+
}
}
diff --git a/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice03OnDrawLayout.java b/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice03OnDrawLayout.java
index 8edb69c..f108977 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice03OnDrawLayout.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice03OnDrawLayout.java
@@ -26,6 +26,7 @@ public Practice03OnDrawLayout(Context context, @Nullable AttributeSet attrs, int
{
// 在这里插入 setWillNotDraw(false) 以启用完整的绘制流程
+ setWillNotDraw(false);
}
@Override
diff --git a/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice04DispatchDrawLayout.java b/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice04DispatchDrawLayout.java
index 377954d..1a49a52 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice04DispatchDrawLayout.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice04DispatchDrawLayout.java
@@ -32,7 +32,11 @@ public Practice04DispatchDrawLayout(Context context, @Nullable AttributeSet attr
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
+ }
+ @Override
+ protected void dispatchDraw(Canvas canvas) {
+ super.dispatchDraw(canvas);
pattern.draw(canvas);
}
diff --git a/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice05AfterOnDrawForegroundView.java b/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice05AfterOnDrawForegroundView.java
index c5984dd..1245032 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice05AfterOnDrawForegroundView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice05AfterOnDrawForegroundView.java
@@ -4,6 +4,7 @@
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
+import android.graphics.Path;
import android.support.annotation.Nullable;
import android.support.v7.widget.AppCompatImageView;
import android.util.AttributeSet;
@@ -33,9 +34,19 @@ public void onDrawForeground(Canvas canvas) {
// 在 super.onDrawForeground() 的下方插入绘制代码,让绘制内容盖住前景
// 由于这期的重点是绘制代码的位置而不是绘制代码本身,所以直接给出绘制代码,你只要解除注释就好
- /*paint.setColor(Color.parseColor("#f44336"));
- canvas.drawRect(0, 40, 200, 120, paint);
+ paint.setColor(Color.parseColor("#FFf44336"));
+ Path path = new Path();
+ path.lineTo(200, 0);
+ path.lineTo(0, 200);
+ path.close();
+ canvas.drawPath(path, paint);
+
+ path.reset();
+ path.moveTo(0, 180);
+ path.lineTo(180, 0);
paint.setColor(Color.WHITE);
- canvas.drawText("New", 20, 100, paint);*/
+ paint.setTextAlign(Paint.Align.CENTER);
+ canvas.drawTextOnPath("New", path, 0, -20, paint);
+
}
}
diff --git a/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice06BeforeOnDrawForegroundView.java b/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice06BeforeOnDrawForegroundView.java
index 2077a29..2170b5e 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice06BeforeOnDrawForegroundView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice06BeforeOnDrawForegroundView.java
@@ -4,6 +4,7 @@
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
+import android.graphics.Path;
import android.support.annotation.Nullable;
import android.support.v7.widget.AppCompatImageView;
import android.util.AttributeSet;
@@ -31,10 +32,19 @@ public Practice06BeforeOnDrawForegroundView(Context context, @Nullable Attribute
public void onDrawForeground(Canvas canvas) {
// 在 super.onDrawForeground() 的上方插入绘制代码,让绘制内容被前景盖住
// 由于这期的重点是绘制代码的位置而不是绘制代码本身,所以直接给出绘制代码,你只要解除注释就好
- /*paint.setColor(Color.parseColor("#f44336"));
- canvas.drawRect(0, 40, 200, 120, paint);
+ paint.setColor(Color.parseColor("#FFf44336"));
+ Path path = new Path();
+ path.lineTo(200, 0);
+ path.lineTo(0, 200);
+ path.close();
+ canvas.drawPath(path, paint);
+
+ path.reset();
+ path.moveTo(0, 180);
+ path.lineTo(180, 0);
paint.setColor(Color.WHITE);
- canvas.drawText("New", 20, 100, paint);*/
+ paint.setTextAlign(Paint.Align.CENTER);
+ canvas.drawTextOnPath("New", path, 0, -20, paint);
super.onDrawForeground(canvas);
}
diff --git a/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice07AfterDrawView.java b/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice07AfterDrawView.java
index 97aa979..56405f6 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice07AfterDrawView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice07AfterDrawView.java
@@ -4,6 +4,7 @@
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
+import android.graphics.Path;
import android.support.annotation.Nullable;
import android.support.v7.widget.AppCompatImageView;
import android.util.AttributeSet;
@@ -33,9 +34,19 @@ public void draw(Canvas canvas) {
// 在 super.draw() 的下方插入绘制代码,让绘制内容盖住其他所有
// 由于这期的重点是绘制代码的位置而不是绘制代码本身,所以直接给出绘制代码,你只要解除注释就好
- /*paint.setColor(Color.parseColor("#f44336"));
- canvas.drawRect(0, 40, 200, 120, paint);
+ paint.setColor(Color.parseColor("#FF23ADE5"));
+ Path path = new Path();
+ path.moveTo(getWidth() - 200, 0);
+ path.lineTo(getWidth(), 0);
+ path.lineTo(getWidth(), 200);
+ path.close();
+ canvas.drawPath(path, paint);
+
+ path.reset();
+ path.moveTo(getWidth() - 180, 0);
+ path.lineTo(getWidth(), 180);
paint.setColor(Color.WHITE);
- canvas.drawText("New", 20, 100, paint);*/
+ paint.setTextAlign(Paint.Align.CENTER);
+ canvas.drawTextOnPath("New", path, 0, -20, paint);
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice08BeforeDrawView.java b/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice08BeforeDrawView.java
index bae9f24..de688d1 100644
--- a/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice08BeforeDrawView.java
+++ b/app/src/main/java/com/hencoder/hencoderpracticedraw5/practice/Practice08BeforeDrawView.java
@@ -25,7 +25,7 @@ public Practice08BeforeDrawView(Context context, @Nullable AttributeSet attrs, i
public void draw(Canvas canvas) {
// 在 super.draw() 的上方插入绘制代码,让绘制内容被其他所有内容盖住
// 由于这期的重点是绘制代码的位置而不是绘制代码本身,所以直接给出绘制代码,你只要解除注释就好
-// canvas.drawColor(Color.parseColor("#66BB6A")); // 涂上绿色
+ canvas.drawColor(Color.parseColor("#66BB6A")); // 涂上绿色
super.draw(canvas);
}
diff --git a/app/src/main/res/layout/practice_on_draw_layout.xml b/app/src/main/res/layout/practice_on_draw_layout.xml
index c506b7c..0419a6e 100644
--- a/app/src/main/res/layout/practice_on_draw_layout.xml
+++ b/app/src/main/res/layout/practice_on_draw_layout.xml
@@ -6,7 +6,14 @@
+
+
\ No newline at end of file
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