zoukankan      html  css  js  c++  java
  • Android截图工具类

    ScreenShotView.java类
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import android.app.Activity;
    import android.graphics.Bitmap;
    import android.graphics.Rect;
    import android.util.Log;
    import android.view.View;
    
    public class ScreenShotView {
    	// 获取指定Activity的截屏,保存到png文件  
        private static Bitmap takeScreenShot(Activity activity) {  
            // View是你需要截图的View  
            View view = activity.getWindow().getDecorView();  
            view.setDrawingCacheEnabled(true);  
            view.buildDrawingCache();  
            Bitmap b1 = view.getDrawingCache();  
      
            // 获取状态栏高度  
            Rect frame = new Rect();  
            activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);  
            int statusBarHeight = frame.top;  
            Log.i("TAG", "" + statusBarHeight);  
      
            // 获取屏幕长和高  
            int width = activity.getWindowManager().getDefaultDisplay().getWidth();  
            int height = activity.getWindowManager().getDefaultDisplay()  
                    .getHeight();  
            // 去掉标题栏  
            // Bitmap b = Bitmap.createBitmap(b1, 0, 25, 320, 455);  
            Bitmap b = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height  
                    - statusBarHeight);  
            view.destroyDrawingCache();  
            return b;  
        }  
      
        // 保存到sdcard  
        private static void savePic(Bitmap b, String strFileName) {  
            FileOutputStream fos = null;  
            try {  
                fos = new FileOutputStream(strFileName);  
                if (null != fos) {  
                    b.compress(Bitmap.CompressFormat.PNG, 90, fos);  
                    fos.flush();  
                    fos.close();  
                }  
            } catch (FileNotFoundException e) {  
                e.printStackTrace();  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }  
      
        // 程序入口  
        public static void shootview(Activity a) {  
        	ScreenShotView.savePic(ScreenShotView.takeScreenShot(a), "sdcard/jietu.png");  
        }  
    }
    

      

    MainActivity.java类 
    public class MainActivity extends Activity {
    	Button btn;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    	}
    	
    	 public void onWindowFocusChanged(boolean hasFocus) {  
    	        // TODO Auto-generated method stub  
    	        super.onWindowFocusChanged(hasFocus);  
    	        ScreenShotView.shootview(MainActivity.this);
    	    }
    
    	
    
    }
    

      

    需要注意的是,shoot方法只能在view已经被加载后方可调用。
    或者在    

    @Override
        public void onWindowFocusChanged(boolean hasFocus) {
            // TODO Auto-generated method stub
            super.onWindowFocusChanged(hasFocus);
            ScreenShot.shoot(this);
        }中调用
  • 相关阅读:
    使用SecureCRTP 连接生产环境的web服务器和数据库服务器
    CSS之浮动
    CSS之定位
    Session的过期时间如何计算?
    浏览器关闭后,Session会话结束了么?
    Spring事务注意点
    Lucene 的索引文件锁原理
    Mysql数据库的触发程序
    记一次jar包冲突
    关于jvm的OutOfMemory:PermGen space异常的解决
  • 原文地址:https://www.cnblogs.com/childhooding/p/4528744.html
Copyright © 2011-2022 走看看