• 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;    }}



本文出自 “wIsper 把技术做成艺术” 博客,请务必保留此出处http://lichen.blog.51cto.com/697816/1218567

更多相关文章

  1. Android(安卓)SVG矢量资源的使用方法
  2. Android(安卓)屏幕截图并用WindowManager显示
  3. 构建Android开发环境
  4. Ubuntu下搭建Android(安卓)NDK开发环境
  5. 【技术贴】安装Android(安卓)SDK出现的操蛋问题笔记
  6. 自定义图片点击效果
  7. android开发环境
  8. Android——AndroidStudio配置NDK步骤
  9. Android常见布局简述

随机推荐

  1. Android(安卓)NFC近场通信02----读写卡的
  2. Android(安卓)Studio com.android.dex.De
  3. Android逆向分析之dex2jar和jd-gui使用
  4. Android(安卓)aapt实现资源分区(补充携程a
  5. Android图形显示系统——下层显示4:图层合
  6. 分享几点Android(安卓)开发中的小技巧吧
  7. Android学习路线(二十五)全面理解Android(
  8. 个人认为安卓开发前景
  9. Android(安卓)里的Intent是什么意思
  10. Android(安卓)NDK入门