将大图切割为小图片

Java代码  收藏代码
  1. package com.clip;  
  2.    
  3. import android.content.Context;  
  4. import android.graphics.Bitmap;  
  5. import android.graphics.BitmapFactory;  
  6. import android.graphics.Canvas;  
  7. import android.graphics.Color;  
  8. import android.view.SurfaceHolder;  
  9. import android.view.SurfaceHolder.Callback;  
  10. import android.view.SurfaceView;  
  11.   
  12.   
  13. public class MyView extends SurfaceView implements Callback, Runnable  
  14.       
  15.     private Bitmap[] robotBmps new Bitmap[12];  
  16.     private int frameX; // 小图在大图中的x坐标  
  17.     private int frameY; // 小图在大图中的y坐标  
  18.     private int frameW; // 小图的宽度  
  19.     private int frameH; // 小图的高度  
  20.     private SurfaceHolder sh;  
  21.     private Canvas canvas;  
  22.     private int currFrame; // 当前绘制帧  
  23.     private boolean flag;  // 线程循环标识  
  24.       
  25.     public MyView(Context context)  
  26.         super(context);   
  27.           
  28.         sh this.getHolder();  
  29.         sh.addCallback(this);  
  30.           
  31.         // 切割图片  
  32.         Bitmap robot BitmapFactory.decodeResource(getResources(), R.drawable.robot);  
  33.         frameW robot.getWidth() 6 
  34.         frameH robot.getHeight() 2 
  35.           
  36.         for (int 0robotBmps.length; i++)  
  37.             frameX (i 6frameW;   
  38.             frameY (i 6frameH;   
  39.             robotBmps[i] Bitmap.createBitmap(robot, frameX, frameY, frameW, frameH);  
  40.           
  41.      
  42.   
  43.     private void logic()  
  44.         currFrame++;  
  45.         if (currFrame >= 12 
  46.             currFrame 0 
  47.          
  48.      
  49.       
  50.     private void drawFrame()  
  51.           
  52.         try  
  53.             canvas sh.lockCanvas();  
  54.             canvas.drawColor(Color.BLACK);  
  55.               
  56.             if (canvas != null 
  57.                 // 绘制机器人  
  58.                 canvas.drawBitmap(robotBmps[currFrame], (this.getWidth() frameW) 2(this.getHeight() frameH) 2null);  
  59.              
  60.         catch (Exception e)  
  61.             e.printStackTrace();   
  62.         finally  
  63.             if (canvas != null 
  64.                 sh.unlockCanvasAndPost(canvas);  
  65.              
  66.          
  67.      
  68.       
  69.     @Override  
  70.     public void surfaceCreated(SurfaceHolder holder)  
  71.          flag true 
  72.          currFrame 0 
  73.          new Thread(this).start();  
  74.      
  75.   
  76.     @Override  
  77.     public void surfaceChanged(SurfaceHolder holder, int format, int width,  
  78.             int height)  
  79.         // TODO Auto-generated method stub  
  80.           
  81.      
  82.   
  83.     @Override  
  84.     public void surfaceDestroyed(SurfaceHolder holder)  
  85.         flag false 
  86.      
  87.   
  88.     @Override  
  89.     public void run()  
  90.         while (flag)  
  91.             drawFrame();  
  92.             logic();  
  93.             try  
  94.                 Thread.sleep(100);  
  95.             catch (InterruptedException e)  
  96.                 e.printStackTrace();  
  97.               
  98.          
  99.       
  100.  

运行结果: 

将大图切割为小图片  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值