Skip to content

Commit f9427a8

Browse files
Merge pull request #1 from yangyiRunning/8.16
2017年08月16日16:27:41
2 parents a5d71bb + f892092 commit f9427a8

19 files changed

+184
-26
lines changed

.gitignore

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
*.iml
22
.gradle
33
/local.properties
4-
/.idea/workspace.xml
5-
/.idea/libraries
64
.DS_Store
5+
/.idea
76
/build
87
/captures
98
.externalNativeBuild

.idea/misc.xml

Lines changed: 1 addition & 14 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/modules.xml

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/src/main/java/com/hencoder/hencoderpracticedraw4/practice/Practice01ClipRectView.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ protected void onDraw(Canvas canvas) {
3838
int left = (getWidth() - bitmap.getWidth()) / 2;
3939
int top = (getHeight() - bitmap.getHeight()) / 2;
4040

41+
canvas.save();
42+
canvas.clipRect(left + 50, top + 50, left + 250, top + 210);
4143
canvas.drawBitmap(bitmap, left, top, paint);
44+
canvas.restore();
4245
}
4346
}

app/src/main/java/com/hencoder/hencoderpracticedraw4/practice/Practice02ClipPathView.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public class Practice02ClipPathView extends View {
1818
Bitmap bitmap;
1919
Point point1 = new Point(200, 200);
2020
Point point2 = new Point(600, 200);
21+
Path path1, path2;
2122

2223
public Practice02ClipPathView(Context context) {
2324
super(context);
@@ -33,13 +34,25 @@ public Practice02ClipPathView(Context context, @Nullable AttributeSet attrs, int
3334

3435
{
3536
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.maps);
37+
path1 = new Path();
38+
path1.addCircle(point1.x + 200, point1.y + 200, 100, Path.Direction.CW);
39+
path2 = new Path();
40+
path2.setFillType(Path.FillType.INVERSE_EVEN_ODD);
41+
path2.addCircle(point2.x + 200, point2.y + 200, 100, Path.Direction.CCW);
3642
}
3743

3844
@Override
3945
protected void onDraw(Canvas canvas) {
4046
super.onDraw(canvas);
4147

48+
canvas.save();
49+
canvas.clipPath(path1);
4250
canvas.drawBitmap(bitmap, point1.x, point1.y, paint);
51+
canvas.restore();
52+
53+
canvas.save();
54+
canvas.clipPath(path2);
4355
canvas.drawBitmap(bitmap, point2.x, point2.y, paint);
56+
canvas.restore();
4457
}
4558
}

app/src/main/java/com/hencoder/hencoderpracticedraw4/practice/Practice03TranslateView.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,14 @@ public Practice03TranslateView(Context context, @Nullable AttributeSet attrs, in
3838
protected void onDraw(Canvas canvas) {
3939
super.onDraw(canvas);
4040

41+
canvas.save();
42+
canvas.translate(100, -100);
4143
canvas.drawBitmap(bitmap, point1.x, point1.y, paint);
44+
canvas.restore();
45+
46+
canvas.save();
47+
canvas.translate(200, 100);
4248
canvas.drawBitmap(bitmap, point2.x, point2.y, paint);
49+
canvas.restore();
4350
}
4451
}

app/src/main/java/com/hencoder/hencoderpracticedraw4/practice/Practice04ScaleView.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,14 @@ public Practice04ScaleView(Context context, @Nullable AttributeSet attrs, int de
3838
protected void onDraw(Canvas canvas) {
3939
super.onDraw(canvas);
4040

41+
canvas.save();
42+
canvas.scale(0.5f, 1.5f);
4143
canvas.drawBitmap(bitmap, point1.x, point1.y, paint);
44+
canvas.restore();
45+
46+
canvas.save();
47+
canvas.scale(1.3f, 1.3f);
4248
canvas.drawBitmap(bitmap, point2.x, point2.y, paint);
49+
canvas.restore();
4350
}
4451
}

app/src/main/java/com/hencoder/hencoderpracticedraw4/practice/Practice05RotateView.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,15 @@ public Practice05RotateView(Context context, @Nullable AttributeSet attrs, int d
3838
protected void onDraw(Canvas canvas) {
3939
super.onDraw(canvas);
4040

41+
canvas.save();
42+
canvas.rotate(180, point1.x + 200, point1.y + 200);
4143
canvas.drawBitmap(bitmap, point1.x, point1.y, paint);
44+
canvas.restore();
45+
46+
canvas.save();
47+
canvas.rotate(45, point2.x + 200, point2.y);
48+
canvas.translate(200, -50);
4249
canvas.drawBitmap(bitmap, point2.x, point2.y, paint);
50+
canvas.restore();
4351
}
4452
}

app/src/main/java/com/hencoder/hencoderpracticedraw4/practice/Practice06SkewView.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,14 @@ public Practice06SkewView(Context context, @Nullable AttributeSet attrs, int def
3838
protected void onDraw(Canvas canvas) {
3939
super.onDraw(canvas);
4040

41+
canvas.save();
42+
canvas.skew(0.5f, 0.5f);
4143
canvas.drawBitmap(bitmap, point1.x, point1.y, paint);
44+
canvas.restore();
45+
46+
canvas.save();
47+
canvas.skew(-0.5f, 0.2f);
4248
canvas.drawBitmap(bitmap, point2.x, point2.y, paint);
49+
canvas.restore();
4350
}
4451
}

app/src/main/java/com/hencoder/hencoderpracticedraw4/practice/Practice07MatrixTranslateView.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package com.hencoder.hencoderpracticedraw4.practice;
22

3+
import android.annotation.SuppressLint;
34
import android.content.Context;
45
import android.graphics.Bitmap;
56
import android.graphics.BitmapFactory;
67
import android.graphics.Canvas;
8+
import android.graphics.Matrix;
79
import android.graphics.Paint;
810
import android.graphics.Point;
911
import android.support.annotation.Nullable;
@@ -17,6 +19,7 @@ public class Practice07MatrixTranslateView extends View {
1719
Bitmap bitmap;
1820
Point point1 = new Point(200, 200);
1921
Point point2 = new Point(600, 200);
22+
Matrix matrix1, matrix2;
2023

2124
public Practice07MatrixTranslateView(Context context) {
2225
super(context);
@@ -32,13 +35,27 @@ public Practice07MatrixTranslateView(Context context, @Nullable AttributeSet att
3235

3336
{
3437
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.maps);
38+
matrix1 = new Matrix();
39+
matrix2 = new Matrix();
3540
}
3641

42+
@SuppressLint("DrawAllocation")
3743
@Override
3844
protected void onDraw(Canvas canvas) {
3945
super.onDraw(canvas);
4046

47+
canvas.save();
48+
matrix1.reset();
49+
matrix1.postTranslate(200, 50);
50+
canvas.concat(matrix1);
4151
canvas.drawBitmap(bitmap, point1.x, point1.y, paint);
52+
canvas.restore();
53+
54+
canvas.save();
55+
matrix2.reset();
56+
matrix2.postTranslate(350, -50);
57+
canvas.concat(matrix2);
4258
canvas.drawBitmap(bitmap, point2.x, point2.y, paint);
59+
canvas.restore();
4360
}
4461
}

app/src/main/java/com/hencoder/hencoderpracticedraw4/practice/Practice08MatrixScaleView.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import android.graphics.Bitmap;
55
import android.graphics.BitmapFactory;
66
import android.graphics.Canvas;
7+
import android.graphics.Matrix;
78
import android.graphics.Paint;
89
import android.graphics.Point;
910
import android.support.annotation.Nullable;
@@ -17,6 +18,7 @@ public class Practice08MatrixScaleView extends View {
1718
Bitmap bitmap;
1819
Point point1 = new Point(200, 200);
1920
Point point2 = new Point(600, 200);
21+
Matrix matrix1, matrix2;
2022

2123
public Practice08MatrixScaleView(Context context) {
2224
super(context);
@@ -32,13 +34,28 @@ public Practice08MatrixScaleView(Context context, @Nullable AttributeSet attrs,
3234

3335
{
3436
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.maps);
37+
matrix1 = new Matrix();
38+
matrix2 = new Matrix();
3539
}
3640

3741
@Override
3842
protected void onDraw(Canvas canvas) {
3943
super.onDraw(canvas);
4044

45+
canvas.save();
46+
//一定要重置,否则效果会叠加
47+
matrix1.reset();
48+
matrix1.postScale(0.5f, 0.8f);
49+
canvas.concat(matrix1);
4150
canvas.drawBitmap(bitmap, point1.x, point1.y, paint);
51+
canvas.restore();
52+
53+
canvas.save();
54+
//同上
55+
matrix2.reset();
56+
matrix2.postScale(0.9f, 1.3f);
57+
canvas.concat(matrix2);
4258
canvas.drawBitmap(bitmap, point2.x, point2.y, paint);
59+
canvas.restore();
4360
}
4461
}

app/src/main/java/com/hencoder/hencoderpracticedraw4/practice/Practice09MatrixRotateView.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import android.graphics.Bitmap;
55
import android.graphics.BitmapFactory;
66
import android.graphics.Canvas;
7+
import android.graphics.Matrix;
78
import android.graphics.Paint;
89
import android.graphics.Point;
910
import android.support.annotation.Nullable;
@@ -17,6 +18,7 @@ public class Practice09MatrixRotateView extends View {
1718
Bitmap bitmap;
1819
Point point1 = new Point(200, 200);
1920
Point point2 = new Point(600, 200);
21+
Matrix matrix1, matrix2;
2022

2123
public Practice09MatrixRotateView(Context context) {
2224
super(context);
@@ -32,13 +34,30 @@ public Practice09MatrixRotateView(Context context, @Nullable AttributeSet attrs,
3234

3335
{
3436
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.maps);
37+
matrix1 = new Matrix();
38+
matrix2 = new Matrix();
3539
}
3640

3741
@Override
3842
protected void onDraw(Canvas canvas) {
3943
super.onDraw(canvas);
4044

45+
canvas.save();
46+
matrix1.reset();
47+
matrix1.postRotate(180,
48+
point1.x + bitmap.getWidth() / 2,
49+
point1.y + bitmap.getHeight() / 2);
50+
canvas.concat(matrix1);
4151
canvas.drawBitmap(bitmap, point1.x, point1.y, paint);
52+
canvas.restore();
53+
54+
canvas.save();
55+
matrix2.reset();
56+
matrix2.postRotate(45,
57+
point2.x + bitmap.getWidth() / 2,
58+
point2.y + bitmap.getHeight() / 2);
59+
canvas.concat(matrix2);
4260
canvas.drawBitmap(bitmap, point2.x, point2.y, paint);
61+
canvas.restore();
4362
}
4463
}

app/src/main/java/com/hencoder/hencoderpracticedraw4/practice/Practice10MatrixSkewView.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import android.graphics.Bitmap;
55
import android.graphics.BitmapFactory;
66
import android.graphics.Canvas;
7+
import android.graphics.Matrix;
78
import android.graphics.Paint;
89
import android.graphics.Point;
910
import android.support.annotation.Nullable;
@@ -17,6 +18,7 @@ public class Practice10MatrixSkewView extends View {
1718
Bitmap bitmap;
1819
Point point1 = new Point(200, 200);
1920
Point point2 = new Point(600, 200);
21+
Matrix matrix1, matrix2;
2022

2123
public Practice10MatrixSkewView(Context context) {
2224
super(context);
@@ -32,13 +34,28 @@ public Practice10MatrixSkewView(Context context, @Nullable AttributeSet attrs, i
3234

3335
{
3436
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.maps);
37+
matrix1 = new Matrix();
38+
matrix2 = new Matrix();
3539
}
3640

3741
@Override
3842
protected void onDraw(Canvas canvas) {
3943
super.onDraw(canvas);
4044

45+
canvas.save();
46+
matrix1.reset();
47+
matrix1.postSkew(0.8f, 0);
48+
matrix1.postTranslate(-(point1.x - 100), 0);
49+
canvas.concat(matrix1);
4150
canvas.drawBitmap(bitmap, point1.x, point1.y, paint);
51+
canvas.restore();
52+
53+
canvas.save();
54+
matrix2.reset();
55+
matrix2.postSkew(-0.6f, 0);
56+
matrix2.postTranslate(point2.x, 0);
57+
canvas.concat(matrix2);
4258
canvas.drawBitmap(bitmap, point2.x, point2.y, paint);
59+
canvas.restore();
4360
}
4461
}

app/src/main/java/com/hencoder/hencoderpracticedraw4/practice/Practice11CameraRotateView.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
import android.content.Context;
44
import android.graphics.Bitmap;
55
import android.graphics.BitmapFactory;
6+
import android.graphics.Camera;
67
import android.graphics.Canvas;
8+
import android.graphics.Matrix;
79
import android.graphics.Paint;
810
import android.graphics.Point;
911
import android.support.annotation.Nullable;
@@ -17,6 +19,7 @@ public class Practice11CameraRotateView extends View {
1719
Bitmap bitmap;
1820
Point point1 = new Point(200, 200);
1921
Point point2 = new Point(600, 200);
22+
Camera camera;
2023

2124
public Practice11CameraRotateView(Context context) {
2225
super(context);
@@ -32,13 +35,27 @@ public Practice11CameraRotateView(Context context, @Nullable AttributeSet attrs,
3235

3336
{
3437
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.maps);
38+
camera = new Camera();
3539
}
3640

3741
@Override
3842
protected void onDraw(Canvas canvas) {
3943
super.onDraw(canvas);
4044

45+
canvas.save();
46+
camera.save();
47+
camera.rotateX(45);
48+
camera.applyToCanvas(canvas);
49+
camera.restore();
4150
canvas.drawBitmap(bitmap, point1.x, point1.y, paint);
51+
canvas.restore();
52+
53+
canvas.save();
54+
camera.save();
55+
camera.rotateY(45);
56+
camera.applyToCanvas(canvas);
57+
camera.restore();
4258
canvas.drawBitmap(bitmap, point2.x, point2.y, paint);
59+
canvas.restore();
4360
}
4461
}

0 commit comments

Comments
 (0)