• Android屏幕截图,得到截图存储在SD卡上。

  • 所截取的图,实时显示在屏幕上。用户点击图片――消失;用户不点击,指定时间后――图片自动消失。

感性认识:

抛砖引玉,详见注释:

@Overridepublic void onClick(View v) {    switch (v.getId()) {    case R.id.about_me:        //获取屏幕        View targetView = mActivity.getWindow().getDecorView();        targetView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);//截全屏        targetView.setDrawingCacheEnabled(true);        Bitmap fullBitmap = Bitmap.createBitmap(targetView.getDrawingCache());        /**获取状态栏高度        Rect frame = new Rect();        mActivity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);        int statusBarHeight = frame.top;*/        DisplayMetrics dm = mActivity.getResources().getDisplayMetrics();        /** 去掉标题栏        Bitmap bitmap = Bitmap.createBitmap(fullBitmap, 0, statusBarHeight, dm.widthPixels, dm.heightPixels - statusBarHeight);        targetView.destroyDrawingCache();*/        OutputStream output = null;        try {            if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {                String sdPath = Environment.getExternalStorageDirectory().getPath();//sd卡路径                String pngPath = sdPath + "/Remind/";//截图存放路径                File pngDir = new File(pngPath);                if (!pngDir.exists()) {                    pngDir.mkdir();//make路径                }                String pngName = pngPath + System.currentTimeMillis() + ".png";                output = new FileOutputStream(pngName);                if (output != null) {                    fullBitmap.compress(Bitmap.CompressFormat.PNG, 100, output);//100%高清大图                    output.flush();                    output.close();                }                /** WindowManager */                LayoutInflater inflater = LayoutInflater.from(mActivity);                screenShot = inflater.inflate(R.layout.screen_shot, null);                wmManager =(WindowManager) mActivity.getSystemService(mActivity.WINDOW_SERVICE);                WindowManager.LayoutParams wmParams = new WindowManager.LayoutParams();                ImageView shotImg = (ImageView) screenShot.findViewById(R.id.screen_shot_img);                shotImg.setImageBitmap(targetView.getDrawingCache());            /**             *以下都是WindowManager.LayoutParams的相关属性             */               wmParams.type=WindowManager.LayoutParams.TYPE_PRIORITY_PHONE;   //这里是关键               wmParams.format=PixelFormat.RGBA_8888;               wmParams.flags=WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE                       | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;               wmParams.alpha = 0.8f; //透明度               //WindowManager位置               wmParams.width = dm.widthPixels * 1 / 2;               wmParams.height = dm.heightPixels * 1 / 2;               wmParams.x = dm.widthPixels * 1 / 2;               wmParams.y = - (dm.heightPixels * 1 / 5);             //添加View               wmManager.addView(screenShot, wmParams);               isRemoved = false;               //计时器                timer = new Timer();                //点击图片,消失。                shotImg.setOnClickListener(new OnClickListener() {                    @Override                    public void onClick(View arg0) {                        if (wmManager != null && !isRemoved) {                            wmManager.removeView(screenShot);                            isRemoved = true;                            if (timer != null) {                                timer.cancel();                            }                        }                    }                });                //定时任务,显示3秒后自动消失。                timer.schedule(new TimerTask() {                    @Override                    public void run() {                        if (wmManager != null && !isRemoved) {                            wmManager.removeView(screenShot);                            isRemoved = true;                        }                    }                }, 3000);            }        } catch (Exception e) {            e.printStackTrace();        }        break;    default:        break;    }}



更多相关文章

  1. Android热修复
  2. android基础(开发环境搭建)
  3. android 设置 源码 修改默认主题为白底黑字
  4. Android(安卓)textView点击滚动(跑马灯)效果
  5. Android碎片积累
  6. Android(安卓)wifi提示已连接但是无法访问网络
  7. Android获取程序路径 (/data/data/appname)
  8. Android——文件操作
  9. Android(安卓)监听 home键和菜单键

随机推荐

  1. Android(安卓)判斷機子是否聯網和聯網方
  2. android EditText限制只能输入2位小数的
  3. android的网络访问
  4. Android中全屏无标题设置
  5. Android(安卓)异步网络请求及协调CountDo
  6. android Fragments详解【2】
  7. android中关闭返回键
  8. android 随手记 videoview循环播放网络视
  9. android notifyDataSetChanged不管用
  10. Android(安卓)生成xml文件