zoukankan      html  css  js  c++  java
  • 图形与动画在Android中的实现

    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, 10,  10, 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();
    		
    	}
    
    }
    

    效果图:

     

  • 相关阅读:
    查漏补缺:2020年搞定SpringCloud面试(含答案和思维导图)
    如何在半小时搭建一个简单的日志分析平台?
    Flutter | 状态管理特别篇——Provide
    线程池是怎样工作的
    神奇的 SQL 之 联表细节 → MySQL JOIN 的执行过程
    github设置添加ssh
    pytorch中torch.cat(),torch.chunk(),torch.split()函数的使用方法
    八年以后,我选择了创业
    vue源码解读(一)Observer/Dep/Watcher是如何实现数据绑定的
    Ubuntu18.04安装Pytorch
  • 原文地址:https://www.cnblogs.com/leihupqrst/p/3722168.html
Copyright © 2011-2022 走看看