美文网首页
android 在截取指定View的时候坑

android 在截取指定View的时候坑

作者: 枫叶豆腐汤 | 来源:发表于2017-10-28 10:38 被阅读567次

前言
有时我们的需求需要取某一个VIew控件中一块区域,但是截屏这个方法是不可行的,因为截屏是整个屏幕都截取下来了,而且又没有达到我们要的效果,我就踩到这个坑了,我是截取整个屏幕然后把他保存下来,会导致有点卡顿,有的会没有,我的很卡。但是今天我又遇到这个需求了,我想要改变一下取View中的区域、同样是根据View的宽高导致很卡,在有的情况下还不能使用,这个一个很大的问题。以下代码是现在我用的截取view代码,在Activity fragment 还是dialog或者PopupWindow都行

/**
*截取view
**/
  public static Bitmap createViewBitmap(View v) {
        Bitmap bitmap = Bitmap.createBitmap(v.getWidth(), v.getHeight(),
                Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        v.draw(canvas);
        return bitmap;
    }

保存图片


  /**
     * @param bitmap
     */
    public static void getBitmap(Bitmap bitmap, String name) {
        if (bitmap != null) {
            try {
                // 获取内置SD卡路径
                String sdCardPath = Environment.getExternalStorageDirectory().getPath();
                // 图片文件路径
                String filePath = sdCardPath + File.separator + name;
                imageShare(filePath, 0);
            } catch (Exception e) {
            }
        }
    }

分享微信

 /**
     * 分享图片
     * @param imgurl 保存图片路径
     * @param sendtype 区分分享到朋友圈还是好友
     */
    public static void imageShare(String imgurl, int sendtype) {
        final IWXAPI api = WXAPIFactory.createWXAPI(App.getInstance(), Constant.WXID, true);
        File file = new File(imgurl);
        if (!file.exists()) {
            RxToast.error("图片不存在");
        }
        WXImageObject imgObj = new WXImageObject();
        imgObj.setImagePath(imgurl);
        WXMediaMessage msg = new WXMediaMessage();
        msg.mediaObject = imgObj;
        Bitmap bmp = BitmapFactory.decodeFile(imgurl);
        Bitmap thumbBmp = Bitmap.createScaledBitmap(bmp, 100, 100, true);
        msg.setThumbImage(thumbBmp);
        bmp.recycle();
        SendMessageToWX.Req req = new SendMessageToWX.Req();
        req.transaction = String.valueOf(System.currentTimeMillis());
        req.message = msg;
        req.scene = sendtype == 0 ? SendMessageToWX.Req.WXSceneSession : SendMessageToWX.Req.WXSceneTimeline;
        api.sendReq(req);
    }

需要用到的直接按照这个上下顺序复制就能用

相关文章

网友评论

      本文标题:android 在截取指定View的时候坑

      本文链接:https://www.haomeiwen.com/subject/tsijpxtx.html