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);
        }中调用
  • 相关阅读:
    解决xcode5升级后,Undefined symbols for architecture arm64:问题
    第8章 Foundation Kit介绍
    app 之间发送文件 ios
    iphone怎么检测屏幕是否被点亮 (用UIApplication的Delegate)
    CRM下载对象一直处于Wait状态的原因
    错误消息Customer classification does not exist when downloading
    How to resolve error message Distribution channel is not allowed for sales
    ABAP CCDEF, CCIMP, CCMAC, CCAU, CMXXX这些东东是什么鬼
    有了Debug权限就能干坏事?小心了,你的一举一动尽在系统监控中
    SAP GUI和Windows注册表
  • 原文地址:https://www.cnblogs.com/childhooding/p/4528744.html
Copyright © 2011-2022 走看看