图形与动画在Android中的实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
public class MyView extends View{
    Bitmap myBitmap;
    Paint paint;
    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.initBitmap();
    }
    public void initBitmap(){
        paint = new Paint();
        myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.img);
         
    }
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        paint.setAntiAlias(true);
        paint.setColor(Color.WHITE);
        paint.setTextSize(15);
        canvas.drawBitmap(myBitmap, 1010, paint);
         
        //Saves the current matrix and clip onto a private stack.
        //Subsequent calls to translate,scale,rotate,skew,concat or clipRect,clipPath
        //will all operate as usual, but when the balancing call to restore() is made,
        //those calls will be forgotten, and the settings that existed before the save() will be reinstated(恢复).
        //Returns:
        //The value to pass to restoreToCount() to balance this save()
        int i = canvas.save(); 
        System.out.println("current count -- > " + i);
         
        Matrix m1 = new Matrix();
        m1.setTranslate(500, 10);
        Matrix m2 = new Matrix();
        m2.setRotate(15);
        Matrix m3 = new Matrix();
        m3.setConcat(m1, m2);
        m1.setScale(0.8f, 0.8f);
        m2.setConcat(m3, m1);
        canvas.drawBitmap(myBitmap, m2, paint);
         
        //This call balances a previous call to save(), and is used to
        //remove all modifications to the matrix/clip state since the last save call.
        //It is an error to call restore() more times than save() was called.
        canvas.restore();
        int j = canvas.save();
        System.out.println("current count -- > " + j);
        paint.setAlpha(180);
        m1.setTranslate(200, 100);
        m2.setScale(1.3f, 1.3f);
        m2.setConcat(m1, m2);
        canvas.drawBitmap(myBitmap, m3, paint);
         
        //Restores the paint to its default settings.
        paint.reset();
        canvas.restore();
        paint.setTextSize(40);
        paint.setColor(Color.BLUE);
        canvas.drawText("图片的宽度:" + myBitmap.getWidth(), 150, 220, paint);
        canvas.drawText("图片的高度:" + myBitmap.getHeight(), 150, 300, paint);
        paint.reset();
         
    }
 
}

效果图:

图形与动画在Android中的实现

 

 

图形与动画在Android中的实现,布布扣,bubuko.com

图形与动画在Android中的实现

上一篇:Android SDKVersion 参数列表


下一篇:[Android阅读代码]android-async-http源码学习一