• 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 studio生成APK打包,修改生成APK的路径和名字
  3. android SDK系统图片资源的路径。
  4. 2011.09.09 ——— android 2.2 修改安装路径
  5. 更改Android AVD模拟器创建路径位置的方法
  6. Android 存储路径浅析

随机推荐

  1. android中读写文件
  2. Android(安卓)学习资料(一)
  3. Android动态改变高度以及计算长度的EditT
  4. Android中widget组件的开发流程
  5. Android(安卓)Activity之间切换出现短暂
  6. Android(安卓)FrameWork——Touch事件派
  7. android adb 命令
  8. 装饰者模式及其应用
  9. Android(安卓)UI开发第十二篇——动画效
  10. Android(安卓)链式调用(方法链)