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